https://opentutorials.org/course/608/3005

EBS란?

EBS란 Elastic Block Store의 약자로 일종의 하드디스크라고 생각하면 된다. EBS의 특징은 아래와 같다.

  • 필요한 용량에 맞게 구입 할 수 있다. 이를테면 EC2 인스턴스를 웹서버의 용도로만 쓰고 파일 저장은 S3를 사용한다면 넉넉 잡고 1기가바이트만 구입하면 된다.
  • 필요에 따라서 즉시 생성하고, 제거 할 수 있다.
  • 사용한 만큼 과금 되는 종량제다. 자세한 내용은 설명서의 비용예측을 참고한다.
  • 내부적으로 데이터를 실시간 복제하고 있기 때문에 하드디스크에 비해서 데이터를 잃어버릴 확률이 현저히 낮다.
  • 스냅샷 기능을 제공해서 EBS의 현재 상태 그대로 보존 할 수 있다.
  • CloudWatch를 통해서 EBS의 통계를 열람 할 수 있다.
  • EC2 인스턴스를 제거해도 EBS는 독립적이기 때문에 데이터가 유지 된다.

Volume이란?

EBS로 생성한 (말하자면) 디스크 하나 하나를 볼륨이라고 부른다.

EBS 생성

EBS를 생성하고 이것은 인스턴스에 붙이는 방법에 대해서 알아보자.

사이드 바에서 ELASTIC BLOCK STORE 하위의 Volumes를 선택한다.

상단의 Create Volume를 클릭한다.

EBS 설정화면에 설정 값을 입력한다.

  • Size : EBS의 용량
  • Availability Zone : AZ에 대한 설명을 참고한다.
  • Snapshot : EBS는 현재 저장된 데이터 상태 그대로 보관할 수 있는데, 이를 스냅샷이라고 한다. 미리 만들어진 스냅샷을 선택해서 똑같은 데이터가 저장된 상태로 EBS를 새로 만들 수 있다.
  • Volume Type : IOPS는 디스크에 데이터를 읽고 쓰는 속도를 의미한다. IOPS를 선택하면 EBS의 읽기/쓰기 속도를 선택할 수 있고, 표준(standard)를 선택하면 IOPS의 값이 100으로 기본설정된다. (통상 7500rpm 속도의 하드디스크의 IOPS를 75~100 정도로 잡는다)

EC2 인스턴스에 EBS 붙이기

생성한 EBS를 EC2 인스턴스에 붙이기 위해서는 EBS 볼륨에 마우스 커서를 올려놓고 오른쪽 클릭을 한다. 이때 볼륨의 상태(State)가 Avaliable인 것만 EBS 인스턴스에 붙일 수 있다. in-use는 이미 사용중이라는 의미다. 또 볼륨과 인스턴스는 같은 가용성 존에 위치하고 있어야 한다. 아래는 Attach Volume를 선택한 결과다.

  • Instances :  볼륨을 붙이려는 인스턴스를 지정한다.
  • Devices : 마운트 하려는 장치의 이름을 지정한다. 마운트에 대한 자세한 설명은 생활코딩 리눅스 수업을 참고 한다. 마운트하는 장치의 이름은 리눅스의 버전에 따라서 달라질 수 있다. 구체적으로 마운트 하는 방법은 뒤에서 살펴본다.
  • Yes, Attach를 누르면 ECS 인스턴스에 EBS 볼륨이 장착된다.

EC2 인스턴스에서 EBS 인식하기

콘솔의 사이드 바에서 인스턴스를 선택해서 인스턴스 리스트 화면으로 이동한다. EBS를 붙인 인스턴스를 선택하면 인스턴스에 대한 디테일에 방금 추가한 볼륨의 이름이 아래와 같이 있는지 확인한다.

터미널을 이용해서 인스턴스에 접속한다. 인스턴스에 접근하는 방법은 이전 수업 '인스턴스 생성'을 참고 한다.

터미널에서 아래와 같이 입력한다. sdf는 위에서 확인한 Block Devices의 이름으로 변경해야 한다.

주의 : 아래의 명령은 볼륨의 데이터를 삭제한다. 인스턴스를 최초로 추가할 때만 실행한다.
1
sudo mkfs.ext4 /dev/sdf

아래와 같은 결과가 출력된다면 리눅스 커널에서 디바이스의 이름을 xvdf~xvdp로 변경했기 때문일 수 있다. 이런 경우 이름을 직접 찾아야 한다.

아래와 같이 명령을 입력한다.

1
df;

필자의 인스턴스는 위와 같이 출력된다. 붉은 색으로 강조한 표시는 /dev/xvda1이 이미 사용중이라는 뜻이다. 그럼 xvd로 시작하는 디바이스 중에 최근에 추가된 것이 우리가 찾고 있는 디바이스라고 추론 할 수 있을 것이다. 아래와 같이 입력한다.

1
ls -al /dev/xvd*

추가 된 디바이스의 이름이 /dev/xvdf 라는 것을 알아냈다. 이제 포멧을 다시 시도해보자.

주의 : 아래의 명령은 볼륨의 데이터를 삭제한다. 인스턴스를 최초로 추가할 때만 실행한다.
1
sudo mkfs.ext4 /dev/xvdf

