Pour des raisons de portabilité entre Cloud provider j’ai décidé de migrer de l’image “Linux AMI” disponible uniquement sur AWS vers CentOS 6.4 disponible chez tous les Cloud public.
Pendant la migration j’ai cependant constate quelques problèmes avec les disques éphémères de mes instances qui n’été plus accessibles.
Avec la distribution « Linux AMI » et d’autres (par exemple Ubuntu) les disques éphémères sont utilisable dès la création de l’instance :
ubuntu@ip-10-181-140-167:~$ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/xvda1 8125880 739816 6966636 10% / none 4 0 4 0% /sys/fs/cgroup udev 836600 12 836588 1% /dev tmpfs 169208 184 169024 1% /run none 5120 0 5120 0% /run/lock none 846032 0 846032 0% /run/shm none 102400 0 102400 0% /run/user /dev/xvdb 153899044 192068 145889352 1% /mnt
Alors qu’ils ne sont pas disponibles sur CentOS :
[root@ip-10-180-141-3 ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/xvde 8256952 649900 7187624 9% / tmpfs 847608 0 847608 0% /dev/shm [root@ip-10-180-141-3 ~]# ll
Pour pouvoir utiliser les disques éphémères sur une centOS il faut faire 2 choses !
1/demander à avoir les disques éphémères lors de la création de la VM.
Cela peut se faire dans l’interface graphique lors de la création de la VM (fig) ou alors en ligne de commande lors de la création également.
Dans mon cas j’utilise « libcloud » et il faut donc ajouter l’option « block mapping ». Voilà comment procéder :
node = EC2_Conex.create_node(name=aServerName, image=image, size=size,ex_securitygroup=[EC2_SECURITY_GROUP],ex_keyname=EC2_KEY_NAME, ex_blockdevicemappings=[{'DeviceName': '/dev/sdb', 'VirtualName': 'ephemeral0'}])
Ensuite il faut attendre que la VM soit créé pour passer à l’étape 2.
J’ai créé 2 VMs pour montrer la différence « avec » et « sans » l’option.
AVEC :
charles@ip-10-164-17-109:~$ ssh -i /Rbox/conf/Rbox_Proto2.pem root@ec2-107-21-170-54.compute-1.amazonaws.com Last login: Fri Oct 4 08:58:53 2013 from 10.164.17.109 [root@ip-10-182-164-253 ~]# fdisk -l Disk /dev/xvdf: 160.1 GB, 160104972288 bytes 255 heads, 63 sectors/track, 19464 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Disk /dev/xvde: 8589 MB, 8589934592 bytes 255 heads, 63 sectors/track, 1044 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000
Sans
[root@ip-10-28-86-161 ~]# fdisk -l Disk /dev/xvde: 8589 MB, 8589934592 bytes 255 heads, 63 sectors/track, 1044 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 [root@ip-10-28-86-161 ~]# exit
La VM créer sans cette options ne pourra jamais utiliser le stockage éphémère et vous pouvez vous arrêter ici…..
La seconde étape permet d’utiliser les disques. En effet il ne sont pas utilisable pour le moment meme sur la machine qui a le disque éphémère :
[root@ip-10-182-164-253 ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/xvde 8256952 650188 7187336 9% / tmpfs 847608 0 847608 0% /dev/shm [root@ip-10-182-164-253 ~]#
2/Rendre les disques utilisable
[root@ip-10-182-164-253 ~]# fdisk -l Disk /dev/xvdf: 160.1 GB, 160104972288 bytes 255 heads, 63 sectors/track, 19464 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Disk /dev/xvde: 8589 MB, 8589934592 bytes 255 heads, 63 sectors/track, 1044 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 [root@ip-10-182-164-253 ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/xvde 8256952 650188 7187336 9% / tmpfs 847608 0 847608 0% /dev/shm [root@ip-10-182-164-253 ~]# mkfs -t ext4 /dev/xvdf mke2fs 1.41.12 (17-May-2010) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 9773056 inodes, 39088128 blocks 1954406 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=4294967296 1193 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872 Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 34 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. [root@ip-10-182-164-253 ~]# [root@ip-10-182-164-253 ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/xvde 8256952 650188 7187336 9% / tmpfs 847608 0 847608 0% /dev/shm [root@ip-10-182-164-253 ~]# mkdir /ephemeral0 [root@ip-10-182-164-253 ~]# echo "/dev/xvdf /ephemeral0 ext4 defaults 1 2" >> /etc/fstab [root@ip-10-182-164-253 ~]# mount /ephemeral0 [root@ip-10-182-164-253 ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/xvde 8256952 650192 7187332 9% / tmpfs 847608 0 847608 0% /dev/shm /dev/xvdf 153899044 191936 145889484 1% /ephemeral0
Et voilà 😉
Resume :
mkfs -t ext4 /dev/xvdf mkdir /ephemeral0 echo "/dev/xvdf /ephemeral0 ext4 defaults 1 2" >> /etc/fstab mount /ephemeral0