AWS: смонтировать EBS к EC2

Автор: | 02/22/2017

Задача — поднять EC2 интанс и добавить второй жесткий диск (Elastic Block Store).

EC2

Запускаем EC2:

aws ec2 run-instances --image-id ami-cbfcd2b8 --count 1 --instance-type t2.nano --key-name my-cluster

Ждём загрузки, получаем IP, подключаемся:

aws ec2 describe-instances --instance-ids i-0ed219a6624f04b01 --query '[Reservations[*].Instances[*].NetworkInterfaces[*].Association.PublicIp]' --output text
34.249.11.227

Подключаемся:

ssh ubuntu@34.249.11.227 -i .ssh/my-cluster.pem
...
ubuntu@ip-172-31-34-112:~$

Проверяем диски:

lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0   8G  0 disk
└─xvda1 202:1    0   8G  0 part /

EBS

Создаём новый диск:

aws ec2 create-volume --size 50 --no-encrypted --volume-type gp2 --availability-zone eu-west-1b
{
"VolumeId": "vol-03a6adccdadcda8b0",
"Size": 50,
"SnapshotId": "",
"AvailabilityZone": "eu-west-1b",
"State": "creating",
"CreateTime": "2017-02-22T11:41:37.370Z",
"VolumeType": "gp2",
"Iops": 150,
"Encrypted": false
}

--availability-zoneEBS должен находится в той же AZ, что и интанс, к которому он будет подключаться.

Подключаем его к интансу:

aws ec2 create-attach-volume --volume-id vol-03a6adccdadcda8b0 --instance-id i-0ed219a6624f04b01 --device xvdb
{
"VolumeId": "vol-03a6adccdadcda8b0",
"InstanceId": "i-0ed219a6624f04b01",
"Device": "xvdb",
"State": "attaching",
"AttachTime": "2017-02-22T11:42:05.264Z"
}

Возвращаемся к машине, проверяем диски:

lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0   8G  0 disk
└─xvda1 202:1    0   8G  0 part /
xvdb    202:16   0  50G  0 disk

Вот наш новый xvdb.

Дальше — стандартно. Создаём раздел, файловую систему и обновляем fstab.

Создаём раздел с помощью fdisk:

fdisk /dev/xvdb
Welcome to fdisk (util-linux 2.28.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x94dd589b.
Command (m for help): n
Partition type
p   primary (0 primary, 0 extended, 4 free)
e   extended (container for logical partitions)
Select (default p):
Using default response p.
Partition number (1-4, default 1):
First sector (2048-104857599, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-104857599, default 104857599):
Created a new partition 1 of type 'Linux' and of size 50 GiB.
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

Проверяем его разделы:

lsblk /dev/xvdb
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvdb    202:16   0  50G  0 disk
└─xvdb1 202:17   0  50G  0 part

Создаём файловую систему:

mkfs.ext4 /dev/xvdb1

Создаём точку монтирования, монтируем раздел:

mkdir /jenkins
mount /dev/xvdb1 /jenkins/
mount /dev/xvdb1 /jenkins/

Обвновляем /etc/fstab, добавляем монтирование при старте машины.

Находим UUID раздела:

blkid /dev/xvdb1
/dev/xvdb1: UUID="1e87f4a3-3cdb-40ca-b0ff-4c237dba096e" TYPE="ext4" PARTUUID="94dd589b-01"

Редактируем /etc/fstabnofail опцией):

cat /etc/fstab
LABEL=cloudimg-rootfs   /        ext4   defaults        0 0
UUID=1e87f4a3-3cdb-40ca-b0ff-4c237dba096e /jenkins ext4 defaults,nofail 0 2

Бутаем машину:

reboot
Connection to 34.249.11.227 closed by remote host.
Connection to 34.249.11.227 closed.

Проверяем:

lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0   8G  0 disk
└─xvda1 202:1    0   8G  0 part /
xvdb    202:16   0  50G  0 disk
└─xvdb1 202:17   0  50G  0 part /jenkins
ls -l /jenkins/
total 16
drwx------ 2 root root 16384 Feb 22 11:45 lost+found

Готово.