[CentOS] LVM, XFS 시스템에서 root 파티션 용량 증설

Jeon·2021년 8월 28일
0

CentOS

목록 보기
1/1

1. 파티션 용량 증설이 필요했던 이유

CentOS8 설치 및 초기 세팅하는 과정에서 파티션을 설정해야 했다. 나는 줄곧 윈도우만 사용해왔는데, Linux 기반의 운영체제인 CentOS를 사용하는 것이 낯설고 자신이 없었다. 때문에 초기 세팅 시 개발용 노트북의 총 용량 128GB 중 20GB만 시스템에 할당했었다. 그러나 시스템에 익숙해지고 개발을 많이 하게 되면서 용량 증설이 필요했다.

2. 우여곡절

CentOS와 관련해서는 국내에서 정보를 많이 찾을 수가 없었고, 구글 검색을 통해서도 쉽게 알아낼 수가 없었다.

그래서 3일이 걸렸다. CentOS의 가장 최신 버전은 버전8 에서는 root 파티션 용량 증설이 너무 까다로운 일인 것 같았다.

실제 검색 결과는 CentOS 6, 7버전 기준으로 파티션 용량 증설 관련 정보들이 즐비했다. 이를 버전8에 적용하려니 오류만 계속 발생하고 좌절을 금치 못했다.

나와 같은 고생을 하는 사람이 없길 바라며.. step by step으로 작성하겠다.

3. 시작

  • 환경
    • 운영체제 : CentOS 8
    • root 파티션 타입 : XFS, LVM

1. 개념 잡기

우선 본인의 하드드라이브가 어떻게 파티셔닝이 되있고, 잔여 용량이 얼마나 있는지 확인해야 한다.

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이다.

2. 잔여용량을 새 파티션에 할당

잔여 용량을 그대로 root 파티션에 할당할 수는 없는가?
그럴 수 없다. 처리 순서는 아래를 따라야 한다.


증설을 원하는 용량만큼의 새 파티션 생성(root 파티션에 100GB 증설을 원하면 새 파티션의 용량을 100GB로 생성)

-> 새 파티션을 피지컬 볼륨으로 지정

-> 새 파티션(피지컬 볼륨으로 지정된) 용량 전부를 root 파티션에 포함시키기

-> root 파티션 증설 완료!

무슨 말인지 몰라도 된다. 아래만 잘 따라오길 바란다.


1. 새 파티션 생성

우선 새 파티션에 할당해야 하므로, 파티션을 생성해야 한다.

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 용량을 포함하여 생성되었다.


2. 새 파티션을 피지컬 볼륨으로 지정

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가 잘 추가되었다!!!


3. 새 파티션 용량 전부를 root 파티션에 포함

거의 다 왔다.
추가 가능한 용량인 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

4. root 파티션 증설 완료!

이제 끝났다.
다시 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로 증설되었다.

profile

0개의 댓글

관련 채용 정보