본문 바로가기

Storage

[실습] EBS 볼륨(xfs 파일시스템) 연결 및 확장에 대해서 구성하기

반응형

안녕하세요 서후아빠입니다. ^_^
이번 세션은 EC2를 생성할 때 기본 연결되는 root(/)가 외 추가적으로 EBS를 생성하고, 이를 마운트하는 실습과 EBS 볼륨 확장에 대해서 실습을 해보겠습니다. 아시겠지만 EBS 볼륨 축소는 거의 불가능한 상황입니다.(논리적인 파티션 정도의 볼륨 축소는 가능한 것으로 판단됨) 그러므로 EC2 생성 시 초기 세팅하는 EBS 볼륨에 대해서 신중히 결정하시기 바랍니다.


EC2 생성 및 SSH 접속 (상세 설명은 SKIP)

[EC2를 생성할 때, 3개의 볼륨이 생성되도록 설정]

EC2 생성 시 위 옵션처럼 여러 개의 EBS를 붙여서 생성할 수 있습니다.

Case 1  (8G, 10G, 12G) : 기본 볼륨 연결

# 디바이스 정보 출력 (nvme1n1, nvme2n1는 마운트되지 않은 상태)
lsblk
  NAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
  nvme0n1       259:0    0   8G  0 disk
  ├─nvme0n1p1   259:1    0   8G  0 part /
  └─nvme0n1p128 259:2    0   1M  0 part
  nvme1n1       259:3    0  10G  0 disk
  nvme2n1       259:4    0  12G  0 disk

# 파티션 생성 
gdisk /dev/nvme1n1
  Command (? for help): n
  Partition number (1-128, default 1):
  First sector (34-20971519, default = 2048) or {+-}size{KMGTP}:
  Last sector, +sectors or +size{K,M,G,T,P} (2048-20971519, default 20971519):
  Hex code or GUID (L to show codes, Enter = 8300): 8e00
  Command (? for help): w
  Do you want to proceed? (Y/N): Y
gdisk /dev/nvme2n1
  Command (? for help): n
  Partition number (1-128, default 1):
  First sector (34-20971519, default = 2048) or {+-}size{KMGTP}:
  Last sector, +sectors or +size{K,M,G,T,P} (2048-20971519, default 20971519):
  Hex code or GUID (L to show codes, Enter = 8300): 8e00
  Command (? for help): w
  Do you want to proceed? (Y/N): Y
  
# 디바이스 정보 출력
lsblk
NAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1       259:0    0   8G  0 disk
├─nvme0n1p1   259:1    0   8G  0 part /
└─nvme0n1p128 259:2    0   1M  0 part
nvme1n1       259:3    0  10G  0 disk
└─nvme1n1p1   259:4    0  10G  0 part  
nvme2n1       259:5    0  12G  0 disk
└─nvme2n1p1   259:6    0  12G  0 part  

# 파일시스템 포맷 확인 (xfs 확인)
df -hT
  Filesystem     Type     Size  Used Avail Use% Mounted on
  /dev/nvme0n1p1 xfs      8.0G  1.6G  6.5G  20%  /
  devtmpfs       devtmpfs 462M     0  462M  0%  /dev
  tmpfs          tmpfs    470M     0  470M  0%  /dev/shm
  tmpfs          tmpfs    470M     0  470M  0%  /sys/fs/cgroup
  tmpfs          tmpfs    470M  448K  470M  1%  /run
  tmpfs          tmpfs     94M     0   94M  0%  /run/user/0  

# 파일시스템 설정 (xfs) 
mkfs -t xfs /dev/nvme1n1p1
mkfs -t xfs /dev/nvme2n1p1

# 마운트 경로 생성
mkdir /mount1
mkdir /mount2

# 마운트
mount /dev/nvme1n1p1 /mount1
mount /dev/nvme2n1p1 /mount2

# 마운트 결과 확인
df -hT
  Filesystem     Type     Size  Used Avail Use% Mounted on
  /dev/nvme0n1p1 xfs      8.0G  1.6G  6.5G  20%  /
  devtmpfs       devtmpfs 462M     0  462M  0%  /dev
  tmpfs          tmpfs    470M     0  470M  0%  /dev/shm
  tmpfs          tmpfs    470M     0  470M  0%  /sys/fs/cgroup
  tmpfs          tmpfs    470M  448K  470M  1%  /run
  tmpfs          tmpfs     94M     0   94M  0%  /run/user/0  
  /dev/nvme1n1p1 xfs       10G  105M  9.9G  2%  /mount1
  /dev/nvme2n1p1 xfs       12G  119M   12G  1%  /mount2

