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

A

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.

A proposito di me

Dario Frongillo

Uno degli admin di Italiancoders e dell iniziativa devtalks.
Dario Frongillo è un software engineer e architect, specializzato in Web API, Middleware e Backend in ambito cloud native. Attualmente lavora presso NTT DATA, realtà di consulenza internazionale.
E' membro e contributor in diverse community italiane per developers; Nel 2017 fonda italiancoders.it, una community di blogger italiani che divulga articoli, video e contenuti per developers.

Gli articoli più letti

Articoli recenti

Commenti recenti