Hyper-V, Linux 디스크 용량 늘리기!

Develop/Linux 2021.01.22 댓글 PSJco
728x90
반응형

 

 

안녕하세요, PSJ입니다. 

오늘은 Hyper-V VM 환경에 설치한 Linux(CentOS 7)에 디스크 확장이 필요해서 작업한 내역을 기록할 겸 포스팅합니다. 

 

※ 신규 디스크 추가가 아니라, 기존 VHDX 파일의 용량을 확장해서 Linux 파일 시스템에 적용하는 방법입니다. 

 

기준 환경 

- Hyper-V, CentOS 7 

- SCSI 하드드라이브

- GPT (FSType), LVM 

 

먼저 Linux 초보 분들은 LVM의 구조부터 한번 보시고 작업하시면 좋을 거 같습니다. 

 

사진출처 - wikimedia

먼저 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

하고 나니 아무것도 아닌 작업이었는데, 처음 해보는 작업이다 보니 삽질을 몇 시간을 했습니다. 저와 같은 삽질하지 마시길 바랍니다. 

 

즐거운 주말 보내세요. 

728x90
반응형

댓글