Proxmox – Aggiungere dischi fisici ad una VM

Ipotiziamo di avere un server proxmox con alcune macchine virtuali.

Ad una di queste macchine virtuali si vuole collegare uno o piu’ dischi fisici, cioe gli si vuole dedicare un nuovo disco, magari non per espandere il sistema ma semplicemente per aggiungere storage.

immaginiamo di voler collegare due nuovi dischi alla VM con id 250.

Una volta collegati e riavviato il server dobbiamo identificarli con il comando lsblk

{root@proxmox-server /}$ lsblk 
NAME     MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda        8:0    0 953.9G  0 disk 
├─sda1     8:1    0  1007K  0 part 
├─sda2     8:2    0     1G  0 part 
└─sda3     8:3    0 952.9G  0 part 
sdb        8:16   0 953.9G  0 disk 
├─sdb1     8:17   0  1007K  0 part 
├─sdb2     8:18   0     1G  0 part 
└─sdb3     8:19   0 952.9G  0 part 
sdc        8:32   0 465.8G  0 disk 
sdd        8:48   0 465.8G  0 disk 
zd0      230:0    0    50G  0 disk 
├─zd0p1  230:1    0  1007K  0 part 
├─zd0p2  230:2    0   512M  0 part 
└─zd0p3  230:3    0  49.5G  0 part 
zd16     230:16   0  16.5G  0 disk 
├─zd16p1 230:17   0     2G  0 part 
└─zd16p2 230:18   0  14.5G  0 part 

I due dischi che ci interessano sono SDC e SDD, infatti una volta installati nella VM li gestiremo in raid1 con zfs.

Ora dobbiamo trovarne l’id e per farlo lo crechiamo con ls -n /dev/disk/by-id/

{root@proxmox-server /}$ ls -n /dev/disk/by-id/
total 0
lrwxrwxrwx 1 0 0  9 Aug  4 17:21 ata-F -> ../../sda
lrwxrwxrwx 1 0 0 10 Aug  4 17:21 ata-F1-part1 -> ../../sda1
lrwxrwxrwx 1 0 0 10 Aug  4 17:21 ata-F-part2 -> ../../sda2
lrwxrwxrwx 1 0 0 10 Aug  4 17:21 ata-F-part3 -> ../../sda3

lrwxrwxrwx 1 0 0  9 Aug  4 17:52 ata-Hitachi_HDP725050GLA360_TANTAROBA1 -> ../../sdd
lrwxrwxrwx 1 0 0  9 Aug  4 17:52 ata-Hitachi_HDP725050GLA360_TANTAROBA2 -> ../../sdc

lrwxrwxrwx 1 0 0  9 Aug  4 17:21 ata-SSD -> ../../sdb
lrwxrwxrwx 1 0 0 10 Aug  4 17:21 ata-SSD-part1 -> ../../sdb1
lrwxrwxrwx 1 0 0 10 Aug  4 17:21 ata-SSD-part2 -> ../../sdb2
lrwxrwxrwx 1 0 0 10 Aug  4 17:21 ata-SSD-part3 -> ../../sdb3
lrwxrwxrwx 1 0 0 12 Aug  4 17:21 lvm- -> ../../zd16p2
lrwxrwxrwx 1 0 0 11 Aug  4 17:49 lvm- -> ../../zd0p3

Una volta individuati gli id si collegano semplicemente alla macchina con il comando:

{root@proxmox-server /}$ /sbin/qm set 250 -virtio2 /dev/disk/by-id/ata-Hitachi_HDP725050GLA360_TANTAROBA1 
{root@proxmox-server /}$ /sbin/qm set 250 -virtio3 /dev/disk/by-id/ata-Hitachi_HDP725050GLA360_TANTAROBA2

Una volta collegati li si ritrovera’ all’interno delle configurazioni della VM.

Ed ora si possono utilizare per cio’ che si vuole direttamente nella VM.

Cisco IP PHONE SPA504G aggiornare firmware e lingua

Foto 1 di 4

Mi hanno recentemente regalato un paio di datati IP Phone della Cisco, dopo aver verificato che si accendano ho pensato di perderci un po’ di tempo ed aggiornarli all’ultimo firmware disponibile, girovagando un po su internet ho trovato la procedura giusta e la riporto qui con i file che ho usato io.

Tanto per iniziare ho resettato l’apparato alle impostazioni di fabbrica.

Per farlo e’ stato sufficiente selezionare nel menu delle impostazioni del telefono la voce

14 ripristino impostazioni di fabbrica

Una volta fatto questo il telefono si resetta e, una volta collegato alla rete via cavo, acquisisce un indirizzo al quale e’ possibile risalire sempre dal menu di configurazione ( 9 Rete) o dal proprio router.

