Search

XFS 파일 시스템 확장하기

요약
resize2fs. fdisk + xfs_growfs
게시일
2021/02/24
태그
Linux
1 more property
사용하는 RHEL VM 인스턴스의 기본 파티션을 너무 작게 잡아놨다. 일단 디스크 볼륨은 늘렸는데… RHEL 8은 ext4가 아닌 xfs 파일 시스템이므로 resize2fs 명령으로는 파일 시스템을 건드릴 수 없다? 어떻게 하나?
구글링해보니, 다음과 같은 단계가 필요하다.
1.
fdisk를 이용해 파일 시스템을 지우고 새로 만든다(백업할 필요 없나?)
2.
xfs_growfs 명령으로 파티션을 확장한다.

적용 환경

내가 사용하는 환경은 LVM(Logical Volume Manager)을 사용하지 않는 단일 VM이다. LVM을 사용한다면 PV, LV, LVM 등등 복잡한 관리 단계를 거쳐야 하므로 다른 곳을 참조해보길… 클라우드 환경이라면 LVM을 이용하지 않는 가상 인스턴스일테니 내 글이 도움이 될 듯 싶다.

파티션 확장

일단 VM의 디스크를 확장했으니 블록 디바이스의 크기는 늘렸고… /로 사용 중인 기본 파티션을 지우고(!!!) 새로 만든다. 겁이 나니 VM 스냅샷을 미리 떠놓고 진행했다. 사용 중인 파티션을 지우고 다시 늘리는 게 가능한 일인가 싶었는데, 가능하더라… ext4에서는 확인해보지 못했지만 xfs에서는 가능했다.
# fdisk /dev/nvme0n1 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): p Disk /dev/nvme0n1: 40 GiB, 42949672960 bytes, 83886080 sectors # 디스크는 40GB 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: 0x8fc2583f Device Boot Start End Sectors Size Id Type /dev/nvme0n1p1 * 2048 616447 614400 300M 83 Linux /dev/nvme0n1p2 616448 4810751 4194304 2G 82 Linux swap / Solaris /dev/nvme0n1p3 4810752 41943039 37132288 17.7G 83 Linux # +20GB 늘려야할 놈 Command (m for help): d # nvme0n1p3를 지운다. 엄청 떨린다. Partition number (1-3, default 3): # 기본값인 3이므로 그냥 Enter 키를 누름 Partition 3 has been deleted. Command (m for help): n # 새 파티션 만들기 Partition type p primary (2 primary, 0 extended, 2 free) e extended (container for logical partitions) Select (default p): p # 기본 파티션으로 지정 Partition number (3,4, default 3): # 기본값인 3이므로 그냥 Enter 키를 누름 First sector (4810752-83886079, default 4810752): Last sector, +sectors or +size{K,M,G,T,P} (4810752-83886079, default 83886079): Created a new partition 3 of type 'Linux' and of size 37.7 GiB. Partition #3 contains a xfs signature. Do you want to remove the signature? [Y]es/[N]o: N # 반드시 'N' Command (m for help): w # 변경된 파티션을 디스크에 기록 The partition table has been altered. Syncing disks.
Shell
복사

파일 시스템 확장

이제 xfs_growfs 명령으로 파일 시스템을 확장한다. 시스템을 재시작할 필요 없이 바로 확장된다.
-D size 옵션으로 용량을 지정해서 확장할 수 있다(size는 블록 개수를 넣어야 한다. )이 옵션을 지정하지 않으면 블록 디바이스에서 사용할 수 있는 최대 크기까지 확장한다.
# xfs_growfs /dev/nvme0n1p3 meta-data=/dev/nvme0n1p3 isize=512 agcount=4, agsize=1160384 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 data = bsize=4096 blocks=4641536, 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 4641536 to 9884416
Shell
복사
이제 파티션 용량을 확인해보면 늘어난 것을 알 수 있다.
# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 3.8G 0 3.8G 0% /dev tmpfs 3.8G 0 3.8G 0% /dev/shm tmpfs 3.8G 9.4M 3.8G 1% /run tmpfs 3.8G 0 3.8G 0% /sys/fs/cgroup /dev/nvme0n1p3 38G 11G 28G 28% / /dev/nvme0n1p1 295M 231M 65M 79% /boot tmpfs 775M 4.0K 775M 1% /run/user/1000
Shell
복사

후기

fdisk로 기본 파티션을 지우면서 바로 생성하는 방식으로 파티션을 확장할 수 있다는 건 께름칙했지만 실제로 적용되는 방법이었다. 실제 운영 시스템에서 이 명령을 수행하는 건 엄청 겁이 날테지? VM에서 테스트해보고 운영 환경에서 써보는 게 좋겠다.