Procedura di impostazione del Software RAID 1 su PROXMOX VE 3.2

La recentissima versione 3.2 di Proxmox VE (10 marzo 2014) presenta delle novità che non consentono di adottare le procedure indicate in questa pagina WIKI (e rispettivi collegamenti) di proxmox /wiki/Software_RAID https://pve.proxmox.com/wiki/Software_RAID tra le altre cose anche per l'adozione di una tabella delle partizioni GPT, in precedenza non presente.

Vi sono anche altre modifiche rispetto alle precedenti versioni, ma non è lo scopo di questo documento elencarle, pertanto si rinvia alla documentazione ufficiale sul sito: http://www.proxmox.com/ e https://pve.proxmox.com/wiki/Main_Page

Specifico subito che la seguente guida non è farina del mio sacco (lo si capisce dai termini che uso), ma è stata da me testata ed è funzionante. Riporto quindi di seguito i passaggi fondamentali, tratti da questo sito http://habrahabr.ru/post/218757/ (l'unico finora trovato) che tuttavia è scritto in cirillico.

Modifica dei repositori

Aprire con un editor di testo (a me piace nano) questo repository

# nano /etc/apt/sources.list.d/pve-enterprise.list

e commentare l'unica riga per rimuoverlo dagli aggiornamenti (salvo non abbiate sottoscritto il contratto e aggiungere questo repository)

echo "deb http://download.proxmox.com/debian wheezy pve pve-no-subscription" >> /etc/apt/sources.list.d/proxmox.list


aggiornare ed installare gli strumenti necessari

# aptitude update && aptitude install mdadm initramfs-tools screen

Impostazione preliminare

# modprobe raid1

Copia della tabella delle partizioni da sda ad sdb: nelle guide in uso fino alla versione 3.1 si faceva riferimento a sfdisk, che tuttavia non gestisce GPT

# sgdisk -R /dev/sdb /dev/sda
The operation has completed successfully.

# sgdisk -G /dev/sdb
The operation has completed successfully.

# sgdisk --randomize-guids --move-second-header /dev/sdb
The operation has completed successfully.



Controllare che l'esito sia corrispondente a questo e che le tabelle di sda e sdb siano uguali:

# parted -s /dev/sda print
Model: ATA WDC WD5000AAKS-0 (scsi)
Disk /dev/sda: 500GB
Sector size (logical/physical): 512B/512B

Partition Table: gpt
Number Start    End   Size File system Name Flags
1     1049kB 2097kB 1049kB          primary bios_grub
2     2097kB  537MB  535MB             ext3 primary boot
3      537MB  500GB  500GB          primary lvm

e questo:

# parted -s /dev/sdb print
Model: ATA ST3500320NS (scsi)
Disk /dev/sdb: 500GB
Sector size (logical/physical): 512B/512B

Partition Table: gpt
Number Start    End   Size File system Name Flags
1     1049kB 2097kB 1049kB          primary bios_grub
2     2097kB  537MB  535MB          primary boot
3      537MB  500GB  500GB          primary lvm

Creazione degli array ed impostazione del device di boot

Modifica delle partizioni del secondo disco per la successiva aggiunta al RAID 1

# parted -s /dev/sdb set 2 "raid" on

# parted -s /dev/sdb set 3 "raid" on

Controllare l'esito:

# parted -s /dev/sdb print
Model: ATA ST3500320NS (scsi)
Disk /dev/sdb: 500GB
Sector size (logical/physical): 512B/512B

Partition Table: gpt
Number Start    End   Size File system Name Flags
1     1049kB 2097kB 1049kB          primary bios_grub
2     2097kB  537MB  535MB          primary raid
3      537MB  500GB  500GB          primary raid

Predisporre le partizioni per l'inserimento del sistema RAID:

# mdadm --zero-superblock /dev/sdb2
mdadm: Unrecognised md component device - /dev/sdb2

# mdadm --zero-superblock /dev/sdb3
mdadm: Unrecognised md component device - /dev/sdb3



Creazione delle partizioni in RAID

# mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdb2
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90

Continue creating array? y

mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.

# mdadm --create /dev/md2 --level=1 --raid-disks=2 missing /dev/sdb3
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90

Continue creating array? y

mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md2 started.

Verifica l'esito delle operazioni:

# cat /proc/mdstat
Personalities: [raid1]
md2: active raid1 sdb3[1]
487731008 blocks super 1.2 [2/1] [_U]

md1: active raid1 sdb2[1]
521920 blocks super 1.2 [2/1] [_U]

Modifica dei file di configurazione:

# cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig
# mdadm --examine --scan >> /etc/mdadm/mdadm.conf

Formattazione del nuovo dispositivo:

# mkfs.ext3 /dev/md1
mke2fs 1.42.5 (29-Jul-2012)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
130560 inodes, 521920 blocks
26096 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67633152
64 block groups
8192 blocks per group, 8192 fragments per group
2040 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409

Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

Copia dei file presenti in /boot nel nuovo dispositivo:

# mkdir /mnt/md1
# mount /dev/md1 /mnt/md1
# cp -ax /boot/* /mnt/md1

Modifica della tabella del file system e impostazione della nuova partizione di boot (in RAID 1):

# nano /etc/fstab

# <file system> <mount point> <type> <options> <dump> <pass>
/dev/pve/root / ext3 errors=remount-ro 0 1
/dev/pve/data /var/lib/vz ext3 defaults 0 1
/dev/pve/swap none swap sw 0 0
proc /proc proc defaults 0 0
# commentare la seguente riga
# UUID=d097457f-cac5-4c7f-9caa-5939785c6f36 /boot ext3 defaults 0 1
# aggiungere la seguente
/dev/md1      /boot     ext3      defaults     0 1

Incrociare le dita, fare una preghierina e riavviare:

# reboot

Modifica di GRUB, moduli e gestore init

# echo 'GRUB_DISABLE_LINUX_UUID=true' >> /etc/default/grub
# echo 'GRUB_PRELOAD_MODULES="raid dmraid"' >> /etc/default/grub
# echo 'GRUB_TERMINAL=console' >> /etc/default/grub
(versione copia e incolla nel file per /etc/default/grub)
GRUB_DISABLE_LINUX_UUID=true
GRUB_PRELOAD_MODULES="raid dmraid"
GRUB_TERMINAL=console
# echo raid1 >> /etc/modules # echo raid1 >> /etc/initramfs-tools/modules

(oppure aprire i file di configurazione con nano/vi e decommentare le corrispondenti righe)
Aggiornamento di GRUB (qui io ho ottenuto degli errori generici di gestione di LVM, ma non hanno avuto inflenza):

# grub-install /dev/sda --recheck
Installation finished. No error reported.

# grub-install /dev/sdb --recheck
Installation finished. No error reported.

# update-grub
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.32-27-pve
Found initrd image: /boot/initrd.img-2.6.32-27-pve
Found memtest86+ image: /memtest86+.bin
Found memtest86+ multiboot image: /memtest86+_multiboot.bin
done

# update-initramfs -u
update-initramfs: Generating /boot/initrd.img-2.6.32-27-pve

Inserimento delle partizioni del primo disco /dev/sda nell'array RAID

# parted -s /dev/sda set 2 "raid" on

# mdadm --add /dev/md1 /dev/sda2
mdadm: added /dev/sda2

Controllare l'esito:

# cat /proc/mdstat
Personalities: [raid1]

md2: active (auto-read-only) raid1 sdb3[1]
487731008 blocks super 1.2 [2/1] [_U]

md1: active raid1 sda2[2] sdb2[1]
521920 blocks super 1.2 [2/2] [UU]

unused devices: <none>

Inserimento della partizione /dev/sda3 nell'array RAID; qui c'è parecchio tempo da aspettare se i dischi sono capienti, a me ci sono volute quasi 2 ore.

# screen bash

# pvcreate /dev/md2
Writing physical volume data to disk "/dev/md2"
Physical volume "/dev/md2" successfully created

# vgextend pve /dev/md2
Volume group "pve" successfully extended

# pvmove /dev/sda3 /dev/md2
/dev/sda3: Moved: 2.0%
...
/dev/sda3: Moved: 100.0%

# vgreduce pve /dev/sda3
Removed "/dev/sda3" from volume group "pve"

Inserimento anche dell'ultima partizione nel RAID.

# parted -s /dev/sda set 3 "raid" on

# mdadm --add /dev/md2 /dev/sda3
mdadm: added /dev/sda3

# cat /proc/mdstat
Personalities : [raid1]

md2 : active raid1 sda3[2] sdb3[1]
487731008 blocks super 1.2 [2/1] [_U]

[>....................] recovery = 0.3% (1923072/487731008) finish=155.4min speed=52070K/sec

md1 : active raid1 sda2[2] sdb2[1]
521920 blocks super 1.2 [2/2] [UU]

unused devices: <none>

Come è facile capire la partizione /dev/sda1 e /dev/sdb1 non sono in RAID, ma credo non sia rilevante. Seguendo la stessa procedura adottata per l'ultima partizione è possibile inserire anche questa in RAID