LVM 디스크 용량 증설

곽동규·2024년 4월 7일

LVM은 각각의 디스크 파티션을 묶어 한 파티션처럼 사용할 수 있다.

  • PV(physical volume, 물리 볼륨) : /dev/sdb1, /dev/sdb2 같은 실제 하드디스크의 파티션을 의미
  • VG(volume group, 볼륨 그룹) : 여러 개의 PV를 그룹으로 묶은 것을 뜻한다.
  • LV(logical volume, 논리 볼륨) : VG를 다시 적절한 크기의 파티션으로 나눌 때 각 파티션을 LV라고 함
  • PE(physical extent) : PV가 가진 일정한 블록을 의미
  • LE(logical extent) : LV가 가진 일정한 블록을 의미

EX1) 디스크를 추가하여 LVM 파티션 용량 확장

디스크 확인
VMWare와 같은 가상화 솔루션을 사용하면 유동적으로 디스크를 추가해야하는 경우가 있다.
이 경우 VMWare에서 VM에 disk 장치를 추가했음에도 불구하고 VM 내 Linux OS에서는 인식하지 못하는 경우가 있다.

[root@server /]# fdisk -l | grep /dev/sd
Disk /dev/sda: 53.7 GB, 53687091200 bytes, 104857600 sectors
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   104857599    51379200   8e  Linux LVM

-> VM 내 실제 디스크는 sda, sdb 2개가 할당 되어 있으나 OS상에서는 기존의 sda만 인식 중

해결 방법

