ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [AWS]EC2 centOS 인스턴스 스토리지 확장하기
    Back-end 2014. 8. 1. 21:12
    728x90

    아마존에서 특별한 설정변경없이 EC2 인스턴스를 생성하면 기본적으로 8G의 디스크용량을 가지게 된다. 이렇게 사용하다가 용량이 부족하다 싶으면 사용하던 데이터를 손대지 않고 스토리지의 공간을 확장할 수 있다.

    기본적인 개념은 아래와 같다.



    1. EC2를 정지시킨다.
    2. 연결되어 있는 EBS를 detach 시킨다.
    3. detach 된 EBS volume의 snapshot을 생성한다.
    4. 생성된 snapshot으로 새로운 EBS volume을 생성한다. 이때 생성되는 EBS volume의 크기를 원하는 사이즈로 지정한다.
    5. EC2에 새로 생성된 EBS volume을 attach 한다.
    6. EC2 인스턴스에 접속해서 디스크크기를 재설정한다.


    대략 위와 같은 과정이라고 보면 된다.

    쉽게 설명하면 서버에서 기존의 저장장치를 때어내고 새로만든 큰 저장장치를 붙이는 과정이다. 이과정에서 새로만든 저장장치에 기존 데이터가 그대로 들어있도록 만드는 것이 포인트라고 할 수 있다.


    아마존 웹 서비스 콘솔에서 위와 같은 과정으로 EC2 인스턴스의 스토리지를 확장할 수 있다. 

    위 그림만 이해하면 콘솔의 메뉴를 열어 보고 어렵지 않게 진행할 수 있다. 이럴 경우 6번 과정만 주의 해서 봐도 된다. 처음에 5번까지만 하고 인스턴스 공간이이 확장이 안되어 있어서 해맸었다.


    설치된 OS: centOS 6.5


    상세과정을 살펴보자.



    1. EC2를 정지시킨다.

    아마존 EC2콘솔 INSTANCES -> instances 메뉴에서 실행하려는 인스턴스 선택후 마우스오른쪽 버튼을 누르면 아래와 같이 팝업 메뉴가 뜬다.

    여기서 Stop을 실행한다.





    2. 연결되어 있는 EBS를 detach 시킨다.

    아마존 EC2콘솔 ELASTIC BLOCK STORE -> Volumes 메뉴에서 정지시킨 인스턴스의 볼륨을 찾아서 마우스 오른쪽 버튼을 누르면 아래와 같이 팝업 메뉴가 나온다.

    여기서 Detach Volume을 선택한다. 참고로 볼륨의 상태가 in-use  상태여야만 Detach Volume을 실행할 수 있다.



    만약 확장하려는 인스턴스가 사용중인 볼륨이 어떤것인지 확인하려면 Volume 목록에서 Attachement Information 항목을 보면 된다. 이곳에 인스턴스의 이름과 Id가 표시된다.

    그리고 위 그림의 오른쪽 끝에 적힌 /dev/sda1.. 과 같은 경로를 기억해두거나 적어둔다. 새로 Attach할때 이 경로를 입력해야 한다.




    3. detach 된 EBS volume의 snapshot을 생성한다.

    정지된 볼륨에서 다시 마우스 오른쪽 버튼을 눌려서 아래와 같이 Create Snapshot을 선택한다.

    (인스턴스 실행중에도 스냅샷을 만들 수 잇으나 disk IO가 있는중일 수 있기때문에 문제가 될 수 있을 것으로 판단하고 인트턴스 정지후에 스냅샷을 생성하였다.)



    4. 생성된 snapshot으로 새로운 EBS volume을 생성한다. 이때 생성되는 EBS volume의 크기를 원하는 사이즈로 지정한다.

    아마존 EC2콘솔 ELASTIC BLOCK STORE -> Snapshots 메뉴에서 방금 생성한 스냅샵을 찾아서 마우스 오른쪽 버튼을 누르면 아래와 같이 팝업 메뉴가 나온다.

    여기서 Create Volume을 선택한다.


    다음으로 볼륨 생성팝업차이 뜨는데 이때 아래와 같이 Size를 확장하려는 사이즈로 지정해준다. 기본값이 현재 사이즈 이므로 방심하면 그냥 넘어가서 크기가 같은 볼륨을 생성해버리게 되니 주의





    5. EC2에 새로 생성된 EBS volume을 attach 한다.

    새로 생성된 볼륨은 상태가 available 상태로 되어 있다. 여기서 마우스 오른쪽 버튼을 누르면 아래와 같이 팝업 메뉴가 나온다.

    여기서 Attach Volume을 선택한다.



    다음으로 나오는 어태치 팝업에서 아래와 같이 instance를 지정해준다. 최초에 stop 시킨 인스턴스의 아이디나 이름 등을 입력하면 된다.

    그리고 Device에서 원래의 볼륨이 마운트되어 있던 경로를 똑같이 적는다. 2번과정에서 /dev/sda1 경로 였다.







    6. EC2 인스턴스에 접속해서 디스크크기를 재설정한다.

    기본적으로 EC2와 연결된 EBS Volume의 용량을 늘려주면 스토리지 확장이 된다고 하는데 여기까지 진행하고 인스턴스를 재시작한후

    막상 디스크 용량을 확인해보면 전혀 늘어나지 않았다.


     

    아래와 같이 command 처리로 늘어난 EBS 스토리지 공간을 OS에서 인식 할 수 있게 되었다.




    위와 같이 처음에 df -h 로 디스크 공간을 확인해보면 7.9G만 잡혀있는 상태이다.

    그러나 fdisk -l로 확인해보면 /dev/xvde 디스크용량이 107.4G 인것이 확인된다.

    이상태에서 resize2fs /dev/xvde 명령을 실행해서 파일시스템을 재구축해야 한다. (오래 걸림)

    다시 df -h 로 용량을 확인해보면 전체 디스크 용량이 모두 사용가능한 공간이 되었음을 확인 할 수 있다.


    저 명령실행전에 몽고 디비가 실행중이었는데 용량 제산정 과정이나 진행후에 프로세스에 전혀 지장이 없었다.

    파일 시스템 재구축 작업은 서비스 운영중에도 사용할 수 있을 것으로 판단된다.




    스토리지 확장관련 아마존 레퍼런스 문서: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-expand-volume.html#d0e52667

    아마존의 위 문서에서 스토리지 확장하는 방법이 자세하게 나와 있다. (영어)




Designed by Tistory.