giovedì 23 aprile 2009

Aggiungere dischi ai mirror di ZFS

Come già detto nei precedenti post inerenti ZFS è un filesystem "nato sicuro", ovvero per sua natura abbiamo la massima garanzia di affidabilità per quello che riguarda le memorizzazioni su disco; tuttavia se veramente vogliamo dormire sonni tranquilli e sfruttare tutte le features di sicurezza di ZFS è consigliabile fornire più di un disco al sistema in modo che si possa quantomeno implementare un mirroring dei dati (sistema minimo di ridondanza).

Se al momento dell'installazione di OpenSolaris (o dell'ultima release di Solaris 10) avevate a disposizione un solo disco ZFS creerà in automatico un mirror "zoppo", finchè non gli fornirete il secondo disco, se avete un disco nuovo nuovo basterà digitare:
# zpool attach -f rpool c0t0d0s0 c0t1d0s0

dove rpool è il nome del vostro pool, seguito dal device del vecchio disco e da quello del nuovo. Se invece il disco che andate ad aggiungere non è nuovo (magari proviene da una vecchia macchina o contiene una versione di Solaris che andate ad aggiornare) riceverete un bel messaggio di errore:
# zpool attach -f rpool c0t0d0s0 c0t1d0s0
cannot attach c0t1d0s0 to c0t0d0s0: device is too small

questo perchè con molta probabilità il vostro disco contiene già una label in formato EFI e questo tipo di label non "copre" totalmente la dimensione del disco, quindi occorrerà passare al formato SMI, per fare questo useremo il comando format (ho evidenziato in grassetto le scelte effettuate):
# format -e
Searching for disks...done

AVAILABLE DISK SELECTIONS:
       0. c0t0d0 <DEFAULT cyl 8921 alt 2 hd 255 sec 63>
          /pci@0,0/pci8086,25f8@4/pci1000,3150@0/sd@0,0
       1. c0t1d0 <DEFAULT cyl 8915 alt 2 hd 255 sec 63>
          /pci@0,0/pci8086,25f8@4/pci1000,3150@0/sd@1,0
Specify disk (enter its number): 1
selecting c0t1d0
[disk formatted]

FORMAT MENU:
        disk       - select a disk
        type       - select (define) a disk type
        partition  - select (define) a partition table
        current    - describe the current disk
        format     - format and analyze the disk
        fdisk      - run the fdisk program
        repair     - repair a defective sector
        label      - write label to the disk
        analyze    - surface analysis
        defect     - defect list management
        backup     - search for backup labels
        verify     - read and display labels
        save       - save new disk/partition definitions
        inquiry    - show vendor, product and revision
        scsi       - independent SCSI mode selects
        cache      - enable, disable or query SCSI disk cache
        volname    - set 8-character volume name
        !<cmd>     - execute <cmd>, then return
        quit
format> label
[0] SMI Label
[1] EFI Label
Specify Label type[0]: 0
Ready to label disk, continue? y

format> quit
#

fatto questo potremo ripetere il comando di attach e in automatico ZFS comincerà il resilvering del disco in modo da sincronizzare i dati.
# zpool status
pool: rpool
state: ONLINE
scrub: resilver completed after 0h11m with 0 errors on Thu Apr 23 15:09:22 2009
config:

NAME          STATE     READ WRITE CKSUM
rpool         ONLINE       0     0     0
mirror      ONLINE       0     0     0
c0t0d0s0  ONLINE       0     0     0
c0t1d0s0  ONLINE       0     0     0

errors: No known data errors

C'è da aggiungere una piccola nota, alcune volte è necessario cancellare tutte le vecchie partizioni presenti sul disco prima di cambiare il formato delle label, basta entrare nel sottomenu fdisk e rimuovere tutte le partizioni e poi ripetere le operazioni viste prima.