scenario
Hai una istanza VM attaccata ad un solo disco persistente che fa da boot della macchina e adesso hai bisogno di attaccare un secondo disco ( non di boot) alla tua VM.
step 0: Crea l istanza vm
Se hai gia’ la tua macchina virtuale salta questo step. Al fine dell esercizio in questo articolo andiamo a creare una nuova VM da zero
gcloud compute instances create test-vm --zone us-central1-a
colleghiamoci in ssh
gcloud compute ssh test-vm --zone us-central1-a
con il comando disk free possiamo dare un occhio al nostro filesystem e ai dischi montati.
Dario@test-vm:~$ df -h Filesystem Size Used Avail Use% Mounted on udev 1.8G 0 1.8G 0% /dev tmpfs 370M 5.0M 365M 2% /run /dev/sda1 9.7G 1.3G 8.0G 14% / tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/sda15 124M 7.9M 116M 7% /boot/efi tmpfs 370M 0 370M 0% /run/user/1000
Come si evince dal risultato del disk free command, di default google cloud va a creare per la nostra VM un disco permanente con al suo interno l immagine di avvio della VM.
step 1: crea un secondo disco permanente
Supponiamo di aver bisogno per la nostra VM di un secondo disco per salvare in modo permanente i nostri dati. Andiamo a creare un secondo disco con il nome data-disk nella medesima regione della nostra VM.
PS C:\Users\Dario> gcloud compute disks create data-disk --zone us-central1-a Created [https://www.googleapis.com/compute/v1/projects/pivotal-realm-277013/zones/us-central1-a/disks/data-disk]. NAME ZONE SIZE_GB TYPE STATUS data-disk us-central1-a 500 pd-standard READY New disks are unformatted. You must format and mount a disk before it can be used. You can find instructions on how to do this at: https://cloud.google.com/compute/docs/disks/add-persistent-disk#formatting
step 2: attacca il disco alla vm
gcloud compute instances attach-disk test-vm --disk data-disk --zone us-central1-a
step 3: colleghiamoci in ssh alla vm e verifichiamo
gcloud compute ssh test-vm --zone us-central1-a
Una volta connessi in ssh nella nostra VM andiamo a verificare di nuovo il risultato del comando disk free.
Dario@test-vm:~$ df -h Filesystem Size Used Avail Use% Mounted on udev 1.8G 0 1.8G 0% /dev tmpfs 370M 9.6M 361M 3% /run /dev/sda1 9.7G 1.3G 8.0G 14% / tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/sda15 124M 7.9M 116M 7% /boot/efi tmpfs 370M 0 370M 0% /run/user/1000
Non vediamo nessuna evidenza del nuovo disco attaccato alla nostra vm. Per riuscire ad utilizzare il nuovo disco si dovra’ formattarlo e montarlo nel nostro filesystem.
step 4: formattiamo il nuovo disco
Inanzitutto andiamo a recuperare il device id del nuovo disco. Per recuperarlo facciamo uso del comando lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 10G 0 disk ├─sda1 8:1 0 9.9G 0 part / ├─sda14 8:14 0 3M 0 part └─sda15 8:15 0 124M 0 part /boot/efi sdb 8:16 0 500G 0 disk
che ci da evidenza che sdb e’ il device id del nuovo disco.
Adesso procediamo a formattare il disco
sudo mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/sdb
step 5: montiamo sul fs il nuovo disco
Andiamo a creare la folder su cui monteremo il nuovo disco.
sudo mkdir -p /mnt/pd0
Montiamo su tale folder il nostro disco che ha device id sdb
sudo mount -o discard,defaults /dev/sdb /mnt/pd0
Configuriamo infine i grant per poter permettere di leggere e scrivere su tale folder per tutti gli user
sudo chmod a+w /mnt/pd0
Infine verifichiamo la nuova situazione dei dischi la quale evidenzia il successo della nostra operazione
Dario@test-vm:~$ df -h Filesystem Size Used Avail Use% Mounted on udev 1.8G 0 1.8G 0% /dev tmpfs 370M 9.6M 361M 3% /run /dev/sda1 9.7G 1.3G 8.0G 14% / tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/sda15 124M 7.9M 116M 7% /boot/efi tmpfs 370M 0 370M 0% /run/user/10
step 6: impostiamo l auto-mount
Se riavviamo la vm troveremo il disco di nuovo non montato. Per non ripetere ad ogni riavvio le operazioni di mount possiamo configurare la macchina per auto-montare il nuovo disco ad ogni riavvio. Per fare questo occorre modificare opportunamente il file etc/fstab aggiungendo una nuova entry
UUID=[UUID_VALUE] /mnt/[MNT_DIR] ext4 discard,defaults,[NOFAIL_OPTION] 0 2
dove l UUI puo essere recuperato usando
sudo blkid /dev/[DEVICE_ID]
Per fare questo con unico comando basterà eseguire
echo UUID=`sudo blkid -s UUID -o value /dev/sdb` /mnt/pd0 ext4 discard,defaults,[NOFAIL_OPTION] 0 2 | sudo tee -a /etc/fstab
verificando la bonta’ dell operazione con il comando
cat /etc/fstab
CONCLUSIONI
In questo semplice tutorial abbiamo capito come attaccare ad una VM un disco non di avvio e come configurare quest’ultimo affinché possa essere utilizzato.