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 🙂

Vecchie storie da lug

Mille anni fa’, in un LUGVR lontano lonatano…

Gente che sviluppa!

Gadget per gli amici

E aggiungo anche PERLE DA CHAT 🙂

Chat lugvr su Azzurra circa 2005:

<Sakura19> tu ci vai sabato?
<lan> io ORGANIZZO
<lan> io SONO IL LINUX DAY
<Sakura19> ah nn lo sapevo
<Sakura19> :)
* Stai parlando in #lugvr
* L'argomento di #lugvr è:  Canale ufficiale del LUG Verona - www.verona.linux.it | Linux DAY 26 novembre 9.00 CEST ITIS G. Marconi | REGISTRATEVI IL NICK PER ESSERE AGGIUNTI ALLE LISTE! | pasqu: http://www.ush.it/2005/11/25/free-web-stat/
* Argomento per #lugvr scelto da ascii il Fri Nov 25 03:16:15 2005
nawebi io sono nawebi
abadon spoof?
bizza_i-gogel http://blogs.guardian.co.uk/technology/archives/2005/11/09/top_20_geek_novels_the_results.html
* bizza_i-gogel è ora conosciuto come bizza
bizza hola
bizza sto per fare il grande passo
bizza e poi sicuramente mi pentiro'
bizza ma sto scaricando ubuntu e la installero' nel portatile
Slippery ahah
Slippery e dopo ti firmi anche tu: "bizza - proud ubuntu user."
bizza eheh
bizza Slippery, se dura tanto, penso che entro una settimana l'avro' gia' formattata
bizza e' che non ho piu' tempo/cazzi di smazzarmi per far andare le cose come dico io, quindi sono alla ricerca di una distribuzione lamera che faccia tutto al posto mio ;)
AxtERicS weilà bizza
bizza ciao AxtERicS 
bizza torno (quasi) subito
AxtERicS ciao ;)
l`off ghe sboro
* l`off è ora conosciuto come lan
AxtERicS quoto
lan non pe dire ma ho i guantini
AxtERicS lan domani ci becchiamo allora mi sà
lan bhe penso di si
lan salvo morti improvvise
AxtERicS asd
AxtERicS così vediamo se mi risolvete sto problema con alsa
lan su che distro?
AxtERicS gentoo
lan bhon
AxtERicS ti accenno...
AxtERicS alsa compilato nel kernel
AxtERicS moduli caricati correttamente alsasound parte giusto
AxtERicS mixer ok
AxtERicS però non si sente nulla
AxtERicS se dò un alsaconf dopo aver boottato funzia tutto
AxtERicS se no nisba
AxtERicS ho pure postato sul forum ma nada
AxtERicS ho aggiornato il kernel ma nada
AxtERicS boh
nuanda bizza: ubuntu non è poi tanto lamera...
nuanda e poi stanno prendendo un sacco di accordi con i grossi vendor di computer
nuanda puoi trovare diversi pc e portalili con ubuntu preinstallata...
nawebi AxtERicS, una cosa tipo alsactl store?
AxtERicS fatto
AxtERicS nada
nawebi azz
lan nuanda: sono scazzato adesso codo l'angioletta finder
bizza nuanda, eh, non so, mi pare lamera..
nuanda lan: bacino bacino...
bizza pero' l'ho vista solo da lontano, quindi magari mi sbaglio
nuanda se per "mi pare lamera" intendi che la installerebbe anche tribu.tribu allora lo è ;-)
lan ahahah tribu.tribu!!!
nuanda comunque io ti dico che sul portatile mi viaggia più veloce della Gentoo che uso....
nawebi cosa avteve cotnro tribu.tribu???
lan niente
nawebi anche voi sieet sttai nawebi!!!!!!!!
lan lo usiamo come niubbo doc 
lan nawebi: bhe io ero come lui
lan lo usiamo per identificare una persona che usa linux e vuole capirci di pi
lan ù
lan tutto qui
nuanda lan: che ta cagà SVEGLIA!
nawebi nno e vero!
nawebi vio lo prednete per in giro!
abadon :)
lan nuanda: cosa?
lan chi?
lan come?
nuanda LAAAANNNNNNNNNNNNNNNNNNN!!!!!
lan nawebi: sei tu tribu.tribu ?
AxtERicS ahuahau
abadon sono piegato :)
lan umh mi sfugge il "perchè ridere"
nawebi secnodo me lan sei un ragazino giovane cne nn sa gnente e crede di esere tabto bravo solol perche sa ricopmilare il cernel
* AxtERicS si è disconnesso (Quit: La vertigine non è paura di cadere ma voglia di volare!)
lan nawebi: pensala come vuoi..
lan nawebi: ma almeno lo so ricompilare :P
abadon l'infato....
* ascii (~ascii@Azzurra-A92B3E2.pool8254.interbusiness.it) è entrato in #lugvr
* ChanServ ha dato lo stato di operatore del canale a ascii
abadon l'infarto....
nuanda lol
nawebi rivincita dei nubi :|
lan AHAHAAHAHH
lan la rivincita dei nerds 
* hobo (~ele@Azzurra-7E1934F.38-151.net24.it) è entrato in #lugvr
nawebi lan ma ci conosciamo
nuanda lan: SVEEEEGGGLLLLIIIIAAAA!!!
* AxtERicS (~axt@Azzurra-82D2751.pool8260.interbusiness.it) è entrato in #lugvr
nawebi nuanda, lan mi sebmra svegio!
lan nawebi: porco cane lo so che sei tribu.tribu 
* AxtERicS è ora conosciuto come afk
lan mica ghe vol tanto
nawebi ????

