본문 바로가기

공부/리눅스

LVM / RAID

반응형
LVM - Logical Volume Manager

- lvm을 이용하면 여러개의 디스크를 하나의 디스크 처럼 사용할 수 있다.
  예를들면  1G 용량의 디스크 세개를 하나의 3G 용량의 디스크 처럼 사용할 수 있다.
 그리고 추가용량이 필요하면 파일시스템을 새로 생성하지 않고도 동적으로 용량을
늘릴수 있다.

Volume Group(VG): Logical Volumes 과 Physical Volumes 를 하나의 관리할수있는 group 으로 만든것.
 - 여러개의 PV 를 합친것이고 가상의 디스크라고 보면 된다.
Physical Volume(PV): 일반적으로 하드디스크나 파티션을 의미.
Logical Volume(LV) :  LVM 으로 구성되지 않은 시스템에서의 디스크 파티션과 같은것이다.
 - 가상디스크(VG) 의 분할영역으로 보면 된다.
Physical Extent(PE) : PV에 나뉘어져 있는 데이터 블럭
volume 그룹에서 PE 의 크기는 LE의 크기와 같다.
Logical Extent(LE) : LV에 나뉘어져 있는 데이터 블럭

LVM 구성형태
     
    hda1  hdc1      (PV:s on partitions or whole disks)                       
      \    /                                                                   
        \  /                                                                   
      diskvg        (VG)                                                     
      /  |  \                                                                 
      /  |  \                                                               
  usrlv rootlv varlv (LV:s)
    |      |          |                                                             
 ext2  reiserfs xfs (filesystems)                     

 
*. LVM 관련 명령어
pvcreate - LVM 구성을 위해서 PV 를 만들고 초기화한다.
vgcreate - pvcreate 에 생성된 PV 장치명으로 새로운 Volume Group(VG)를 만든다.
vgdisplay - VG 정보를 출력한다.
lvcreate - 하나의 VG 로 새로운 logical volume 을 생성한다.
lvremove - logical volume 을 삭제한다. 삭제할때는 mount 를 끊어야 한다.
vgremove - volume groupd 을 제거한다.

*. LVM 구성 순서

1. 하나로 묶을 디스크를 정한다.
2. 정해진 디스크를 각각 fdisk 로 파티션을 하나 잡고 파티션 타입을 lvm 으로 한다.
3. physical voume을 만든다.
4. 각각의 physical volume 을 하나의 volume group으로 묶는다.
5. vgdisplay 로 volume group 이 제대로 생성되었는지 확인한다.
6. lvcreate 로 volume group 에 logical volume 을 생성한다.
7. logical volume 에 파일시스템을 생성한다.
8. mount 하여 사용.


ex)
200mb 용량의 디스크 두개를 하나로 구성하여 사용하기 위한 lvm 구성

사용할 디스크
/dev/sdb
/dev/sdc

[root@star /]# fdisk /dev/sdb  <= 파티션은 전체용량으로 하나만 설정한다.
Command (m for help): p

Disk /dev/sdb: 213 MB, 213909504 bytes
64 heads, 32 sectors/track, 204 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

  Device Boot      Start        End      Blocks  Id  System

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

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): p

Disk /dev/sdb: 213 MB, 213909504 bytes
64 heads, 32 sectors/track, 204 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

  Device Boot      Start        End      Blocks  Id  System
/dev/sdb1              1        204      208880  8e  Linux LVM

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

Calling ioctl() to re-read partition table.
Syncing disks.
[root@star /]#

그리고 두번째 디스크도 똑 같은 방법으로 파티션을 구성한다.
그리고 다음

[root@star /]# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created

[root@star /]# pvcreate /dev/sdc1
  Physical volume "/dev/sdc1" successfully created

[root@star /]#
[root@star /]# vgcreate test_vg /dev/sdb1 /dev/sdc1
  Volume group "test_vg" successfully created

[root@star /]# vgdisplay -v  => 제대로 구성었는지 확인할 수 있다.
   
[root@star /]#

[root@star /]# lvcreate -L 400M -n test_lg1 test_vg
  Logical volume "test_lg1" created

[root@star /]#
[root@star /]# vgdisplay -v  => 다시 확인.
 
[root@star /]#

[root@star /]# mkfs -t ext3 /dev/test_vg/test_lg1 (또는 mke2fs -j /dev/test_vg/test_lg1 )

[root@star /]#

[root@star /]# mkdir /mnt/lvmdata


[root@star /]# mount -t ext3 /dev/test_vg/test_lg1 /mnt/lvmdata
[root@star /]# df
Filesystem          1K-blocks      Used Available Use% Mounted on
/dev/sda1              6520216  4553532  1630124  74% /
/dev/sda6              194442      5664    178739  4% /data2
/dev/sda7              194442      5664    178739  4% /data3
/dev/shm                127808        0    127808  0% /dev/shm
/dev/sda3              497861    10603    461554  3% /home
/dev/hdc                649838    649838        0 100% /media/cdrom
/dev/sda5              202219      1917    189862  1% /data1
/dev/mapper/test_vg-test_lg1
                        396672    10544    365648  3% /mnt/lvmdata
