리눅스

Total 331
Today 0
profile_image
슈퍼아이피
11-09-15 19:44 0개 14회
일반문서
리눅스 LVM(Logical Volume Manager)

리눅스 LVM(Logical Volume Manager)?
물리적인 하드디스크 파티션을 이용해서 가상의 LVM 파티션을 만들어 원하는대로 파티션을 추가 또는 제거하고 그 크기를 조절할 수 있다.
디스크 파티션을 휴율적으로 관리하고 부족한 디스크 공간을 변경할 수 있다.


(01) Linux Poweroff
# poweroff

(02) VMware Workstation 6.5 프로그램 작업
Edit virtual machine settings -> [ Add ] -> “Hard Disk” [Next] -> ( O ) Create a new virtual disk [Next] -> ( O ) IDE [Next] -> Disk size (GB) [ 1 ] [Next] -> [Finish]

(03) VMWARE에서 하드웨어 추가 방법은 알아서..ㅋㅋ

(04)추가한 하드 디스크 작업
1.fdisk 명령어로 새로 추가한 하드디스크 1개를 LINUX LVM으로 만들어 준다.
[root@linux ~]# fdisk -l

....
Disk /dev/sdb: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sdb doesn't contain a valid partition table

Disk /dev/sdc: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sdc doesn't contain a valid partition table

<- 파티션 설정이 안되어 있는 것을 볼 수가 있다.


[root@linux ~]# fdisk /dev/sdb
----------------------------------------------------------------------------------------------------------------------
Command (m for help): n
Command action
e extended
p primary partition (1-4)
e
Partition number (1-4):
[root@linux ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-130, default 1): 1
Last cylinder or +size or +sizeM or +sizeK (1-130, default 130): 130

Command (m for help): l

0 Empty 1e Hidden W95 FAT1 80 Old Minix bf Solaris
1 FAT12 24 NEC DOS 81 Minix / old Lin c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 82 Linux swap / So c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 83 Linux c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 84 OS/2 hidden C: c7 Syrinx
5 Extended 41 PPC PReP Boot 85 Linux extended da Non-FS data
6 FAT16 42 SFS 86 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS 4d QNX4.x 87 NTFS volume set de Dell Utility
8 AIX 4e QNX4.x 2nd part 88 Linux plaintext df BootIt
9 AIX bootable 4f QNX4.x 3rd part 8e Linux LVM e1 DOS access
a OS/2 Boot Manag 50 OnTrack DM 93 Amoeba e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 94 Amoeba BBT e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M 9f BSD/OS eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi ee EFI GPT
f W95 Ext'd (LBA) 54 OnTrackDM6 a5 FreeBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a6 OpenBSD f0 Linux/PA-RISC b
11 Hidden FAT12 56 Golden Bow a7 NeXTSTEP f1 SpeedStor
12 Compaq diagnost 5c Priam Edisk a8 Darwin UFS f4 SpeedStor
14 Hidden FAT16 <3 61 SpeedStor a9 NetBSD f2 DOS secondary
16 Hidden FAT16 63 GNU HURD or Sys ab Darwin boot fb VMware VMFS
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT

############8e가 LVM인 것을 알수가 있다.


Command (m for help): t <- 파티션 타입을 설정
Selected partition 1
Hex code (type L to list codes): 8e <- LVM 형식으로 저장
Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): p

Disk /dev/sdb: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sdb1 1 130 1044193+ 8e Linux LVM

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
----------------------------------------------------------------------------------------------------------------------

sdc도 똑같이 만들어 준다!!

추가한 2개의 하드 디스크 인식을 확인해 본다.
[root@linux ~]# fdiks -l
-bash: fdiks: command not found
[root@linux ~]# fdisk -l

Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 * 1 65 522081 83 Linux
/dev/sda2 66 196 1052257+ 82 Linux swap / Solaris
/dev/sda3 197 1165 7783492+ 83 Linux
/dev/sda4 1166 1305 1124550 5 Extended
/dev/sda5 1166 1229 514048+ 83 Linux
/dev/sda6 1230 1254 200781 83 Linux
/dev/sda7 1255 1279 200781 83 Linux
/dev/sda8 1280 1304 200781 83 Linux