마운트한 볼륨을 추가할 디렉토리를 생성한다. files라는 이름을 사용하고 싶다면 아래와 같이 한다.

1
sudo mkdir /files;

/files 디렉토리에 볼륨을 마운트하자.

1
sudo mount /dev/xvdf /files;

df 명령을 입력해서 아래와 같이 디바이스가 추가된 것을 확인한다.

EC2 인스턴스에서 EBS 볼륨 떼어내기

장치를 제거한다. (마운트를 해제한다) 

 

1
sudo umount /dev/xvdf;

EBS 볼륨 목록에서 해당 볼륨을 선택하고 Detach Volume를 선택한다. 

이 과정을 반복하면 EBS 볼륨을 다른 EC2 인스턴스에 붙일 수 있다. 

既存EC2インスタンスにEBSボリュームを追加(アタッチ)する

この記事は最終更新日から1年以上が経過しています。

概要

既に構築済みのEC2インスタンスに新しくEBSボリュームを追加してEC2で使用できるようにします。

EBSとは

Elastic Block Storeの略
EC2への仮想外付けストレージサービス
・サイズは1GB単位で~1TBまで
・サイズ/期間/IOで課金される

詳しくは下記を参照してください
[AWSマイスターシリーズ] Elastic Block Store(EBS)

作業イメージ図

名称未設定-1.png

作業手順

EBSボリュームを作成する

1.AWS ManagementConsoleの「Services」から「EC2」を選択します。

2.左側のナビゲーションから「ELASTIC BLOCK STORE」の「Volumes」を開いて「Create Volumes」をクリックして作成ダイアログを開きます。

EC2_Management_Console.png

3.必要な項目を入力して、「Create」をクリックしてEBSを作成する

EC2_Management_Console.png

項目名説明
VolumeType通常は「standard」を選択。I/O性能を設定したい場合は「Provisioned IOPS」を選択。
Sizeボリュームサイズ(ストレージサイズ)を入力します。
IOPS「Provisioned IOPS」を選択した場合のI/O性能を設定します。
Availability ZoneEBSを作成するゾーンを設定します。注意:ゾーンは追加したいEC2インスタンスと同じゾーンを指定しましょう
SnapshotEBS作成時に元になるSnapshotを指定する場合に使用します。Snapshotの内容を使いたいけど、Snapshotとは異なるボリュームサイズにしたい時等に使用します。

4.作成したEBSが一覧に追加され、「State」が「available」になったらEBS作成完了です。
EC2_Management_Console.png

既存のEC2に作成したEBSを追加する

1.EBS一覧から追加したいEBSにチェックを入れて、「Actions」メニューまたは右クリックメニューで「Attach Volume」を選択します

EC2_Management_Console.png

2.必要な項目を入力して、「Attach」をクリックしてEC2にEBSを追加します。
EC2_Management_Console.png

項目名説明
VolumeType選択したEBSボリューム
InstanceEBSを追加したいEC2インスタンスを指定する。追加可能なEC2リストから選択するだけです。
DeviceEC2内でのデバイス名を指定します。通常はInstanceを選択した時点で最適なデバイス名が自動で設定されます。手動で設定ももちろん可能です。

3.EBS一覧で正常に追加できたか確認する。

EC2_Management_Console.png

EBSボリュームをEC2にマウントする

追加したEBSをEC2で使用できるようにマウントします。

1.EC2へSSH接続する。

操作するEC2のOSはUbuntuですが、基本的にAmazon Linuxでも同様の操作になります。
ubuntuだと/dev/sdgは/dev/xvdgになっている。

2.現在のマウント状態を確認する(/dev/sdgはまだマウントされていない)

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       20G  8.0G   11G  43% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev            816M  8.0K  816M   1% /dev
tmpfs           166M  200K  166M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            827M     0  827M   0% /run/shm
none            100M     0  100M   0% /run/user
/dev/xvdf        20G  2.0G   17G  11% /data

3.EBSボリュームをフォーマットし、/data2にマウントします。

$ sudo su -

# mkfs -t ext4 /dev/xvdg
mke2fs 1.42.5 (29-Jul-2012)
Filesystem label=
・
・
・
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

# mkdir /data2
# mount /dev/xvdg /data2
# exit

4.正常にマウントできているか確認する

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       20G  8.0G   11G  43% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev            816M  8.0K  816M   1% /dev
tmpfs           166M  200K  166M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            827M     0  827M   0% /run/shm
none            100M     0  100M   0% /run/user
/dev/xvdf        20G  2.0G   17G  11% /data
/dev/xvdg        99G   60M   94G   1% /data2

5.書き込みが正常にできるか確認する

# mkdir -p /data2/test/file/to/ 
# echo "this is text file" > /data2/test/file/to/test.txt
# cat /data2/test/file/to/test.txt
this is text file

自動マウントを設定する

このままだとEC2インスタンスをSTOP等をした際に、マウントが外れてしまうので、自動マウントするように設定しておく。
意外と忘れがち。
以下を/etc/fstabの末尾に追加する。

1.自動マウントの設定をする

/dev/xvdg /data2 ext4 defaults 1 1

2.(可能なら)自動マウントできているか確認する
EC2をAWS ConsoleからStop -> Startをして自動マウントできているか確認する


+ Recent posts