CentOS8 설치 및 초기 세팅하는 과정에서 파티션을 설정해야 했다. 나는 줄곧 윈도우만 사용해왔는데, Linux 기반의 운영체제인 CentOS를 사용하는 것이 낯설고 자신이 없었다. 때문에 초기 세팅 시 개발용 노트북의 총 용량 128GB 중 20GB만 시스템에 할당했었다. 그러나 시스템에 익숙해지고 개발을 많이 하게 되면서 용량 증설이 필요했다.
CentOS와 관련해서는 국내에서 정보를 많이 찾을 수가 없었고, 구글 검색을 통해서도 쉽게 알아낼 수가 없었다.
그래서 3일이 걸렸다. CentOS의 가장 최신 버전은 버전8 에서는 root 파티션 용량 증설이 너무 까다로운 일인 것 같았다.
실제 검색 결과는 CentOS 6, 7버전 기준으로 파티션 용량 증설 관련 정보들이 즐비했다. 이를 버전8에 적용하려니 오류만 계속 발생하고 좌절을 금치 못했다.
나와 같은 고생을 하는 사람이 없길 바라며.. step by step으로 작성하겠다.
우선 본인의 하드드라이브가 어떻게 파티셔닝이 되있고, 잔여 용량이 얼마나 있는지 확인해야 한다.
lsblk : 파티셔닝 현황 보기
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 119.2G 0 disk
├─sda1 8:1 0 499M 0 part
├─sda2 8:2 0 300M 0 part /boot/efi
├─sda5 8:5 0 881M 0 part
├─sda6 8:6 0 1G 0 part /boot
└─sda7 8:7 0 20.6G 0 part
├─cl-root 253:0 0 18.4G 0 lvm /
└─cl-swap 253:1 0 2.2G 0 lvm [SWAP]
위는 본인의 디스크 현황이다. [sda]라는 물리적 하드디스크 119.2GB 가 sda1~7로 나뉘어있고, 그 중 root은 총 18.4G이다. 나머지 파티션의 용량을 모두 합쳐도 119.2GB가 나오지 않는데, 그 차이만큼이 파티션이 지정되지 않은 잉여(잔여) 용량이다. 이 용량을 전부 root에 주겠다.
여기서 주목해야 할 점은 sda7, cl-root과 lvm이다.
정리하자면..
**root 시스템은 /dev/sda7/ 경로 아래에 위치하고 있고, 타입은 lvm, 용량은 18.4G이다.
잔여 용량을 그대로 root 파티션에 할당할 수는 없는가?
그럴 수 없다. 처리 순서는 아래를 따라야 한다.
우선 새 파티션에 할당해야 하므로, 파티션을 생성해야 한다.
fdisk : 파티션 할당
[root@localhost ~]# fdisk /dev/sda
Welcome to fdisk (util-linux 2.32.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): n
Partition number (3,4,8-128, default 3): 4
First sector (1638400-202995711, default 1638400):
Last sector, +sectors or +size{K,M,G,T,P} (1638400-202995711, default 202995711):
Created a new partition 4 of type 'Linux filesystem' and of size 96 GiB.
Partition #4 contains a xfs signature.
Do you want to remove the signature? [Y]es/[N]o: y
The signature will be removed by a write command.
Command (m for help): w
The partition table has been altered.
Syncing disks.
본인은 sda 하드디스크만 가지고 있다. 다른 물리적인 하드디스크를 PC에 마운트하면, 자동으로 sdb, sdc, sdd 순으로 인식된다.
다시 본론으로 돌아와서, 본인은 sda 하드디스크를 갖고 있고, 이 하드 내 잔여용량을 root 파티션에 할당하려고 한다.
그러니 sda 하드디스크 내 파티션 생성이 필요하다.
따라서 fdisk /dev/sda 를 입력하여 sda 하드디스크 내 파티션을 생성하겠다는 선언을 한다.
이후 n 입력 : new. 새로 생성
이후 4 입력 : 파티션 번호 지정(sda4)
이후 엔터, 엔터 입력 : 시작 섹터, 끝 섹터를 입력하는 부분인데, 본인은 남은 용량 전부를 root에 할당할 것이어서 엔터.
보통은 여기까지 하면 Syncing disks 메세지가 출력된다. 그러나 Do you want to remove the signature?가 출력되는 경우는 그냥 y를 입력.
최종단계에서 w 입력 : 저장 후 종료
Created a new partition 4 of type 'Linux filesystem' and of size 96 GiB.
Partition #4 contains a xfs signature.
==> sda4 파티션이 96GB 용량을 포함하여 생성되었다.
pvscan : Physical Volume scan : 물리적 볼륨을 스캔한다. 이 결과에 우리가 새로 추가한 sda4가 출력되어야 우리는 root 파티션에 용량을 증설할 수 있다.
[root@localhost ~]# pvscan
PV /dev/sda7 VG cl lvm2 [20.58 GiB / 0 free]
Total: 1 [20.58 GiB] / in use: 1 [20.58 GiB] / in no VG: 0 [0 ]
Uh uh.. 피지컬 볼륨 스캔을 했는데, 우리가 방금 생성한 sda4가 스캔이 안 된다.
당연하다 단순 파티션을 생성했을 뿐, 이를 피지컬 볼륨으로 지정하지 않았기 때문이다.
한가지 더 확인해보자.
vgdisplay : root 파티션의 볼륨 그룹과, 증설이 가능한 용량 확인
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name cl
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 7
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 20.58 GiB
PE Size 4.00 MiB
Total PE 5269
Alloc PE / Size 5269 / 20.58 GiB
Free PE / Size 0 / 0
VG UUID hTDJDC-CWoa-BuHW-HE1E-L98O-Vtqr-dfk455
vgdisplay 결과, root 파티션은 cl 이라는 볼륨그룹에 속하고, 추가 가능한 용량(Free PE / Size) 은 0 이라고 표시된다.
이제 정말 피지컬 볼륨을 지정해보자.
pvcreate : 피지컬 볼륨 생성
[root@localhost ~]# pvcreate /dev/sda4
Physical volume "/dev/sda4" successfully created.
우리가 방금 생성한 sda4 파티션을 피지컬 볼륨으로 지정했다.
다시 pvscan을 해보면,
[root@localhost ~]# pvscan
PV /dev/sda7 VG cl lvm2 [20.58 GiB / 0 free]
PV /dev/sda4 lvm2 [96.01 GiB]
우리가 생성한 sda4가 피지컬 볼륨으로 잘 지정된 것이 보인다.
vgextend [볼륨그룹][파티션] : 특정 파티션을 특정 볼륨그룹에 포함시킨다.
[root@localhost ~]# vgextend cl /dev/sda4
Volume group "cl" successfully extended
sda4 파티션을 cl 이라는 볼륨그룹(VG)에 포함시켰다.
다시 vgdisplay를 해서 추가 가능한 용량을 확인한다.
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name cl
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 8
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 2
Act PV 2
VG Size 116.59 GiB
PE Size 4.00 MiB
Total PE 29848
Alloc PE / Size 5269 / 20.58 GiB
Free PE / Size 24579 / 96.01 GiB
VG UUID hTDJDC-CWoa-BuHW-HE1E-L98O-Vtqr-dfk455
Free PE / SIZE 부분에 24579 / 96GB가 잘 추가되었다!!!
거의 다 왔다.
추가 가능한 용량인 24579 만큼을 root 파티션에 포함시키는 작업을 해야한다.
lvextend [root 파티션 경로] -l +24579 : 24579만큼을 root 에 포함시킨다.
[root@localhost ~]# lvextend /dev/cl/root -l +24579
Size of logical volume cl/root changed from 18.42 GiB (4716 extents) to 114.43 GiB (29295 extents).
Logical volume cl/root successfully resized.
나의 root 파티션 경로는 /dev/cl/root 이다. 사람마다 다르므로 본인의 루트 파티션 경로를 지정하자.
글 제목처럼 우리 root 파티션의 타입은 xfs이다. xfs의 용량을 늘리기 위해서는
xfs_growfs [파티션 경로] 가 필요하다.
[root@localhost ~]# xfs_growfs /dev/cl/root
meta-data=/dev/mapper/cl-root isize=512 agcount=4, agsize=1207296 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=4829184, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 4829184 to 29998080
이제 끝났다.
다시 lsblk를 입력하면
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 119.2G 0 disk
├─sda1 8:1 0 499M 0 part
├─sda2 8:2 0 300M 0 part /boot/efi
├─sda4 8:4 0 96G 0 part
│ └─cl-root 253:0 0 114.4G 0 lvm /
├─sda5 8:5 0 881M 0 part
├─sda6 8:6 0 1G 0 part /boot
└─sda7 8:7 0 20.6G 0 part
├─cl-root 253:0 0 114.4G 0 lvm /
└─cl-swap 253:1 0 2.2G 0 lvm [SWAP]
가 출력된다.
sda4 파티션에도 cl-root 자리하고 있다.
전체적인 root 파티션의 용량이 기존 18GB에서 114GB로 증설되었다.