Disk /dev/sdb: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sdb1 1 130 1044193+ 8e Linux LVM

Disk /dev/sdc: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sdc1 1 130 1044193+ 8e Linux LVM
<- 하드 디스크가 잡힌 것을 확인을 할 수가 있다.


4.pvcreate 명령어로 물리적인 볼륨을 생성한다
[root@linux ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created
[root@linux ~]# pvcreate /dev/sdc1
Physical volume "/dev/sdc1" successfully created

5.hdb1과 hdd1을 하나의 물리적 볼륨으로 묶어준다.
이 볼륨그룹의 이름은 myVG 라고 설정한다.
[root@linux ~]# vgcreate myVG /dev/hdb1 /dev/hdd1
Volume group "myVG" successfully created

6.vgdisplay 명령으로 볼륨 그룹이 잘 생성되었는지 확인한다.
[root@linux ~]# vgdisplay
--- Volume group ---
VG Name myVG
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 1.98 GB
PE Size 4.00 MB
Total PE 508
Alloc PE / Size 0 / 0
Free PE / Size 508 / 1.98 GB
VG UUID kr1DF7-rsom-kz0h-UAzs-b6D3-yKdY-h3uHWK

볼륨 그룹까지 설정을 했다. 아직 쓸수는 없다.

[참고] myVG는 단지 볼륨 그룹이지, 논리적인 파티션이 아니다.
myVG 자체를 마운트 하려고 하면 오류가 발생한다. 우리가 위 작업한 것은 하드 디스크를 추가하여 /dev/hdb 와 같이 물리적인 디스크로 시스템에서 인식할 뿐이다.
그러므로 myVG를 다시 lvcreate 명령어를 이용하여(하드 디스크일 경우는 fdisk) 논리적으로 시스템이 인식하도록 만들어주어야 한다.

7. myVG를 lvcreate 명령어를 이용하여 myVG1의 2GB로 설정하자.
[root@linux ~]# lvcreate -L 1.98G -n myVG1 myVG
Rounding up size to full physical extent 1.98 GB
Logical volume "myVG1" created

여기까지 작업한 것이 우리가 사용할 수 있는 논리적인 이름의 /dev/myVG/myVG1 이다.
[root@linux ~]# ls -al /dev/my*
total 0
drwxr-xr-x 2 root root 60 Aug 28 11:46 .
drwxr-xr-x 12 root root 4340 Aug 28 11:46 ..
lrwxrwxrwx 1 root root 22 Aug 28 11:46 myVG1 -> /dev/mapper/myVG-myVG1

8. 포멧 및 mount를 한다.
[root@linux ~]# mkfs.ext3 /dev/myVG/myVG1

9. 파일 시스템 체크
[root@linux ~]# fsck -y /dev/myVG/myVG1
fsck 1.39 (29-May-2006)
e2fsck 1.39 (29-May-2006)
/dev/myVG/myVG1: clean, 11/259584 files, 17120/519168 blocks

10.디렉토리 만들기 및 마운트
[root@linux ~]# mkdir /mylvmdata
[root@linux ~]# mount /dev/myVG/myVG1 /m
media/ misc/ mnt/ mod_evasive/ mylvmdata/
[root@linux ~]# mount /dev/myVG/myVG1 /mylvmdata
[root@linux ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 7.2G 5.4G 1.5G 79% /
/dev/sda8 190M 5.6M 175M 4% /data1
/dev/sda7 190M 5.6M 175M 4% /data2
/dev/sda6 190M 5.6M 175M 4% /data3
/dev/sda5 487M 11M 451M 3% /home
/dev/sda1 494M 28M 441M 6% /boot
tmpfs 281M 0 281M 0% /dev/shm
/dev/mapper/myVG-myVG1
2.0G 36M 1.9G 2% /mylvmdata

11.fstab파일에 정의 한다.
[root@linux ~]# cp /etc/fstab /etc/fstab_old
[root@linux ~]# vi /etc/fstab
/dev/myVG/myVG1 /mylvmdata ext3 defaults 1 3


여기서 정리 타임!!!!!!!!
1.하드디스크 장착 =>
2.fdisk로 하드 디스크를 LVM 만들어 주기(fdisk /dev/sdb(sdc) => n =>..=> t => 8e => w) =>
3.pvcreate 명령어로 물리적인 볼륨 생성 (pvcreate /dev/sdb1(sdc1)) =>
4.하나의 물리적 볼륨으로 묶어 준다.(vgcreate myVG /dev/sdb1 /dev/sdc1) =>
5.볼륨 그룹이 잘 생성 되었는지 확인 (vgdisplay) =>
6.myVG를 lvcreate 명령어를 이용하여 myVG1의 2GB로 설정 ( lvcreate -L 1.99G -n myVG1 myVG) =>
7.myVG1 포멧 ( mkfs.ext3 /dev/myVG/myVG1 ) =>
8.파일 시스템 체크 (fsck -y /dev/myVG/myVG1) =>
9.디렉토리 만들기 =>
10.마운트 ( mount /dev/myVG/myVG1 /mylvmdata ) =>
11.fstab 파일에 정의(/dev/myVG/myVG1 /mylvmdata ext3 defaults 1 3)

12.LVM 삭제 하기
1) 현재 설정 확인
mount, fdisk -l, vgdisplay, df -h

2)myVG 삭제 (설정의 역순으로 하면 된다.)
[root@linux /]# umount /mylvmdata/
[root@linux /]# lvscan
/dev/cdrom: open failed: 留ㅺ컻臾쇱씠 ?놁쓬
ACTIVE '/dev/myVG/myVG1' [1.98 GB] inherit
[root@linux /]# lvremove /dev/myVG/myVG1
/dev/cdrom: open failed: 留ㅺ컻臾쇱씠 ?놁쓬
Do you really want to remove active logical volume myVG1? [y/n]: y
Logical volume "myVG1" successfully removed
[root@linux /]# vgscan
Reading all physical volumes. This may take a while...
Found volume group "myVG" using metadata type lvm2
[root@linux /]# vgremove myVG
Volume group "myVG" successfully removed
[root@linux /]# pvscan
PV /dev/sdb1 lvm2 [1019.72 MB]
PV /dev/sdc1 lvm2 [1019.72 MB]
Total: 2 [1.99 GB] / in use: 0 [0 ] / in no VG: 2 [1.99 GB]

