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

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

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

Содержание

EC2

Запускаем EC2:

[simterm]

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

[/simterm]

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

[simterm]

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

[/simterm]

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

[simterm]

$ ssh [email protected] -i .ssh/my-cluster.pem 
...
ubuntu@ip-172-31-34-112:~$

[/simterm]

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

[simterm]

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

[/simterm]

EBS

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

[simterm]

$ 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
}

[/simterm]

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

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

[simterm]

$ 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"
}

[/simterm]

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

[simterm]

# 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

[/simterm]

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

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

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

[simterm]

# 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.

[/simterm]

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

[simterm]

# 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 

[/simterm]

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

[simterm]

# mkfs.ext4 /dev/xvdb1

[/simterm]

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

[simterm]

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

[/simterm]

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

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

[simterm]

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

[/simterm]

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

[simterm]

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

[/simterm]

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

[simterm]

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

[/simterm]

Проверяем:

[simterm]

$ 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

[/simterm]

Готово.