[root@star /]#

리부팅하였을 경우에도 계속 사용하려면
/etc/fstab 파일에

/dev/test_vg/test_lg1  /mnt/lvmdata            ext3    defaults        1 1 
이 한줄을 추가한다.

그리고 lvm 구성이 완료된후에도 용량이 더 필요하면 데이터 이동이나 손상없이
쉽게 늘릴 수 있다.

ex)
[root@titan mnt]#pvcreate /dev/sdd1
[root@titan mnt]#vgextend test_vg /dev/sdd1  <= 기존의 VG 에 추가하는 경우에는 vgextend 로 하여야 한다.
Volume group "test_vg" successfully extended
[root@titan mnt]# lvresize --size +100M /dev/test_vg/test_lg1
  Extending logical volume test_lg1 to 500.00 MB
  Logical volume test_lg1 successfully resized
[root@titan mnt]# resize2fs /dev/test_vg/test_lg1
resize2fs 1.35 (28-Feb-2004)
Please run 'e2fsck -f /dev/test_vg/test_lg1' first.
*. resize2fs 를 하기전에 filesystem check를 먼저해야 한다. 그렇지 않으면
resize2fs 가 실행되지 않고 위에처럼 메세지가 출력된다.

[root@titan mnt]# fsck -fy /dev/test_vg/test_lg1
fsck 1.35 (28-Feb-2004)
e2fsck 1.35 (28-Feb-2004)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/test_vg/test_lg1: 82/76912 files (1.2% non-contiguous), 20424/307200 blocks
[root@titan mnt]#
[root@titan mnt]# resize2fs /dev/test_vg/test_lg1

*. LVM 구성 제거.

[root@star /]# umount /mnt/lvmdata
[root@star /]# lvremove /dev/test_vg/test_lg1
Do you really want to remove active logical volume "test_lg1"? [y/n]: y
  Logical volume "test_lg1" successfully removed
[root@star /]#

[root@star /]# vgremove test_vg
  Volume group "test_vg" successfully removed
[root@star /]#

그리고 /etc/fstab 파일에서 등록된 lvm 정보 제거.

[root@star /]# vgdisplay -v
    Finding all volume groups  <= 아무런 volume group 정보도 없으므로 다 지워졌음을 알수 있다.

------------------------------------------------------------------------------------------------------------------------------------

RAID

[root@centos1 ~]# fdisk /dev/sdb

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

Command (m for help): p

Disk /dev/sdb: 536 MB, 536870912 bytes
64 heads, 32 sectors/track, 512 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

  Device Boot      Start        End      Blocks  Id  System
/dev/sdb1              1        512      524272  83  Linux
Command (m for help): p

Disk /dev/sdb: 536 MB, 536870912 bytes
64 heads, 32 sectors/track, 512 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

  Device Boot      Start        End      Blocks  Id  System
/dev/sdb1              1        512      524272  fd  Linux raid autodetect

Command (m for help):

[root@centos1 ~]# ls -l /dev/md0
brw-r----- 1 root disk 9, 0  8¿&ugrave; 29 22:15 /dev/md0
[root@centos1 ~]#

[root@centos1 ~]# mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdb1 /dev/sdc1
mdadm: /dev/sdb1 appears to contain an ext2fs file system
    size=98288K  mtime=Fri Jul 16 06:01:25 2010
mdadm: /dev/sdc1 appears to contain an ext2fs file system
    size=524272K  mtime=Sun Aug 29 22:28:52 2010
Continue creating array? y
mdadm: array /dev/md0 started.
[root@centos1 ~]#
[root@centos1 ~]# mdadm --detail --scan
ARRAY /dev/md0 level=raid0 num-devices=2 UUID=e5c9fc56:b8962bf1:c6f4ad04:0a23a9a3
[root@centos1 ~]#
[root@centos1 ~]# mkfs -t ext3 /dev/md0
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
131072 inodes, 262080 blocks
13104 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376

Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 25 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@centos1 ~]#


===============================================

[root@centos1 dev]# mknod md1 b 9 1
[root@centos1 dev]# ls -l md1
brw-r--r-- 1 root root 9, 1  8¿&ugrave; 29 22:46 md1
[root@centos1 dev]# mdadm --create /dev/md1 --level-1 --raid-devices=2 /dev/sdc1
[root@centos1 dev]# mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdd1 /dev/sde1
mdadm: array /dev/md1 started.
[root@centos1 dev]# mdadm --detail --scan
ARRAY /dev/md0 level=raid0 num-devices=2 UUID=e5c9fc56:b8962bf1:c6f4ad04:0a23a9a3
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=9607e571:30f84644:05a52c29:723425f6
[root@centos1 dev]#

