triplo salto mortale, resize raid1 mdadm – crossgrade 32->64 – Debian 12->13

Triplo salto mortale

Il mio vecchio server aveva bisogno di un upgrade, da Debian 12 a 13 ma dopo un primo test fallito ho scoperto che per Debian 13 trixie la versione i386 è scomparsa, poi scopro che le partizioni hanno spazio insufficente per l’upgrade.

La mia storia con Debian è partita da Sarge 3.1 stable ed è passata alla terza macchina con aggiornamenti costanti nel tempo ma è rimasto a 32 bit.

La prima macchina un AthlonXP 2500 con 2 Gb di RAM e dischi IDE per finire con un i5, 8 Gb di RAM e 2 dischi sata in raid mirror con mdadm.

#cat /var/log/installer/lsb-release
DISTRIB_ID=Debian
DISTRIB_DESCRIPTION="Debian GNU/Linux installer"
DISTRIB_RELEASE="3.1 (installer build 20060304)"

La situazione non è facile perché le vecchie partizioni (raid1 mdadm) ora stanno strette e necessitano di una revisione prima di fare qualsiasi cosa.
Mi metto all’opera provando prima in virtuale con virtulabox e dai test estraggo i comandi necessari per effettuare il triplo upgrade.

• Manipolare partizioni : estensione partizioni RAID1 mdadm
Crossgrading : passaggio da i386 a amd64
Debian upgrade : passaggio da bookworms a trixie 12→13

Manipolare partizioni

Questa fase nelle battute iniziali è comune a operazioni simili, cambia solo nella parte finale, in pratica posso copiare raid→raid oppure trasformare da standard→raid o raid→standard.
Cominciamo prendendo il disco sorgente hda-source e il nuovo disco hdb-destination, su a abbiamo il nostro sistema operativo e su b un bel disco pulito formattato per bene.
Installiamo i due dischi sul PC e avviamo usando un live CD dedicato, per queste operazione il mio preferito è Parted Magic perché ha tutti i tools e riconosce da subito il raid.
Il mio partizionamento era un poco anziano, quando è nato avevo solo hd ide da 80GB mentre ora il sata più piccolo è da 250GB così dalla situazione iniziale decido di estendere le partizioni cominciando a dargli forma sul nuovo hd-b, avvio gparted e affetto il disco a piacimento.
PS. la formattazione ora non è fondamentale per me perché poi dovrò eseguirla ancora sugli array.

Di seguito riporto lo schema sintetico, a sinistra la situazione attuale e a destra quella finale:

• root / sda1 (MD0) 12GB → 33GB sdb1
• /home sda2 (MD1) 8GB → 12GB sdb2
• swap sda3 (MD3) 4GB-→ 8GB sdb3
• extended sda4 20GB → 40GB sdb4
• /data sda5 (MD4) 12GB → 24GB sdb5

Nel mio caso il trasferimento è da raid a raid quindi ora occorre creare le partizioni nuove in raid, da console aiutiamoci con i comandi fondamentali per capire la struttura degli hd , blkid e fdisk -l, io mi sono aiutato scrivendo i risultati su un foglio.

mdadm --create /dev/md120 --level 1 --raid-devices=2 missing /dev/sdb1

eseguire per quanti array si vuole fare, l’opzione missing fa in modo che durante le operazioni sono si generino log per la ricerca di una partizione che ancora non c’è.

Passiamo alla formattazione degli array raid creati

mkfs.ext4 /dev/md120

e per tutti gli altri array con stessa formattazione

mkswap /dev/md123

questo solo per raid swap

Andiamo ora a creare i punti di mount necessari per trasferire i dati

mkdir /mnt/data

e

/mnt/new

montiamo le partizioni facendo attenzione a source e target usiamo blkid e fdisk -l se serve.

mount /dev/md0 /mnt/data
mount /dev/md120 /mnt/new
rsync -a -v --progress /mnt/data/ /mnt/new

! attenzione !  in /mnt/data/ serve la / altrimenti viene copiata la dir /data dentro md120 

dopo aver fatto la copia smontiamo le partizioni

umount /mnt/data
umount /mnt/new

Ora dobbiamo ripetere queste operazioni quante sono le partizioni da copiare, facendo il mount corretto e dopo la copia fare umount.

Se dovevo passare da standard a raid avrei fatto la stessa cosa solo che per la copia montavo sda1 invece di MD0.
Se dovevo passare da raid a standard non creavo le partizioni raid ma copiavo da MD0 a sdb1.

Adesso la copia dell’hard disk rispecchia le mie esigenze, ho tutti i dati copiati ma il sistema non è avviabile, in questo caso chroot ci viene in aiuto, se non facciamo confusione con i dischi possiamo continuare oppure per sicurezza spegniamo il PC e riavviamolo con solo il nuovo hd-b sempre da live CD.

mkdir /media/k
mount /dev/md120 /media/k
mount --rbind /dev /media/k/dev
mount --rbind /sys /media/k/sys
mount --rbind /proc /media/k/proc
chroot /media/k /bin/bash --login

Siamo nel sistema, verifichiamo che /etc/fstab e /etc/mdadm/mdadm.conf abbiano gli stessi valori di blkid per i vari array raid.

update-initramfs -u

possibile errore con swap perché non la trova ma non è un problema.
Installiamo GRUB selezionando il disco giusto.

dpkg-reconfigure grub-pc

A questo punto il nostro sistema è avviabile o almeno si spera.

Se dovevo passare da standard a raid avrei prima installato mdadm (apt install mdadm) e poi eseguito le stesse operazioni.
Se dovevo passare da raid a standard avrei rimosso mdadm (apt purge mdadm) e eseguito le stesse operazioni.

Riavviamo il PC da HDB e verifichiamo, se tutto è OK passiamo alla seconda parte, il passaggio da i386 a amd64.

In alternativa se il nostro scopo è stato realizzato potremmo anche completare gli array del raid1 con il secondo HD, nel mio caso verrà eseguita alla fine di tutti i passaggi.
Riporto le operazioni principali.
Avviamo il PC con i due hard drvive per il raid1, il nostro sda già in raid è funzionante e sdb che è un hard disk vergine.
Copiamo il partizionamento da sda a sdb

sfdisk -d /dev/sda | sfdisk /dev/sdb

una verifica con blkid e fdisk -l è sempre un valido aiuto
ora andiamo a ricostruire il raid1 seguendo lo schema di partizioni

mdadm /dev/md120 --add /dev/sdb1

eseguiamo l’operazione per tutti gli array, su un altro terminale è possibile verificarne l’avanzamento

cat /proc/mdstat

se vogliamo mantenere la visuale di aggiornamento

watch cat /proc/mdstat

Al termine installiamo GRUB anche sul nuovo disco con :

dpkg-reconfigure grub-pc

 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.