Conoscendo l’ip del telefono sulla propria rete si puo accedere alla sua interfaccia web digitandolo in un browser

Una volta avvenuto l’accesso e’ possibile gestire il telefono in ogni sua parte.

I miei telefoni dopo il reset non avevano nessuna password registrata quindi e’ stato possibile accedere in alto a destra anche alla sezione Admin + Advanced.

Ora serve il nuovo firmware che io ho trovato QUI

Il nuovo firmware deve essere messo a disposizione via http per il download sul telefono… in pratica deve essere disponibile sulla rete locale via http

Con la stringa :

serv=tftp://IP LOCALE DEL SERVERTFTP/;d0=English;x0=spa50x_30x_en_v756.xml;d1=Italian;x1=spa50x_30x_it_v756.xml

Inserita alla voce delle impostazioni: Regional -> Miscellaneous -> Dictionary Server Script

Per pubblicare velocemente un file in http io su linux ho usato webfs con uno scriptino che mi sono fatto per gestirlo velocemente

# !/bin/bash
#       _                             _      __         _ 
#  __ _| |__   __ _     __      _____| |__  / _|___  __| |
# / _` | '_ \ / _` |____\ \ /\ / / _ \ '_ \| |_/ __|/ _` |
#| (_| | |_) | (_| |_____\ V  V /  __/ |_) |  _\__ \ (_| |
# \__,_|_.__/ \__,_|      \_/\_/ \___|_.__/|_| |___/\__,_|
#                                            
##############################################################################
# Semplice script che avvia webfsd nella carella attuale o altra specificata
# Per comodita' elenca i file condivisi e l'ip:porta necessari per accedervi
#
##############################################################################
#   OVVIAMENTE:
#
#             DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
#                     Version 2, December 2004
#
#  Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
#
#  Everyone is permitted to copy and distribute verbatim or modified
#  copies of this license document, and changing it is allowed as long
#  as the name is changed.
#
#             DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
#    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
#
#   0. You just DO WHAT THE FUCK YOU WANT TO.
##############################################################################
#   OPPURE:
#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, either version 3 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
##############################################################################
#  Script-source by Paolo Baviero  <aba@baviero.it>  https://baviero.com

function usage()
        {
        echo "================= USO DI ${progname} ===================
        Script per condividere velocemente una cartella via http
        Basta indicare la cartella e questa viene condivisa sulla rete
        locale. Se non viene indicata alcuna cartella condivide quella
        attuale.

        Sintassi: ${progname}  /dir/desiderata

        hint to abadon@baviero.it"
        exit
        }

progname=$(basename ${0})

#Controllo se eseguito come utente root
if test $(id -u) = 0 ; then
    echo "Utente root, esecuzione script non permessa per motivi di sicurezza"
    exit
fi
# Verifica se è presente un parametro da riga di comando (non-vuota)
if [ -n "$1" ];then
        if [[ "$1" == "-h" || "$1" == "h" ]]; then
                usage
        fi
        if [[ -d "$1" ]]; then
                WEBFS_DIR="$1"
        else
                echo "Directory inesistente"
                exit
        fi
else
        WEBFS_DIR="."
fi

echo -e "Web share $WEBFS_DIR dir"
echo -e " Files-subdir shared are:\n"
ls -lh $WEBFS_DIR
# Trovo l'ip del pc nella rete locale
WEBFS_IP=$(ip route get 8.8.8.8 | awk -F"src " 'NR==1{split($2,a," ");print a[1]}')
# Imposto la porta
WEBFS_PORT="8080"
# Scrivo le info
echo -e "\nIP ADDRESS and PORT"
echo -e "$WEBFS_IP:$WEBFS_PORT\n"
echo "Press Control-C to EXIT"
# Eseguo comando vero e proprio, rimuovere "&> /dev/null" per vederne l'output 
webfsd -d -r $WEBFS_DIR -p $WEBFS_PORT &> /dev/null

Passaggi per Aggiungere/Sostituire un Disco al RAID1 ZFS su Proxmox

Stavo provando PROXMOX, il mio intento era di riutilizzare per la prova due vecchi dischi (256Gb e 320Gb) da mettere in raid1 (copia) con filesystem ZFS.

L’installer permette di creare un raid1 ZFS ma NON con due dischi di diverse dimensioni e questo e’ stato un problema. Per ovviare ho installato il sistema su un disco solo (il piu’ piccolo) con filesystem ZFS e successivamente ho creato il raid.

Ecco come installare un secondo disco.

Supponiamo questo scenario

  • Disco origine: /dev/sda (256GB)
  • Disco destinazione: /dev/sdb (320GB)

