Modyfikacja ustawień maszyny wirtualnej w chmurze to czysta przyjemność. Wszystko dzieje się samo, wystarczy tylko wyklikać nowe zasoby i już. Czy jednak aby na pewno? Załóżmy, że na AWS chcę dodać do instancji EC2 z Linuxem dodatkowy zasób dyskowy.
Zaczyna się przyjemnie od dodania nowego wolumenu EBS w EC2 >> Volumes >> Create Volume
Najważniejsze parametry, to oprócz typu i rozmiaru, również region, w kórym ten dysk jest utworzony. Dysk da się podłączyć tylko do maszyn, które są w tym samym regionie.
Po utworzeniu wolumenu można wejść do jego właściwości i z menu Action wybrać Attach:
W formularzu podajemy, dla jakiej instancji ten wolumen ma być dostępny. Można też skonfigurować nazwę urządzenia dyskowego:
Tutaj utworzony wolumen zostanie podłączony do Linuxa poprzez urządzenie /dev/sdg
Teraz pora na zabawę po stronie systemu operacyjnego. Najpierw wylistujmy wolumeny. Jak widać w wyniku tej komendy, nowe urządzenie xvdg pojawiło się na liście:
ubuntu:~$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 25.1M 1 loop /snap/amazon-ssm-agent/5656 loop1 7:1 0 55.5M 1 loop /snap/core18/2409 loop2 7:2 0 61.9M 1 loop /snap/core20/1518 loop3 7:3 0 79.9M 1 loop /snap/lxd/22923 loop4 7:4 0 47M 1 loop /snap/snapd/16010 xvda 202:0 0 8G 0 disk ├─xvda1 202:1 0 7.9G 0 part / ├─xvda14 202:14 0 4M 0 part └─xvda15 202:15 0 106M 0 part /boot/efi xvdf 202:80 0 1G 0 disk /newvolume xvdg 202:96 0 1G 0 disk
Operacje na dyskach niestety należą do tych bardziej krytycznych, bo łatwo zamazać istniejące dane przez przypadek. Dlatego warto zawsze sprawdzać, czy dysk jest rzeczywiście pusty. Można się w tym celu posłużyć poleceniem file. W zaprezentowanym poniżej wyniku widać, że dysk xvdg jest pusty, ale dysk xvdf ma już istniejący file system:
ubuntu:~$ sudo file -s /dev/xvdg /dev/xvdg: data ubuntu:~$ sudo file -s /dev/xvdf /dev/xvdf: Linux rev 1.0 ext4 filesystem data, UUID=1865b1e2-0734-47f6-8ed9-9492bab0348a (needs journal recovery) (extents) (64bit) (large files) (huge files)
Mając pewność, że to TEN dysk, można na nim utworzyć system plików:
ubuntu:~$ sudo mkfs -t ext4 /dev/xvdg mke2fs 1.46.5 (30-Dec-2021) Creating filesystem with 262144 4k blocks and 65536 inodes Filesystem UUID: 12e55613-5f1a-4ca1-9316-e8541fd6a48e Superblock backups stored on blocks: 32768, 98304, 163840, 229376 Allocating group tables: done Writing inode tables: done Creating journal (8192 blocks): done Writing superblocks and filesystem accounting information: done
Teraz pozostaje zmontować nowy dysk. Zaczynamy od utworzenia nowego katalogu, a następnie ręcznie montujemy system plików z nowego wolumenu. Poleceniem df można sprawdzić, że montowanie powiodło się:
ubuntu:~$ sudo mkdir /vol_g ubuntu:~$ sudo mount /dev/xvdg /vol_g/ ubuntu:~$ df -h Filesystem Size Used Avail Use% Mounted on /dev/root 7.6G 2.2G 5.5G 29% / tmpfs 484M 0 484M 0% /dev/shm tmpfs 194M 880K 193M 1% /run tmpfs 5.0M 0 5.0M 0% /run/lock /dev/xvdf 974M 24K 907M 1% /newvolume /dev/xvda15 105M 5.3M 100M 5% /boot/efi tmpfs 97M 4.0K 97M 1% /run/user/1000 /dev/xvdg 974M 24K 907M 1% /vol_g
Jeśli system plików miałby się montować każdorazowo przy uruchomieniu Linuxa pozostanie jeszcze modyfikacja pliku /etc/fstab. Należy w nim dodać linijkę podobną do ostatniej poniżej:
LABEL=cloudimg-rootfs / ext4 discard,errors=remount-ro 0 1 LABEL=UEFI /boot/efi vfat umask=0077 0 1 /dev/xvdf /newvolume ext4 defaults,nofail 0 0 /dev/xvdg /vol_g ext4 defaults,nofail 0 0
Żeby przetestować tą konfigurację można teraz odmontować system plików i zmontować go ponownie poleceniem mount -a
ubuntu:~$ sudo umount /vol_g ubuntu:~$ sudo mount -a
Ponowne uruchomienie df pozwoli sprawdzić, że system plików jest dostępny:
ubuntu:~$ df -h Filesystem Size Used Avail Use% Mounted on /dev/root 7.6G 2.2G 5.5G 29% / tmpfs 484M 0 484M 0% /dev/shm tmpfs 194M 880K 193M 1% /run tmpfs 5.0M 0 5.0M 0% /run/lock /dev/xvdf 974M 24K 907M 1% /newvolume /dev/xvda15 105M 5.3M 100M 5% /boot/efi tmpfs 97M 4.0K 97M 1% /run/user/1000 /dev/xvdg 974M 24K 907M 1% /vol_g