안녕하세요, PSJ입니다.
오늘은 Hyper-V VM 환경에 설치한 Linux(CentOS 7)에 디스크 확장이 필요해서 작업한 내역을 기록할 겸 포스팅합니다.
※ 신규 디스크 추가가 아니라, 기존 VHDX 파일의 용량을 확장해서 Linux 파일 시스템에 적용하는 방법입니다.
기준 환경
- Hyper-V, CentOS 7
- SCSI 하드드라이브
- GPT (FSType), LVM
먼저 Linux 초보 분들은 LVM의 구조부터 한번 보시고 작업하시면 좋을 거 같습니다.
먼저 Linux에서 2TB 이상의 디스크를 사용하기 위해서는 GPT 파티션을 이용해야 합니다. 기존 환경이 GPT 파티션을 사용하고 있어서 용량 확장 시 Parted라는 툴을 이용해서 진행했습니다.
우선 구성된 Linux의 파티션 정보 lsblk 명령으로 확인합니다.
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931.5G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 50G 0 part /home
├─sda3 8:3 0 10G 0 part [SWAP]
├─sda4 8:4 0 1K 0 part
├─sda5 8:5 0 5G 0 part /tmp
└─sda6 8:6 0 865.5G 0 part /
Hyper-V에서 SCSI 디스크를 확장하시고, VM에 접속해 보시면 sda 디스크에 확장된 용량이 조회됩니다. (기존 1TB -> 1.5TB로 확장)
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1500G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 50G 0 part /home
├─sda3 8:3 0 10G 0 part [SWAP]
├─sda4 8:4 0 1K 0 part
├─sda5 8:5 0 5G 0 part /tmp
└─sda6 8:6 0 865.5G 0 part /
Parted 툴(Linux에 파티션 매직이라고 함)을 통해 파티션 용량을 확장해주겠습니다.
## parted "디스크명"
# parted /dev/sda
GNU Parted 3.1
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) help
align-check TYPE N check partition N for TYPE(min|opt) alignment
help [COMMAND] print general help, or help on COMMAND
mklabel,mktable LABEL-TYPE create a new disklabel (partition table)
mkpart PART-TYPE [FS-TYPE] START END make a partition
name NUMBER NAME name partition NUMBER as NAME
print [devices|free|list,all|NUMBER] display the partition table, available devices, free space, all found partitions, or a particular partition
quit exit program
rescue START END rescue a lost partition near START and END
resizepart NUMBER END resize partition NUMBER
rm NUMBER delete partition NUMBER
select DEVICE choose the device to edit
disk_set FLAG STATE change the FLAG on selected device
disk_toggle [FLAG] toggle the state of FLAG on selected device
set NUMBER FLAG STATE change the FLAG on partition NUMBER
toggle [NUMBER [FLAG]] toggle the state of FLAG on partition NUMBER
unit UNIT set the default unit to UNIT
version display the version number and copyright information of GNU Parted
print 명령을 통해 현재 파티션 정보를 조회
(parted) print
Model: ATA WDC WD1001FALS-0 (scsi)
Disk /dev/sda: 1500GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 1075MB 1074MB primary xfs boot
2 1075MB 54.8GB 53.7GB primary xfs
3 54.8GB 65.5GB 10.7GB primary linux-swap(v1)
4 65.5GB 1000GB 935GB extended
5 65.5GB 70.9GB 5369MB logical xfs
6 70.9GB 1000GB 929GB logical xfs
"print free" 명령으로 할당되지 않은 Free Space를 조회할 수 있습니다.
(parted) print free
Model: ATA WDC WD1001FALS-0 (scsi)
Disk /dev/sda: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size Type File system Flags
32.3kB 1049kB 1016kB Free Space
1 1049kB 1075MB 1074MB primary xfs boot
2 1075MB 54.8GB 53.7GB primary xfs
3 54.8GB 65.5GB 10.7GB primary linux-swap(v1)
4 65.5GB 1000GB 935GB extended
5 65.5GB 70.9GB 5369MB logical xfs
6 70.9GB 1000GB 929GB logical xfs
1000GB 1500GB 500GB Free Space
"resizepart '파티션 NUMBER'"를 통해 파티션 용량을 확장합니다.
## 6번 파티션의 사이즈를 수정
(parted) resizepart 6
End? [1500GB]? 1500GB ## 1500GB로 확장
(parted) quit ## parted 종료
※단위의 경우 기본이 GB로 자투리가 남을 수 있습니다. 단위 변경은 "unit MB" 명령을 입력하시면 변경도 가능합니다.
LVM을 사용한 환경에서는 "lvresize" 명령으로 로지컬 볼륨의 용량을 늘려줍니다.
# lvresize -l +100%FREE /dev/sda6
New Size (XXXX extents) matches existing size (XXXXX extents).
df -h 명령으로 확인해 보면 아직 용량이 늘어나지 않았을 겁니다. 마지막으로 xfs type FileSystem의 경우 "xfs_growfs" 명령으로, EXT 타입의 경우 "resize2fs" 명령으로 File System의 용량을 늘려주면 됩니다.
## xfs 타입의 경우
# xfs_growfs /dev/sda6
## ext 타입의 경우
# resize2fs /dev/sda6
## resize2fs 사용시 아래 에러가 발생되면 xfs_growfs 사용
resize2fs: Bad magic number in super-block shile trying to open /dev/sda6
적용 후 lsblk, df -Th 명령으로 늘어난 용량을 확인할 수 있습니다.
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1431.5G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 50G 0 part /home
├─sda3 8:3 0 10G 0 part [SWAP]
├─sda4 8:4 0 1K 0 part
├─sda5 8:5 0 5G 0 part /tmp
└─sda6 8:6 0 1365.5G 0 part /
# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.8G 0 1.8G 0% /dev
tmpfs tmpfs 1.8G 12K 1.8G 1% /dev/shm
tmpfs tmpfs 1.8G 188M 1.7G 11% /run
tmpfs tmpfs 1.8G 0 1.8G 0% /sys/fs/cgroup
/dev/sda6 xfs 1366G 7.7G 1358G 1% /
/dev/sda2 xfs 50G 33M 50G 1% /home
/dev/sda5 xfs 5.0G 33M 5.0G 1% /tmp
/dev/sda1 xfs 1014M 191M 824M 19% /boot
tmpfs tmpfs 367M 0 367M 0% /run/user/1000
하고 나니 아무것도 아닌 작업이었는데, 처음 해보는 작업이다 보니 삽질을 몇 시간을 했습니다. 저와 같은 삽질하지 마시길 바랍니다.
즐거운 주말 보내세요.
댓글