Cancella il Disco di Destinazione (se non gia’ vuoto o nuovo):

Utilizza wipefs per rimuovere tutte le firme delle partizioni dal disco di destinazione (/dev/sdb):

wipefs -a /dev/sdb

Copia le Partizioni dal Disco di Origine:

Usa sgdisk per copiare le partizioni dal disco di origine (/dev/sda) al disco di destinazione (/dev/sdb):

sgdisk /dev/sda -R /dev/sdb

Cambia l’ID del Disco di Destinazione:

Cambia l’ID del disco di destinazione per assicurarti che sia unico:

sgdisk -G /dev/sdb

Formatta la Partizione di Avvio:

La prima cosa da fare e’ identificare quale e’ la giusta partizione:

fdisk -l /dev/sda

Questo restituira’ la tabella delle partizioni del disco di origine che dopo i comandi appena eseguiti deve essere uguale sul disco di destinazione (fdisk -l /dev/sdb per controllare)

root@proxmox:~# fdisk -l /dev/sdb
Disk /dev/sdb: 298.09 GiB, 320072933376 bytes, 625142448 sectors
Disk model: WDC WD3200AAJS-2
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: FC9BC34B-C37B-435A-BE68-2B06E6F80D3C

Device       Start       End   Sectors   Size Type
/dev/sdb1       34      2047      2014  1007K BIOS boot
/dev/sdb2     2048   2099199   2097152     1G EFI System
/dev/sdb3  2099200 488397134 486297935 231.9G Solaris /usr & Apple ZFS

Da qui si vede che la partizione di avvio e’ sdb2, e quindi si utilizza proxmox-boot-tool per formattare la partizione di avvio sul disco di destinazione (/dev/sdb2):

proxmox-boot-tool format /dev/sdb2

Inizializza la Partizione di Avvio:

Inizializza la partizione di avvio sul disco di destinazione:

proxmox-boot-tool init /dev/sdb2

Aggiungi il Disco al Pool ZFS:

A questo punto devi identificare il nome del primo “disco” nel raid, per farlo basta il comando:

    zpool status

Che restituira’ qualcosa tipo:

root@proxmox:~# zpool status -v
  pool: rpool
 state: ONLINE
config:

        NAME                                                      STATE     READ WRITE CKSUM
        rpool                                                     ONLINE       0     0     0
          ata-Hitachi_HTS543225L9A300_081112FB0F00LLJLE3DB-part3  ONLINE       0     0     0

errors: No known data errors

Aggiungi il disco di destinazione (/dev/sdb3) al pool ZFS esistente (rpool), unendo i due dischi:

zpool attach rpool ata-Hitachi_HTS543225L9A300_081112FB0F00LLJLE3DB-part3 /dev/sdb3

Verifica lo Stato del Pool ZFS:

Controlla lo stato del pool ZFS per assicurarti che il processo di resilvering sia iniziato e che il pool sia in stato ONLINE:

    zpool status

Ed ecco fatto, ora i due disch sono in raid1 e sono uno la copia dell’altro.

E se uno dei due dischi si rompe?

Se uno dei due dischi si dovesse rompere l’altro e’ in grado di fare il boot del sistema e far funzionare i servizi regolarmente. Questo ti dara’ inoltre il tempo e gli strumenti per sostituirlo.

il comando zpool status dovrebbe restituire qualcosa tipo:

root@proxmox:~# zpool status
  pool: rpool
 state: DEGRADED
status: One or more devices could not be used because the label is missing or
        invalid.  Sufficient replicas exist for the pool to continue
        functioning in a degraded state.
action: Replace the device using 'zpool replace'.
   see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-4J
  scan: resilvered 59.8G in 00:30:10 with 0 errors on Wed Jul  3 19:39:59 2024
config:

        NAME                    STATE     READ WRITE CKSUM
        rpool                   DEGRADED     0     0     0
          mirror-0              DEGRADED     0     0     0
            505977634126597088  UNAVAIL      0     0     0  was /dev/disk/by-id/ata-Hitachi_HTS543225L9A300_081112FB0F00LLJLE3DB-part3
            sda3                ONLINE       0     0     0

errors: No known data errors

anche nella interfaccia web di proxmox si vede il degrado

Il disco che prima era di origine ora non e’ piu’ disponibile. Se seguissimo il sistema del “zpool replace” che viene suggerito recupereremo il raid1 dei dati ma il nuovo disco non farebbe il boot perché mancante delle prime due partizioni. Quindi consiglio un bel:

zpool detach rpool /dev/DISCODARIMUOVERE

e rifare la procedura piu’ o meno dall’inizio 🙂