# 영구 마운트 설정 (root 볼륨은 그대로 두고, 2줄을 추가)
vi /etc/fstab
 /dev/nvme1n1p1	/mount1	xfs	defaults,nofail	0  0
 /dev/nvme2n1p1	/mount2	xfs	defaults,nofail	0  0

# reboot 통해 정상 부팅 및 마운트 상태 확인
reboot

 

Case 2  (8G, 10G) : LVM으로 볼륨 연결

# 디바이스 정보 출력 (nvme1n1는 마운트되지 않은 상태)
lsblk
  NAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
  nvme0n1       259:0    0   8G  0 disk
  ├─nvme0n1p1   259:1    0   8G  0 part /
  └─nvme0n1p128 259:2    0   1M  0 part
  nvme1n1       259:3    0  10G  0 disk

# 파티션 생성 
gdisk /dev/nvme1n1
  Command (? for help): n
  Partition number (1-128, default 1):
  First sector (34-20971519, default = 2048) or {+-}size{KMGTP}:
  Last sector, +sectors or +size{K,M,G,T,P} (2048-20971519, default 20971519):
  Hex code or GUID (L to show codes, Enter = 8300): 8e00
  Command (? for help): w
  Do you want to proceed? (Y/N): Y

# 디바이스 정보 출력
lsblk
  NAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
  nvme0n1       259:0    0   8G  0 disk
  ├─nvme0n1p1   259:1    0   8G  0 part /
  └─nvme0n1p128 259:2    0   1M  0 part
  nvme1n1       259:3    0  10G  0 disk
  └─nvme1n1p1   259:4    0  10G  0 part

# 물리 볼륨 생성
pvcreate /dev/nvme1n1p1
pvs  

# 볼륨 그룹 생성 (볼륨 그룹명 : group1)
vgcreate group1 /dev/nvme1n1p1
vgs

# 논리파티션 생성 (2G, 3G, 5G 생성)
lvcreate -n volume1 -L 2G group1
lvcreate -n volume2 -L 3G group1
lvcreate -n volume3 -l 100%FREE group1
ls /dev/mapper/
  control  group1-volume1  group1-volume2  group1-volume3
ls /dev/group1/
  volume1  volume2  volume3

# 파일시스템 설정
mkfs -t xfs /dev/group1/volume1
mkfs -t xfs /dev/group1/volume2
mkfs -t xfs /dev/group1/volume3

# 마운트 경로 생성
mkdir /mount1
mkdir /mount2
mkdir /mount3

# 마운트
mount /dev/group1/volume1 /mount1
mount /dev/group1/volume2 /mount2
mount /dev/group1/volume3 /mount3

# 영구 마운트 설정 (root 볼륨은 그대로 두고, 3줄을 추가)
vi /etc/fstab
  /dev/group1/volume1  /mount1	xfs	defaults,nofail	0	0
  /dev/group1/volume2  /mount2	xfs	defaults,nofail	0	0
  /dev/group1/volume3  /mount3	xfs	defaults,nofail	0	0

# reboot 통해 정상 부팅 및 마운트 상태 확인
reboot
AWS LVM 가이드 : https://aws.amazon.com/ko/premiumsupport/knowledge-center/create-lv-on-ebs-partition/

Case 3  (8G > 10G, 10G > 12G) : 기본 볼륨 확장

EC2 > Volumes > 볼륨 선택(8G or 10G) > Actions > Modify volume > Size (10G or 12G) > Modify

# 볼륨 확장 상태 확인 (8G > 10G, 10G > 12G)
lsblk
  NAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
  nvme0n1       259:0    0  10G  0 disk
  ├─nvme0n1p1   259:1    0   8G  0 part /
  └─nvme0n1p128 259:2    0   1M  0 part
  nvme1n1       259:3    0  12G  0 disk
  └─nvme1n1p1   259:4    0  10G  0 part /mount1

# 파티션 확장
growpart /dev/nvme0n1 1
growpart /dev/nvme1n1 1

# 파티션 확장 상태 확인
lsblk
  NAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
  nvme0n1       259:0    0  10G  0 disk
  ├─nvme0n1p1   259:1    0  10G  0 part /
  └─nvme0n1p128 259:2    0   1M  0 part
  nvme1n1       259:3    0  12G  0 disk
  └─nvme1n1p1   259:4    0  12G  0 part /mount1
