본문 바로가기

리눅스

리눅스에서 LVM(Logical Volume Manager)을 사용하여 하드 디스크를 증설하는 방법

반응형

리눅스에서 LVM(Logical Volume Manager)을 사용하여 하드 디스크를 증설하는 방법

LVM을 사용하면 하드 디스크의 크기를 동적으로 관리할 수 있으므로, 디스크 공간을 필요에 따라 유연하게 증설할 수 있습니다.

 

아래 단계는 CentOS/RHEL 계열의 리눅스 배포판을 기준으로 설명합니다.

 

중요: 디스크 증설 작업은 데이터의 손실 가능성이 있는 작업이므로, 꼭 백업을 수행하고 신중하게 진행해야 합니다.

 

하드디스크 증설 전 파이션 정보

$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
                       38G   21G   15G  59% /
tmpfs                 1.9G     0  1.9G   0% /dev/shm
/dev/xvda1            485M   32M  429M   7% /boot
/dev/mapper/VolGroup-lv_home
                       36G  179M   34G   1% /home
/dev/xvdb1             99G   15G   80G  16% /data

1. 하드 디스크 추가하기

가상 머신이나 물리적 서버에 새로운 하드 디스크를 추가합니다.

$ fdisk –l
…
Disk /dev/xvdc: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

2. 파티션 생성하기 (옵션)

새로 추가한 디스크를 파티션으로 나눌 수도 있습니다. 이 단계는 선택 사항이며, 파티션을 사용하지 않고 직접 LVM으로 디스크를 관리할 수도 있습니다.

fdisk /dev/xvdc
$ fdisk /dev/xvdc
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-13054, default 1): (Enter)
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-13054, default 13054): (Enter)
Using default value 13054
Command (m for help): p

Disk /dev/xvdc: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x64939e91

    Device Boot      Start         End      Blocks   Id  System
/dev/xvdc1               1       13054   104856223+  83  Linux

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!
fdisk –l
$ fdisk –l
…
Disk /dev/xvdc: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x64939e91

    Device Boot      Start         End      Blocks   Id  System
/dev/xvdc1               1       13054   104856223+  8e  Linux LVM

3. LVM Physical Volume(PV) 생성하기

새로 추가한 디스크나 파티션을 LVM의 Physical Volume로 설정합니다.

pvscan
$ pvscan
  PV /dev/xvda2   VG VolGroup   lvm2 [79.51 GiB / 0    free]
Total: 1 [79.51 GiB] / in use: 1 [79.51 GiB] / in no VG: 0 [0   ]
sudo pvcreate /dev/sdb1  # 디스크 전체를 사용할 경우에는 /dev/sdb를 지정합니다.
$ pvcreate /dev/xvdc1
  Writing physical volume data to disk "/dev/xvdc1"
  Physical volume "/dev/xvdc1" successfully created
pvdisplay
pvdisplay
  --- Physical volume ---
  PV Name               /dev/xvda2
  VG Name               VolGroup
  PV Size               79.51 GiB / not usable 3.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              20354
  Free PE               0
  Allocated PE          20354
  PV UUID               U6Zndd-VaQa-c0Ax-4xOZ-nYnu-DuxF-MU2QQe
  
    "/dev/xvdc1" is a new physical volume of "100.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/xvdc1
  VG Name
  PV Size               100.00 GiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               Cz40bS-cIy6-rTDC-jGTE-l26a-GVCU-wEdF1e

4. LVM Volume Group(VG) 생성하기

기존 VG가 존재하는 경우에는 새로운 PV를 기존 VG에 추가할 수 있습니다.

vgdisplay
$ vgdisplay
  --- Volume group ---
  VG Name               VolGroup
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               3
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               79.51 GiB
  PE Size               4.00 MiB
  Total PE              20354
  Alloc PE / Size       20354 / 79.51 GiB
  Free  PE / Size       0 / 0
  VG UUID               qvHBC1-0JCQ-vF2N-CYl1-Lt3B-hmcA-ozy8Sf
sudo vgextend VolGroup /dev/xvdc1
$ vgextend VolGroup /dev/xvdc1
  Volume group "VolGroup" successfully extended
vgdisplay
$ vgdisplay
  --- Volume group ---
  VG Name               VolGroup
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               3
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               179.50 GiB
  PE Size               4.00 MiB
  Total PE              45953
  Alloc PE / Size       20354 / 79.51 GiB
  Free  PE / Size       25599 / 100.00 GiB
VG UUID               qvHBC1-0JCQ-vF2N-CYl1-Lt3B-hmcA-ozy8Sf

기존 VG가 없고 새로운 VG를 만들려면 vgcreate 명령어로 VG를 생성합니다.

728x90

5. LVM Logical Volume(LV) 생성하기

PV를 사용하여 LV를 생성합니다. 이 단계에서 증설하려는 크기를 설정할 수 있습니다.

lvdisplay
$ lvdisplay
  --- Logical volume ---
  LV Path                /dev/VolGroup/lv_root
  LV Name                lv_root
  VG Name                VolGroup
  LV UUID                Ly6a7c-HZgZ-vwf8-RcJS-EGBQ-f6ZP-JZrnsE
  LV Write Access        read/write
  LV Creation host, time ,
  LV Status              available
  # open                 1
  LV Size                37.91 GiB
  Current LE             9704
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
...
sudo lvextend -l +25599 /dev/VolGroup/lv_root
$ lvextend -l +25599 /dev/VolGroup/lv_root
  Extending logical volume lv_root to 137.90 GiB
Logical volume lv_root successfully resized
lvdisplay
$ lvdisplay
  --- Logical volume ---
  LV Path                /dev/VolGroup/lv_root
  LV Name                lv_root
  VG Name                VolGroup
  LV UUID                Ly6a7c-HZgZ-vwf8-RcJS-EGBQ-f6ZP-JZrnsE
  LV Write Access        read/write
  LV Creation host, time ,
  LV Status              available
  # open                 1
  LV Size                137.90 GiB
  Current LE             35303
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
...

6. 파일 시스템 생성하기

LV를 사용할 파일 시스템을 생성합니다. 예를 들어, ext4 파일 시스템을 생성하는 경우

sudo mkfs.ext4 /dev/my_vg/my_lv
sudo resize2fs /dev/mapper/VolGroup-lv_root

7. 파일 시스템 크기 조정하기

resize2fs 명령어를 사용하여 파일 시스템 크기를 확장합니다. 확장할 LV의 디바이스 경로를 사용합니다.

$ resize2fs /dev/mapper/VolGroup-lv_root
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/VolGroup-lv_root is mounted on /; on-line resizing required
old desc_blocks = 3, new_desc_blocks = 9
Performing an on-line resize of /dev/mapper/VolGroup-lv_root to 36150272 (4k) blocks.
The filesystem on /dev/mapper/VolGroup-lv_root is now 36150272 blocks long.

8. 확인하기

$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
                      136G   21G  109G  17% /
tmpfs                 1.9G     0  1.9G   0% /dev/shm
/dev/xvda1            485M   32M  429M   7% /boot
/dev/mapper/VolGroup-lv_home
                       36G  179M   34G   1% /home
/dev/xvdb1             99G   15G   80G  16% /data

 

이제 단계별로 따라가면서 CentOS 7.x에서 LVM을 사용하여 하드 디스크를 증설할 수 있습니다. LVM을 사용하면 유연하게 디스크 공간을 증설하고 관리할 수 있으므로, 서버 운영에 매우 유용합니다.

 

728x90
반응형