Attaccare un nuovo disco permanente ad una instanza VM [GCP]

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.

https://italiancoders.it/attaccare-un-nuovo-disco-permanente-ad-una-instanza-vm-gcloud/