mkdir /mount4
mount /dev/group1/volume4 /mount4

# 파일시스템 확장 
xfs_growfs -d /mount1
xfs_growfs -d /mount2
xfs_growfs -d /mount3

# 파일시스템 확장 상태 확인
df -h | grep /nvme0n1p1
  /dev/nvme0n1p1   10G  1.6G  8.4G  16% /
df -h | grep /nvme1n1p1  
  /dev/nvme1n1p1   12G  119M   12G   1% /mount1
장애 대비하여 스냅샷을 생성하고 진행하시기 권고드립니다.(EC2 > Volumes > 선택 > Actions > Create snapshot)
볼룸 확장 중(In-use-optimizing)에도 EC2는 정상적으로 동작 중이었습니다.
동일한 EBS에 대해서 볼륨 확장한 후, 6시간 Cool Time이 필요합니다. (6시간 동안 연속 볼륨 확장 불가능)

Case 4  (10G > 20G) : LVM으로된 볼륨 확장

EC2 > Volumes > 볼륨 선택(10G) > Actions > Modify volume > Size (20G) > Modify

# 볼륨 확장 상태 확인 (10G > 20G)
lsblk
  NAME               MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
  nvme0n1            259:0    0   8G  0 disk
  ├─nvme0n1p1        259:1    0   8G  0 part /
  └─nvme0n1p128      259:2    0   1M  0 part
  nvme1n1            259:3    0  20G  0 disk
  └─nvme1n1p1        259:4    0  10G  0 part
    ├─group1-volume1 253:0    0   2G  0 lvm  /mount1
    ├─group1-volume2 253:1    0   3G  0 lvm  /mount3
    └─group1-volume3 253:2    0   5G  0 lvm  /mount3

# 파티션 확장
growpart /dev/nvme1n1 1

# 파티션 확장 상태 확인
lsblk
  NAME               MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
  nvme0n1            259:0    0   8G  0 disk
  ├─nvme0n1p1        259:1    0   8G  0 part /
  └─nvme0n1p128      259:2    0   1M  0 part
  nvme1n1            259:3    0  20G  0 disk
  └─nvme1n1p1        259:4    0  20G  0 part
    ├─group1-volume1 253:0    0   2G  0 lvm  /mount1
    ├─group1-volume2 253:1    0   3G  0 lvm  /mount3
    └─group1-volume3 253:2    0   5G  0 lvm  /mount3

# 물리 볼륨 생성
pvresize /dev/nvme1n1p1
pvs
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sdb1  group1 lvm2 a--  <20.00g 10.00g
vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  group1   1   3   0 wz--n- <20.00g 10.00g
lvs
  LV      VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  volume1 group1 -wi-ao----  2.00g
  volume2 group1 -wi-ao----  3.00g
  volume3 group1 -wi-ao---- <5.00g

# 논리 볼륨 확장 및 신규 생성 (논리 볼륨 축소 시 : lvreduce)
lvextend -L 3G /dev/group1/volume1
lvextend -L 4G /dev/group1/volume2
lvextend -L 6G /dev/group1/volume3
lvcreate -n volume4 -l 100%FREE group1
vs
  LV      VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  volume1 group1 -wi-ao----  3.00g
  volume2 group1 -wi-ao----  4.00g
  volume3 group1 -wi-ao----  6.00g
  volume4 group1 -wi-a----- <7.00g
ls /dev/mapper/
  control  group1-volume1  group1-volume2  group1-volume3  group1-volume4
ls /dev/group1/
  volume1  volume2  volume3  volume4
mkfs -t xfs /dev/group1/volume4
mkdir /mount4
mount /dev/group1/volume4 /mount4

# 파일시스템 확장 
xfs_growfs -d /mount1
xfs_growfs -d /mount2
xfs_growfs -d /mount3

# 파일시스템 확장 상태 확인
df -h | grep mount
  /dev/mapper/group1-volume1  3.0G   55M  3.0G   2% /mount1
  /dev/mapper/group1-volume2  4.0G   62M  4.0G   2% /mount2
  /dev/mapper/group1-volume3  5.0G   69M  5.0G   2% /mount3
  /dev/mapper/group1-volume4  7.0G   83M  7.0G   2% /mount4

 

반응형