LVM 은 물리적 디스크들을 가상의 디스크로 합쳐서 관리할 수 있게 해주는 관리 툴입니다. 쉽게 말해서 실제로 하드디스크 3개가 있는데 이 하드를 하나인것처럼 관리할 수 있게 해줍니다. 예전에는 큰 하드 하나를 나눠서 쓰곤 했었는 데 요즘은 그냥 통째로 하나 쓰는게 제일 편합니다.

360 , 160, 80 기가의 하드디스크가 있다면(제 실제 상황이 그렇습니다) 이 세개를 묶어서 마치 한개의 600 기가 하드 디스크 한개  인것처럼 할용할 수 있게 해줍니다.

    /dev/sda = 80
    /dev/sdb = 160
    /dev/sdc = 360 (여기에 시스템이 설치되어 있슴)

/dev/sdc 에 이미 설치되어 있어서 변경하기는 귀찮고 또 새로 깔기 또한 귀찮으니까 /dev/sda 와   /dev/sdb 를 합쳐줄려고 생각합니다. (시스템이 설치되어 있으면 변경하는 게 무척 귀찮을 꺼 같더라고요)

설치는 간단합니다.

    $ sudo apt-get install lvm2


초 간단 용어정리

PV (Physical Volume) 물리적 볼륨
PE (Physical Extent) 물리적 범위 (?) 정도로 보시면 됩니다.

LVM 파티션들을 만들어 줍니다.

  
  $ sudo fdisk /dev/sda

    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): w
    The partition table has been altered!

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

두번째 하드디스크도 LVM 으로 만들어 줍니다. 8e 가 LVM 파티션입니다.


 
   $ sudo fdisk /dev/sdb

    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): w
    The partition table has been altered!

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

그리고, 파티션을 나누지 않고 하드디스크 전체를 PV로 만들려고 할 때에, 파티션 정보가 기록되어  있다면 PV로 만들어지지 않을 것이다. 파티션을 fdisk등으로 전부 지워도 마찬가지인데 해결 방법은  dd등의 명령으로 파티션 정보를 깨끗히 지워주면 된다. 예를 들면 다음과 같다.

    $ sudo dd if=/dev/zero of=/dev/sda bs=512 count=1
   
    1+0 레코드 들어옴
    1+0 레코드 나감
    512 바이트 (512 B) 복사됨, 0.00197004 초, 260 kB/초

/dev/sdb 도 같은 방식으로 처리해 줍니다.

    $ sudo dd if=/dev/zero of=/dev/sdb bs=512 count=1

    1+0 레코드 들어옴
    1+0 레코드 나감
    512 바이트 (512 B) 복사됨, 0.0187204 초, 27.3 kB/초

이제 PV 들을 생성해 줍니다.

    $ sudo pvcreate /dev/sda
    Physical volume "/dev/sda" successfully created

두번째 하드 디스크에도 PV 를 생성해 줍니다.

  
  $ sudo pvcreate /dev/sdb
    Physical volume "/dev/sdb" successfully created

이제 VG (Volume Group 입니다. LV 아닙니다) 를 만들어 줍니다.

    $ sudo vgcreate data_vg /dev/sda /dev/sdb
    Volume group "data_vg" successfully created

 이제 제대로 만들어 졌는지 확인해 보기로 합니다.

    $ sudo vgscan
    Reading all physical volumes.  This may take a while...
    Found volume group "data_vg" using metadata type lvm2

만들어 졌군요. 이제 활성화 시켜보겠습니다.

 
   $ sudo vgchange -a y
    0 logical volume(s) in volume group "data_vg" now active

확인해 봅니다.

  
  $ sudo vgdisplay

    --- Volume group ---
    VG Name               data_vg
    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               223.57 GiB
    PE Size               4.00 MiB
    Total PE              57235
    Alloc PE / Size       0 / 0  
    Free  PE / Size       57235 / 223.57 GiB
    VG UUID               X7YuJy-lqY7-gwKQ-2DzZ-iaKe-adpY-eNVykk

vgdisplay 가 더 자세한 정보를 보여주는 군요. 180 기가랑 60 기가를 합쳐서 위에 나오는 수치가  됐군요. 설마 아직도 180 기가가 진짜 180 기가인지 아시는분 안계시겠지요? ㅎㅎ

이제야 모든 준비가 끝났습니다. LV (Logical Volume)를 생성할 시간입니다. VG 의 크기인 223 을  기억하시고

    -L 옵션은 크기 입니다. 저는 VG 크기의 223G 를 줄것입니다.
    -n 은 LV 의 이름입니다. 저는 data 라고 줄것입니다.

   
$ sudo lvcreate -L 223G -n data data_vg
     Logical volume "data" created

/dev/data_vg/data 라는 심볼릭 링크가 생긴것을 확인하실 수 있습니다. 자 이제 만들어진 LV 를 포맷하는 일만 남았습니다. ext4 를 쓰고 있으니까 ext4 로 포맷을 해주어야 겠지요?

    $ sudo mkfs.ext4 /dev/data_vg/data
    mke2fs 1.41.14 (22-Dec-2010)
    Filesystem label=
    OS type: Linux
    Block size=4096 (log=2)
    Fragment size=4096 (log=2)
    Stride=0 blocks, Stripe width=0 blocks
    14614528 inodes, 58458112 blocks
    2922905 blocks (5.00%) reserved for the super user
    First data block=0
    Maximum filesystem blocks=4294967296
    1784 block groups
    32768 blocks per group, 32768 fragments per group
    8192 inodes per group
    Superblock backups stored on blocks:
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
    4096000, 7962624, 11239424, 20480000, 23887872

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

    This filesystem will be automatically checked every 31 mounts or
    180 days, whichever comes first.  Use tune2fs -c or -i to override.


이제 설정 끝입니다. 이제 편하게 마운트 해주시면 되겠습니다.

    $ mkdir data
    $ sudo mount /dev/data_vg/data ./data

매번 수동으로 하기 귀찮으니 fstab 에 등록 시켜줍니다. 아래 내용을 추가합니다.

    $ sudo emacs /etc/fstab

    /dev/data_vg/data         /home/crazia/data    ext4    default    0   0

이제 적당한 곳에 심볼릭 링크를 걸어서 일반 디렉토리처럼 써 주시며 됩니다.


+ Recent posts