서버를 구축하고 데이터를 저장해놓는 인스턴스의 하드디스크 용량을 추가하는 글을 작성해보려고 한다.

 

환경

  • EC2: t2.micro
  • volume: ext4 포맷 5GB

 


 

볼륨 생성

1.  AWS console에 접속한다.
https://console.aws.amazon.com/ec2/

 

2.  사이드 메뉴에서 볼륨을 선택한다.

EC2 사이드 메뉴

 

3. 볼륨 생성 버튼을 누른다.

t2.micro 인스턴스의 기본 볼륨 크기는 8GB이다.

기존 서버 두 개를 돌리고 있으므로 8GB가 2개 있으며

16GB는 main서버에 전에 추가했던 볼륨이다.

 

 

EC2 볼륨 리스트

 

4. 볼륨 설정을 하고 생성한다.

해당 글을 작성하기 위해서 볼륨을 추가하므로 작은 크기의 볼륨을 생성했다.

  • 볼륨 유형: 볼륨의 유형을 설정 가능
    크게 성능을 요하지 않아 gp2로 설정
  • 크기: 볼륨의 크기를 설정 가능
    단위는 GB
  • IOPS: Input/Output Operations Per Second
    해당 값을 변경하려면 gp2 대신 gp3을 사용하면 된다.
  • 처리량: 볼륨이 지원할 수 있는 처리량 성능
    특정 볼륨 유형만 설정 가능함
  • 가용 영역: 해당 볼륨이 적용될 영역 설정 가능
    연결할 EC2와 같은 영역을 설정해야 함
  • 스냅샷 ID: 불러올 스냅샷 ID
    빈 볼륨을 원한다면 없음 선택, 원하는 스냅샷 있다면 드롭다운에서 확인 가능

 

EC2 볼륨 설정

 

 

 

4. 볼륨 생성 확인

 

생성 버튼을 누르면 볼륨이 '생성 중' 단계로 넘어감

 

생성 중 화면

볼륨이 생성되면 '사용 가능'으로 상태가 변화되어 있음

생성 완료화면

 

 

볼륨 연결

 

1. 생성한 볼륨을 선택하여 연결하기 선택

 

생성한 5GB 볼륨을 선택하여 연결하기 작업 선택

특정 볼륨 연결

 

2. 연결할 인스턴스 지정

볼륨을 연결할 인스턴스를 선택하고, 볼륨의 디바이스 이름을 설정

인스턴스의 경우 드롭다운을 누르면 나오는 목록 중에서 선택하면 된다.

 

디바이스 이름의 경우 unix 계열의 특징으로 연결된 디바이스는 '/dev' 경로 아래에 나오는데

해당 경로에서 사용할 디바이스 이름을 설정한다.

보통의 경우 AWS console에서 자동적으로 작성해주며, 필요할 경우 아래 도움말을 참고하여 작성하면 된다.

 

EC2 - volume 연결 설정

 

2. 볼륨 연결 확인

볼륨을 연결한 인스턴스에 접속하여서 제대로 볼륨이 연결되어있는지 확인해 본다.

위 설정에서는 /dev/sdg로 설정하였는데, 설정 화면 아래에 나와있는 데로 내부적으로 변경되어있는 것을 확인 가능하다.

 

연결된 block 디바이스 출력

 

3. 볼륨 상태 확인

볼륨이 연결이 제대로 되었으니, 상태를 확인해본다.

file -s 명령어로 파일의 포맷을 확인한다.

# 파일 시스템 보기
sudo file -s /dev/xvdg

포맷이 있다면 다르게 나오지만, 포맷을 설정하지 않는 볼륨이므로 'data'가 나와주면 된다.

볼륨 포맷 확인

 

인스턴스에 붙어있는 디바이스에 대한 정보를 확인해준다.

sudo lsblk -f

기존에 추가되었던 xvdf 볼륨은 파일 시스템은 ext4으로 /volume1에 마운트 된 것을 확인 가능하고,

이번에 추가한 볼륨은 포맷도 없으며 마운트도 되지 않은 것을 확인이 가능하다.

 

block 디바이스들의 정보

 

 

3. 볼륨 파일 시스템 설정

 

폴더를 생성했으면 이제 볼륨의 파일 시스템을 설정한다.

파일 시스템을 설정하지 않고 바로 마운트를 하면 에러가 발생한다.

 

마운트 에러

볼륨의 파일 시스템을 정하기 위해서는 아래 명령어를 사용한다.

# 파일 시스템 설정
sudo mkfs -t ext4 /dev/xvdg

명령어를 입력하면 아래와 같은 출력문이 나온다.

(xfs파일 시스템으로 잘못 설정하여서 물어보는 질문이 추가되었다.)

볼륨 파일시스템 설정

 

 

4.  볼륨 마운트

 

우선 연결할 볼륨을 마운트를 할 경로를 설정한다.

나의 경우 /volume2에 볼륨을 추가할 생각이므로, /volume2폴더를 생성한다.

# root 권한으로 폴더 생성
sudo mkdir /volume2

 

이제 설정한 경로로 마운트만 하면 된다.

명령어 입력 시 아무것도 나오지 않는다면 잘 된 것이다.

# 마운트
sudo mount /dev/xvdg /volume2

mount 결과

 

 

4. 볼륨 확인 및 부팅 시 자동 마운트 설정

인스턴스가 재시작할 때마다 마운트를 하기는 번거로우니 부팅 시 자동적으로 마운트가 되게 설정하려고 한다.

 

우선 가장 중요한 설정 파일을 백업한다.

# 설정파일 백업
sudo cp /etc/fstab /etc/fstab.orig

 

볼륨을 자동적으로 마운트 하기 위해 아래의 명령을 사용해 볼륨의 UUID를 가져온다.

# block device id 가져오기
sudo blkid

디바이스들의 UUID

 

설정 파일에 부팅 시마다 자동적으로 마운트 할 디바이스를 등록한다.

방금 전 백업해 놓았던 설정 파일을 수정한다.

# 설정파일 수정
# vim
sudo vim /etc/fstab
# nano
sudo nano /etc/fstab

 

설정 파일 마지막 줄에 아래의 포맷처럼 추가한다.

# fstab 포맷
UUID=디바이스UUID /마운트지점 파일시스템 defaults,nofail 0 2
# 사용중인 설정
UUID=디바이스UUID /volume2 ext4 defaults,nofail 0 2

 

제대로 등록되어있는지 테스트를 진행한다.

먼저 새로 마운트 한 볼륨을 언마운트한다.

그 후 마운트가 자동적으로 되는지 테스트한다.

# umount
sudo umount /volume2

# mount all
sudo mount -a

 

위 단계를 진행하고 문제가 없다면 볼륨 추가는 끝이지만 만약 제대로 추가되지 않았다면

백업한 설정을 다시 롤백한다. ( /etc/fstab )

 

 


예전에 진행했던 프로젝트 글을 전부 작성했다.

기록이 가장 좋은 암기란 말을 이번 글을 작성하면서 느끼게 되었다.

 

 

참고자료

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-attaching-volume.html

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-using-volumes.html