[root@centos1 etc]# mdadm --detail --scan -v
ARRAY /dev/md0 level=raid0 num-devices=2 UUID=e5c9fc56:b8962bf1:c6f4ad04:0a23a9a3
  devices=/dev/sdb1,/dev/sdc1
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=9607e571:30f84644:05a52c29:723425f6
  devices=/dev/sdd1  ; /dev/sde °&iacute;&Agrave;&aring; (½&Ccedil;&Aacute;&brvbar;´&Acirc; sdd °&iacute;&Agrave;&aring;)
[root@centos1 etc]#

[root@centos1 ~]# mdadm /dev/md1 --add /dev/sdd1
mdadm: added /dev/sdd1
[root@centos1 ~]# mdadm --detail --scan -v
ARRAY /dev/md0 level=raid0 num-devices=2 UUID=e5c9fc56:b8962bf1:c6f4ad04:0a23a9a3
  devices=/dev/sdb1,/dev/sdc1
ARRAY /dev/md1 level=raid1 num-devices=2 spares=1 UUID=9607e571:30f84644:05a52c29:723425f6
  devices=/dev/sdd1,/dev/sde1
[root@centos1 ~]#

================================

raid 5

[root@centos1 ~]# mdadm --create /dev/md5 --level=5 --raid-devices=3 /dev/sdd1 /dev/sde1 /dev/sdf1
mdadm: array /dev/md5 started.
[root@centos1 ~]# mdadm --detail --scan -v
ARRAY /dev/md5 level=raid5 num-devices=3 spares=1 UUID=3639187d:d7eb011f:4df7428a:7e44acfb
  devices=/dev/sdd1,/dev/sde1,/dev/sdf1
[root@centos1 ~]#


[root@centos1 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1            4.8G  4.5G  12M 100% /
/dev/sda5            487M  11M  451M  3% /data
                                                                                      /dev/sda2            1.6G  717M  812M  47% /home
tmpfs                252M    0  252M  0% /dev/shm
/dev/md5            1008M  18M  940M  2% /r5data
[root@centos1 ~]# mdadm --detail --scan -v
ARRAY /dev/md5 level=raid5 num-devices=3 UUID=3639187d:d7eb011f:4df7428a:7e44acfb
  devices=/dev/sdd1,/dev/sde1,/dev/sdf1
[root@centos1 ~]# fdisk -l /dev/sdd

Disk /dev/sdd: 536 MB, 536870912 bytes
64 heads, 32 sectors/track, 512 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

  Device Boot      Start        End      Blocks  Id  System
/dev/sdd1              1        512      524272  fd  Linux raid autodetect
[root@centos1 ~]# fdisk -l /dev/sde

Disk /dev/sde: 536 MB, 536870912 bytes
64 heads, 32 sectors/track, 512 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

  Device Boot      Start        End      Blocks  Id  System
/dev/sde1              1        512      524272  fd  Linux raid autodetect
[root@centos1 ~]# fdisk -l /dev/sdf

Disk /dev/sdf: 536 MB, 536870912 bytes
64 heads, 32 sectors/track, 512 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

  Device Boot      Start        End      Blocks  Id  System
/dev/sdf1              1        512      524272  fd  Linux raid autodetect
[root@centos1 ~]#


=======================================================

raid 0 + 1

[root@centos1 ~]# mdadm --create /dev/md1 --level=0 --raid-devices=2 /dev/sdb1  /dev/sdc1
[root@centos1 ~]# mdadm --create /dev/md1 --level=0 --raid-devices=2 /dev/sdd1  /dev/sde1
mdadm: array /dev/md1 started.
[root@centos1 ~]# mdadm --create /dev/md01 --level=1 --raid-devices=2 /dev/md0 /dev/md1
mdadm: /dev/md0 appears to contain an ext2fs file system
    size=98288K  mtime=Fri Jul 16 06:01:25 2010
Continue creating array? y
mdadm: array /dev/md01 started.
[root@centos1 ~]# md
-bash: md: command not found
[root@centos1 ~]# mdadm --detail --scan -v
ARRAY /dev/md0 level=raid0 num-devices=2 UUID=23f38967:54f10aa2:c7facd0d:f0afc274
  devices=/dev/sdb1,/dev/sdc1
ARRAY /dev/md1 level=raid0 num-devices=2 UUID=df3f180c:fbcaf03c:bbbbdc34:0d5f4343
  devices=/dev/sdd1,/dev/sde1
ARRAY /dev/md01 level=raid1 num-devices=2 UUID=f98ef347:3ea6295a:64a8d04a:52015a93
  devices=/dev/md0,/dev/md1
[root@centos1 ~]#

반응형