Autore Topic: RAID1 Ibrido partizione HDD + Ramdisk  (Letto 3641 volte)

Offline Elaidon

  • Jr. Member
  • **
  • Post: 48
    • Mostra profilo
RAID1 Ibrido partizione HDD + Ramdisk
« il: 19 Aprile 2016, 11:56:17 »
Ciao a tutti,

Sto effettuando dei test di performance e qui in ufficio volevamo capire come realizzare un RADI mirror ibrido costituito da una partizione primaria da 16Gb e da un ramdisk della stessa dimensione. (Siamo consapevoli dell'ottima gestione della cache da parte di linux, siamo consapevoli di alternative tipo flashcache, ecc. Vogliamo semplicemente capire come far funzionare questa cosa :D e testarla).

Il primo problema che abbiamo dovuto affrontare è come realizzare un ramdisk da 16GB (il server di test è un OVH con ha 32GB). Dopo un pò di googling abbiamo capito che non bastava modificare il file grub ma dovevamo ricompilare il kernel modificandone la configurazione alla voce "Default RAM Disk Size".

Al di là del fatto che i server OVH usano un kernel modificato, scarichiamo la loro versione 4.4.6 ed eseguiamo i seguenti passaggi:

yum install make gcc ncurses ncurses-devel -y
cd /usr/src
wget https://www.kernel.org/pub/linux/kernel ... 4.6.tar.xz
tar xf linux-4.4.6.tar.xz
cd linux-4.4.6
make mrproper
wget ftp://ftp.ovh.net/made-in-ovh/bzImage/4 ... td-ipv6-64
mv config-4.4.6-xxxx-std-ipv6-64 .config


a questo punto avviamo l'utility di configurazione.

make menuconfig

ed eseguiamo i seguenti passaggi:

- load .config
- Device Drivers > Block Devices > RAM Block Device Support: Default RAM Disk Size = 16500000
- Enable loadable module support
- General Setup > Kernel Compression Mode = XZ (Questo solo per comodità)
- Salviamo la configurazione

e compiliamo il tutto e ricreo il file grub:

make
make modules
make modules_install
cp arch/x86_64/boot/bzImage /boot/bzImage-modules-on-4.4.6-xxxx-grs-ipv6-64
grub2-mkconfig -o /boot/grub2/grub.cfg


A questo punto ricarico il sistema:
reboot

E verifico l'installazione della versione del kernel:
uname -r

e tutto è giusto.

Smonto la partizione da 16Gb che avevo creato in fase di installazione del server:
umount /dev/sda5

modifico la partizione, impostandola come primaria, di tipo FD, salvo e faccio leggere al sistema le nuove impostazioni:
cfdisk /dev/sda5
partprobe


A questo punto finalmente creo il raid1 con l'opzione per usare il disco fisico soprattutto per la scrittura e omettendo il ramdisk in modo da poter formattare il raid solo con il disco fisico che poi verrà sincronizzato col ramdisk successivamente:
mdadm --create /dev/md6 --level=1 --raid-devices=2 missing --write-mostly /dev/sda5

Ora formatto, monto il raid e aggiungo come secondo disco il ramdisk:
mkfs -t ext4 /dev/md6
mkdir /rrdisk
mount /dev/md6 /rrdisk
mdadm /dev/md6 -a /dev/ram0


Per verificare lo stato di allineamento dell'HDD con il Ramdisk eseguo un pò di volte:
mdadm --detail /dev/md6

arrivato al 100% di sincronizzazione tutto è ok il raid1 funziona egregiamente.
Testo le prestazioni con hdparm.

Su raid1 hdparm -t risulta in circa 3000 Mb/s.
Su una delle partizioni hdd tradizionali risulta circa 120 Mb/s.

Fin qui tutto bene.
A questo punto ci chiedevamo se al riavviamo della macchina il raid si sarebbe riassemblato.
E' chiaro che al riavvio il raid1 risulta degradato perchè manca un disco, il ramdisk.
Ci chiedevamo se si sarebbe risincronizzato da sè ma invece nulla.

Dopo un reboot per riprisitinare il raid abbiamo eseguito i seguenti comandi manuali:

mdadm --stop /dev/md6
mdadm --assemble --scan
mount /dev/md6 /rrdisk
mdadm /dev/md6 -a /dev/ram0


in questo modo tutto funziona, ma noi volevamo fare in modo che il raid si ripristinasse da sè.

Abbiamo provato a modificare il file /etc/fstab in modo da montare in automatico il raid anche usando UUID ma non funziona e CentOS entra in emergency mode a meno che aggiungiamo le opzioni per evitarlo in caso di errori, ma questo chiaramente non risolve il problema.

Abbiamo letto in giro che il problema probabilmente è che il mounting in fstab avviene prima della riassemblaggio del raid software o addirittura prima della creazione del ramdisk.

Io sono un mezzo newbie smanettone e sono riuscito a fare questa cosa googlando a destra e manca ma non conosco ancora i meccanismi interni di linux e centos quindi avrei bisogno di una mano a capire come fare a riavviare questo raid1 software in automatico.

Qualcuno sa aiutarmi?

Grazie a tutti
Elaidon