Ciao a tutti, oggi configureremo Ubuntu su un file radice ZFS nativo che è un file system avanzato e un gestore di volumi logici progettato per superare molti dei principali problemi riscontrati nei progetti precedenti progettati da Sun Microsystems. Le caratteristiche principali di ZFS includono le sue prestazioni con l'integrità dei dati che include il checksum dei dati per fornire protezione contro la corruzione. ZFS tenta automaticamente di correggere gli errori quando è disponibile la ridondanza dei dati. ZFS fornisce supporto per capacità di archiviazione elevate e compressione dei dati efficiente con i dispositivi di archiviazione del pool fisico che vengono aggiunti a un pool e lo spazio di archiviazione viene allocato da quel pool condiviso.
Prerequisiti del sistema di base
In questa configurazione utilizzeremo ZFS su un ambiente Ubuntu 14.04 a 64 bit installato come base con le seguenti specifiche e versioni.
- Sistema operativo:Ubuntu 14.04.1 LTS x86_64
- Installazione grub (GRUB) 2.02~beta2-9ubuntu1.3
- spl-dkms 0.6.4-2~utopico
- zfs-dkms 0.6.4-3~utopico
- zfs-initramfs 0.6.4-3~utopico
- Disco libero/dimensione partizione 10 GB
- Memoria consigliata utilizzata 4 GB
- Numero di core utilizzati 2 GHz
Configurazione installazione ZFS
Inizieremo la configurazione dell'installazione di ZFS su un sistema operativo Ubuntu 14.04 già installato con 10 GB di spazio libero su di esso. È necessario accedere con l'utente root per eseguire tutti questi passaggi.
Aggiunta del repository ZFS
Prima di poter iniziare a utilizzare ZFS, dobbiamo installarlo. Aggiungi semplicemente il repository a apt-get con il seguente comando:
root@ubuntu-14:~# apt-add-repository --yes ppa:zfs-native/stable
Aggiornamento del sistema con installazione ZFS
Qui dobbiamo aggiornare il sistema operativo con un nuovo repository e quindi inizieremo la sua installazione con apt-get.
root@ubuntu-14:~#apt-get update
root@ubuntu-14:~#apt-get install debootstrap ubuntu-zfs
L'installazione dei pacchetti richiederà del tempo durante la compilazione dei moduli del kernel.
zfs-initramfs è necessario per inserire le utilità ZFS per la gestione dei file system ZFS nelle immagini di avvio di initramfs.
root@ubuntu-14:~#apt-get install zfs-initramfs
Controllo moduli ZFS
Usando i seguenti comandi prima caricheremo i moduli zfs e poi verificheremo se esistono o meno.
Partizionamento del disco per ZFS
La nostra tabella delle partizioni sarà la seguente per il layout del pool vdev singolo, dove sda2 verrà utilizzato per zfs root.
Creazione del pool di root
Ora creeremo il pool di root usando /dev/sda*, in alternativa, puoi anche crearlo usando i link /dev/disk/by-id per creare il pool.
root@ubuntu-14:~# mke2fs -m 0 -L /boot/grub -j /dev/sda2
root@ubuntu-14:~# zpool create -o ashift=9 rpool /dev/sda2
Abbiamo creato il rpool che possiamo controllare tramite il comando zpool list.
Creazione del set di dati radice e installazione del sistema di base
Qui creiamo il set di dati di root, quindi lo esportiamo e lo importiamo di nuovo usando -d /dev/sda2
root@ubuntu-14:~# zfs create rpool/ROOT
root@ubuntu-14:~# zfs create rpool/ROOT/ubuntu-1
root@ubuntu-14:~# zfs umount -a
root@ubuntu-14:~# zfs set mountpoint=/ rpool/ROOT/ubuntu-1
root@ubuntu-14:~# zpool export rpool
root@ubuntu-14:~# zpool import -d /dev/sda2 -R /mnt rpool
Ora monta il filesystem di avvio per GRUB che abbiamo creato nel passaggio precedente.
root@ubuntu-14:~# mkdir -p /mnt/boot/grub
root@ubuntu-14:~# mount /dev/sda2 /mnt/boot/grub
root@ubuntu-14:~# debootstrap trusty /mnt
Il comando debootstrap lascia il nuovo sistema in uno stato non configurato che faremo con le sue configurazioni minime in seguito.
Dopo aver completato con successo debootstrap, riceviamo il messaggio sulla corretta installazione del sistema Base, ora dopo aver eseguito i seguenti comandi aggiorneremo il sistema dopo aver generato le localizzazioni come segue.
root@ubuntu-14:~# cp /etc/hostname /mnt/etc/
root@ubuntu-14:~# cp /etc/hosts /mnt/etc/
root@ubuntu-14:~# mount --bind /dev /mnt/dev
root@ubuntu-14:~# mount --bind /proc /mnt/proc
root@ubuntu-14:~# mount --bind /sys /mnt/sys
root@ubuntu-14:~# chroot /mnt /bin/bash --login
root@ubuntu-14:/# locale-gen en_US.UTF-8
Quindi, abbiamo creato filesystem virtuali nell'ambiente visibile al nuovo sistema e installato il supporto PPA nell'ambiente chroot con il comando chroot.
Installazione di Ubuntu e pacchetti nativi
Il pacchetto ubuntu-minimal è necessario per utilizzare ZFS su Linux come pacchetto nel PPA. Installiamo ZFS nell'ambiente chroot per il nuovo sistema eseguendo i seguenti comandi.
root@ubuntu-14:/# apt-get install ubuntu-minimal software-properties-common
root@ubuntu-14:/# apt-add-repository --yes ppa:zfs-native/stable
root@ubuntu-14:/# apt-add-repository --yes ppa:zfs-native/grub < - See below note on this command
root@ubuntu-14:/# apt-get update
root@ubuntu-14:/# apt-get install --no-install-recommends linux-image-generic linux-headers-generic
root@ubuntu-14:/# apt-get dist-upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Generazione nuova configurazione di grub
root@ubuntu-14:/# grub-probe /
zfs
root@ubuntu-14:~# ls /boot/grub/i386-pc/zfs*
/boot/grub/i386-pc/zfs.mod /boot/grub/i386-pc/zfscrypt.mod /boot/grub/i386-pc/zfsinfo.mod
root@ubuntu-14:~#
root@ubuntu-14:~# update-initramfs -c -k all
update-initramfs: Generating /boot/initrd.img-3.13.0-24-generic
Verifica dell'immissione di root corretta
root@ubuntu-14:~# grep "boot=zfs" /boot/grub/grub.cfg
linux /ROOT/ubuntu-1@/boot/vmlinuz-3.13.0-24-generic root=ZFS=rpool/ROOT/ubuntu-1 ro boot=zfs
linux /ROOT/ubuntu-1@/boot/vmlinuz-3.13.0-24-generic root=ZFS=rpool/ROOT/ubuntu-1 ro boot=zfs
root@ubuntu-14:~# grep zfs /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="boot=zfs"
Aggiorna Grub
Aggiorna grub per consentire il menu di avvio di zfs generato automaticamente con il comando update-grub.
root@ubuntu-14:~# update-grub
Generating grub configuration file ...
Warning: Setting GRUB_TIMEOUT to a non-zero value when GRUB_HIDDEN_TIMEOUT is set is no longer supported.
Found linux image: /boot/vmlinuz-3.13.0-24-generic
Found initrd image: /boot/initrd.img-3.13.0-24-generic
done
Installa il caricatore di avvio sull'MBR con il comando seguente e assicurati di ricevere il messaggio di installazione completata. Il readlink è richiesto perché le recenti versioni di GRUB non de referenziano i collegamenti simbolici.
root@ubuntu-14:~# grub-install $(readlink -f /dev/sda)
Installing for i386-pc platform.
Installation finished. No error reported.
Ora esci dall'ambiente chroot di nuovo all'ambiente di base e smonta da tutti i filesystem se collegati.
Conferma ZFS
Avevamo finito con tutta la sua configurazione ora controlla con il comando df per la conferma di rpool.
Alcuni problemi noti
Durante questa configurazione potresti riscontrare alcuni problemi con l'avvio di ZFS che puoi evitare utilizzando le seguenti procedure.
Crea istantanea
È necessario creare uno snapshot ZFS che possa essere utilizzato come ambiente di ripristino dopo il primo avvio. È possibile utilizzare il seguente comando per acquisire ZFS Snapshot come.
root@ubuntu-14:~# apt-get clean
root@ubuntu-14:~# zfs snapshot rpool/ROOT/ubuntu1
Problema Grub
A volte Grub non visualizza il menu di avvio o mostra l'errore "filesystem sconosciuto". Ciò potrebbe essere dovuto al fatto che grub non è in grado di leggere il pool zfs o la sua possibile causa è che in precedenza hai offline alcuni vdev. Per riprenderci da questo dobbiamo fare le seguenti due cose.
- Rimuovi/disconnetti i dischi offline
- Utilizzando il metodo Live CD puoi avviare dalla tua installazione ext4
- Oppure esegui online i dischi o rimuovi il disco offline e aggiungili di nuovo
Conclusione
ZFS cambia il modo in cui i dati vengono gestiti offrendo sicurezza e integrità dei dati, scalabilità praticamente illimitata e gestibilità semplice e automatizzata. Quindi possiamo concludere che ZFS è una funzionalità del sistema operativo che sembra essere una scelta molto popolare per alcuni amministratori che conoscono le sue funzionalità ricche di funzionalità.