L’organizzazione di un LINUXDAY

2008

2009

Linux By Night

Scambio di file via terminale, la via semplice!

https://transfer.sh

Era da un po’ che cercavo un sistema semplice per passare file da un pc ad un altro senza dover passare da programmi di posta, cloud, condivisioni di chiavi, webserver improvvisati ecc ecc.

La cosa che mi premeva di piu’ era proprio poter fare tutto da terminale e dopo svariati tentativi (compreso webfs che comunque ha il suo perche’) becco questo servizio!

E’ opensource, gratuito e presente su github (per chi volesse contribuire).

In pratica da shell si invia il file al loro server che lo tiene per 336 ore restituendo un link per il download. Semplice e funzionale! Ovvio che chi ha il link puo scaricare il file quindi non e’ adatto a contenuti sensibili… Ma se il file fosse CIFRATO con GPG PRIMA dell’invio?

Beh, a me e’ piaciuto talmente tanto che ho scritto due semplici script sulla base dei loro esempi e ne sono contento.

Gli script sono i seguenti:

aba-transfer

# !/bin/bash    
# Controllo se c'e' un pipe allo script
if [ -p /dev/stdin ]; then # Pipe di un contenuto
    #file="$(echo $RANDOM| md5sum | head -c 8;echo).aba" # genero nome casuale 
    file="aba-transfer_$(date +%Y-%m-%d_%H-%M-$S).aba" # nome con un senso
    file_name="$file"
    cat >> $file
    echo "Creo QUI il file $file_name prima dell'invio"
else # stdin
    if [ -n "$1" ];then 
        file="$1"
        file_name=$(basename "$1")
        if [ ! -e "$file" ];then 
            echo -e "$file: No such file or directory">&2
            return 1
        fi
    else
        echo -e "Usa il servizio opensource <<< www.transfer.sh >>> per inviare file IN CHIARO su un server esterno e propone un link per il download da remoto.\nPer inviare i file cifrati con GPG utilzzare altro script ---aba-transfer-gpg---\n\nEs: aba-transfer <file|directory>\n... | aba-transfer <file_name>"
        exit 0
    fi
fi

if [ -d "$file" ];then # Se e' una directroy la zippa 
    file_name="$file_name.zip" 
    echo "Invio di una cartella, creo zip file $file_name ed invio..."
    ADDRESS=$((cd "$file"&& zip -r -q - .) | curl --progress-bar --upload-file "-" "https://transfer.sh/$file_name" | tee /dev/null)
else # File
    echo "Invio di $file_name..."
    ADDRESS=$(cat "$file"|curl --progress-bar --upload-file "-" "https://transfer.sh/$file_name"|tee /dev/null)
fi
echo -e "\nSalvo su ~/transfer_history.txt\n"
echo "$(date +%Y-%m-%d_%H-%M-%S) $ADDRESS $file" >> ~/transfer_history.txt
echo -e "Per scaricare:\ncurl $ADDRESS -o $file_name"

E lo stesso ma con la cifratura diretta via chiave gpg.

aba-transfer-gpg

# !/bin/bash    
# Controllo se c'e' un pipe allo script
if [ -p /dev/stdin ]; then # Pipe di un contenuto
    #file="$(echo $RANDOM| md5sum | head -c 8;echo).aba" # genero nome casuale 
    file="aba-transfer_$(date +%Y-%m-%d_%H-%M-%S).aba"
    file_name="$file"
    cat >> $file
    echo "Creo QUI il file $file_name prima dell'invio (SALVATO NON CIFRATO!)"
else # stdin
    if [ -n "$1" ];then 
        file="$1"
        file_name=$(basename "$1")
        if [ ! -e "$file" ];then 
            echo -e "$file: No such file or directory">&2
            return 1
        fi
    else
        echo -e "Usa il servizio opensource << www.transfer.sh >> per inviare file CIFRATO con GPG su un server esterno e propone un link per il download da remoto.\n\nEs: aba-transfer <file|directory>\n... | aba-transfer <file_name>"
        exit 0
    fi
fi

if [ -d "$file" ];then # Se e' una directroy la zippa 
    file_name="$file_name.zip" 
    echo "Invio di una cartella, creo zip file $file_name, lo cifro con GPG e lo invio..."
    ADDRESS=$((cd "$file" && zip -r -q - .) |gpg -ac -o-| curl -X PUT --progress-bar --upload-file "-" "https://transfer.sh/$file_name.gpg" | tee /dev/null)
else # File
    echo "Invio di $file_name cifrato con GPG..."
    ADDRESS=$(cat "$file"|gpg -ac -o-|curl -X PUT --progress-bar --upload-file "-" "https://transfer.sh/$file_name.gpg"|tee /dev/null)
fi
echo -e "\nSalvo su ~/transfer_history.txt\n"
echo "$(date +%Y-%m-%d_%H-%M-%S) $ADDRESS $file" >> ~/transfer_history.txt
echo -e "Per scaricare il file CIFRATO:\ncurl $ADDRESS -o $file_name.gpg\n"
echo -e "Per scaricare e DECIFRARE DIRETTAMENTE il file:\ncurl $ADDRESS | gpg --decrypt -o $file_name"

Per cifrarlo e’ necessario avere sul sistema opengpg funzionante con le chiavi impostate, mentre per de-cifrarlo sugli altri sistemi e’ sufficiente la password che si imposta al momento della creazione e la chiave pubblica.

See You!