가장 간단한 방법은 VM 재부팅이다. VM을 재부팅하여 초기 부팅 시 장치 인식 과정에서 추가된 sdb 디스크를 인식 시키면 된다.
하지만, 상용 환경에서는 서비스 영향을 고려해야한다. 재부팅 없이 온라인 환경에서의 인식 시킬 수 있는 방법이 필요하다.
인식 방법은 /sys/class/scsi_host/{host#}/scan 파일에 echo "- - -"(- 사이 띄어쓰기 주의) 을 실행하면 된다.

echo "- - -" > /sys/class/scsi_host/{host#}/scan
echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host1/scan
echo "- - -" > /sys/class/scsi_host/host2/scan

참고
https://november11tech.tistory.com/122

1. 디스크 추가

fdisk 로 sda 1.2TB, 추가한 sdb 1.1TB 확인

# fdisk -l
Disk /dev/sda: 1.2 TiB, 1319413953024 bytes, 2576980377 sectors
Disk model: Virtual disk    
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xbb26ac42

Device     Boot    Start        End    Sectors  Size Id Type
/dev/sda1  *        2048    1050623    1048576  512M 83 Linux
/dev/sda2        1050624   34605055   33554432   16G 83 Linux
/dev/sda3       34605056   68159487   33554432   16G 82 Linux swap / Solaris
/dev/sda4       68159488 2576979967 2508820480  1.2T  f W95 Ext'd (LBA)
/dev/sda5       68161536 2572505087 2504343552  1.2T 8e Linux LVM

Disk /dev/sdb: 1.1 TiB, 1209462790144 bytes, 2362232012 sectors
Disk model: Virtual disk    
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/mapper/rocky-root: 1.07 TiB, 1172542849024 bytes, 2290122752 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 65536 bytes / 65536 bytes

2. 물리 볼륨(PV) 생성

# pvscan
  PV /dev/sda5   VG rocky           lvm2 [<1.17 TiB / 100.00 GiB free]
  Total: 1 [<1.17 TiB] / in use: 1 [<1.17 TiB] / in no VG: 0 [0   ]
  
# pvcreate /dev/sdb 
  Physical volume "/dev/sdb" successfully created.
  
  
# pvscan
  PV /dev/sda5   VG rocky           lvm2 [<1.17 TiB / 100.00 GiB free]
  PV /dev/sdb                       lvm2 [<1.10 TiB]
  Total: 2 [<2.27 TiB] / in use: 1 [<1.17 TiB] / in no VG: 1 [<1.10 TiB]

3. 볼륨 그룹(VG) 생성

sda 와 sdb 각각의 pv 를 2TB 의 VG로 묶음

# vgextend rocky /dev/sdb 
  Volume group "rocky" successfully extended
  
 # pvscan
  PV /dev/sda5   VG rocky           lvm2 [<1.17 TiB / 100.00 GiB free]
  PV /dev/sdb    VG rocky           lvm2 [<1.10 TiB / <1.10 TiB free]
  Total: 2 [<2.27 TiB] / in use: 2 [<2.27 TiB] / in no VG: 0 [0   ]

4. 논리 볼륨(LV) 생성

# lvscan
  ACTIVE            '/dev/rocky/pool00' [<1.07 TiB] inherit
  ACTIVE            '/dev/rocky/root' [<1.07 TiB] inherit
  
  
# lvextend -l +100%FREE -n /dev/rocky/root
  Size of logical volume rocky/root changed from <1.07 TiB (279556 extents) to 2.26 TiB (593515 extents).
  WARNING: Sum of all thin volume sizes (2.26 TiB) exceeds the size of thin pool rocky/pool00 and the amount of free space in volume group (<1.20 TiB).
  WARNING: You have not turned on protection against thin pools running out of space.
  WARNING: Set activation/thin_pool_autoextend_threshold below 100 to trigger automatic extension of thin pools before they get full.
  Logical volume rocky/root successfully resized.  
  
# lvscan 
  ACTIVE            '/dev/rocky/pool00' [<1.07 TiB] inherit
  ACTIVE            '/dev/rocky/root' [2.26 TiB] inherit

5. 파일 시스템 생성

파일 시스템 별 설정

  • xfs : xfs_growfs [디바이스 경로]
  • ext4 : resize2fs [디바이스 경로]
# resize2fs /dev/rocky/root 
resize2fs 1.46.5 (30-Dec-2021)
Filesystem at /dev/rocky/root is mounted on /; on-line resizing required
old_desc_blocks = 137, new_desc_blocks = 290
The filesystem on /dev/rocky/root is now 607759360 (4k) blocks long.

# df -h
Filesystem              Size  Used Avail Use% Mounted on
devtmpfs                4.0M     0  4.0M   0% /dev
tmpfs                   7.7G     0  7.7G   0% /dev/shm
tmpfs                   3.1G  8.8M  3.1G   1% /run
/dev/mapper/rocky-root  2.3T   96G  2.1T   5% /
/dev/sda2                16G  520M   15G   4% /var
/dev/sda1               488M  288M  164M  64% /boot
tmpfs                   1.6G  4.0K  1.6G   1% /run/user/0


# lsblk
NAME                     MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda                        8:0    0  1.2T  0 disk 
├─sda1                     8:1    0  512M  0 part /boot
├─sda2                     8:2    0   16G  0 part /var
├─sda3                     8:3    0   16G  0 part [SWAP]
├─sda4                     8:4    0    1K  0 part 
└─sda5                     8:5    0  1.2T  0 part 
  ├─rocky-pool00_tmeta   253:0    0  1.1G  0 lvm  
  │ └─rocky-pool00-tpool 253:2    0  1.1T  0 lvm  
  │   ├─rocky-root       253:3    0  2.3T  0 lvm  /
  │   └─rocky-pool00     253:4    0  1.1T  1 lvm  
  └─rocky-pool00_tdata   253:1    0  1.1T  0 lvm  
    └─rocky-pool00-tpool 253:2    0  1.1T  0 lvm  
      ├─rocky-root       253:3    0  2.3T  0 lvm  /
      └─rocky-pool00     253:4    0  1.1T  1 lvm  
sdb                        8:16   0  1.1T  0 disk 
sr0                       11:0    1  1.5G  0 rom  

2. 디스크의 용량을 늘려 LVM 디스크확장

1. / 디렉토리 LVM 씬 프로비전, ext4로 생성 (볼륨 그룹명은 자유롭게 수정 가능, 여기선 rocky로 수정/이름도 root로 진행)

2. 디스크 사이즈 추가

3. lvscan으로 볼륨그룹/이름 확인

4. 논리 볼륨 확장

# lvextend -l +100%FREE -n /dev/{LVM 볼륨그룹}/{이름}

5. 확장된 파티션의 파일시스템 지정

# resize2fs /dev/{LVM 볼륨그룹}/{이름}

6. df -h로 확인

만약 디스크가 MBR 파티션 테이블을 사용한다면 2TB 이상의 디스크 크기를 지원하지 않는다.

0개의 댓글