마지막으로 fstab에서 빼줘야 한다!!안 그러면 오류가 난다.
하지만 여기서는 오류를 대처하기 위해 fstab을 안뺀 상태에서 작업을 진행하도록 하겠다.


보통은 CD를 넣고 복구 모드로 실행을 한다 하지만!!

또 다른 방법

리마운트!!!!!

touch file1

mount -o rw,remount /
vi /etc/fstab



[TIP] 같은 파일을 두번 열어서 작업하게 되면 아래와 같은 오류가 발생한다.
해결 방법은 스왑 파일을 지워주면 된다.
[root@localhost ~]# vi /etc/fstab
E325: ATTENTION
Found a swap file by the name "/etc/.fstab.swp"
owned by: root dated: Fri Apr 17 00:42:13 2009
file name: /etc/fstab
modified: YES
user name: root host name: localhost.localdomain
process ID: 3739
While opening file "/etc/fstab"
dated: Wed Apr 8 04:11:16 2009
(1) Another program may be editing the same file.
If this is the case, be careful not to end up with two
different instances of the same file when making changes.
Quit, or continue with caution.
(2) An edit session for this file crashed.
If this is the case, use ":recover" or "vim -r /etc/fstab"
to recover the changes (see ":help recovery").
If you did this already, delete the swap file "/etc/.fstab.swp"
to avoid this message.
"/etc/fstab" 10L, 760C
Press ENTER or type command to continue
[root@localhost ~]# rm /etc/.fstab.swp
rm: remove 일반 파일 `/etc/.fstab.swp'? y


댓글목록

등록된 댓글이 없습니다.