ZiEg wrote:les pools, les datasets, les snapshots.....)
Le plus important, c'est le ou les pools, car c'est le (ou les) tronc()s del'arbre, après, faire des datasets ne représente pas grand chose (les branches) et tu as tout le loisir de faire ce genre de chose ultérieurement.
En revanche, le choix d'un pool ou de plusieurs pools est très important, car si tu veux déplacer par la suite tes données, ce ne sera pas facile.
Dans mon cas, mon nas domestique est un entrelacement de 3 disques de 2To en ZFS et je suis en train d'attaquer les manip pour faire un pool sur chaque disques (car en fait, après des années de fonctionnement, je me suis aperçu que je pouvais faire 3 parties quasiment égales), et pour faire cela, ce n'est pas une mince affaire car voulant toujours avoir mon clône au cas oû, je suis obligé d'en mettre un peu partout pour que çà passe.
Sache que pour un miroir, ou un raidzX, tu pourras toujours rajouter de la taille, il y a de la doc ici:
http://docs.oracle.com/cd/E19253-01/820 ... index.html
tu peux t'amuser avec des fichiers au lieu de te lancer en vrai, de cette façon:
Je fais un copier coller de mes commandes (en virant certains rep perso) fait à l'intérieur d'un vol en ZFS (je vais donc faire un pool ZFS DANS du ZFS !!! ... le genre de truc à ne pas faire, mais c'est pour l'exemple (la bonne cause) car je n'ai pas de place autre que du ZFS)
Je vais d'ailleurs faire mes manip sur un nas en prod qui ne doit surtout pas avoir "d'ennui"
nas1: disk320# zpool list
NAME SIZE ALLOC FREE FRAG EXPANDSZ CAP DEDUP HEALTH ALTROOT
disk320 298G 195G 103G 35% - 65% 1.00x ONLINE -
nas1 1.82T 1.19T 645G 22% - 65% 1.00x ONLINE -
nas1: ~#
cd /mnt/disk320
nas1: disk320#
nas1: disk320#
dd if=/dev/zero of=./tank1.dsk bs=1M count=256
256+0 records in
256+0 records out
268435456 bytes transferred in 0.054339 secs (4940020827 bytes/sec)
nas1: disk320#
ls -lh
-rw-r--r-- 1 root wheel 256M Oct 22 01:16 tank1.dsk
nas1: disk320#
dd if=/dev/zero of=./tank2.dsk bs=1M count=256
256+0 records in
256+0 records out
268435456 bytes transferred in 0.069032 secs (3888554707 bytes/sec)
nas1: disk320#
zpool create mirror toto ./tank1.dsk ./tank2.dsk
cannot open './tank1.dsk': no such GEOM provider
must be a full path or shorthand device name
(J'ai laissé l'erreur exprès pour voir qu'il faut toujours créer le pool avec des chemins absolus)
nas1: disk320#
zpool create mirror toto /mnt/disk320/tank1.dsk /mnt/disk320/tank2.dsk
nas1: disk320#
zpool status toto
pool: toto
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
toto ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
/mnt/disk320/tank1.dsk ONLINE 0 0 0
/mnt/disk320/tank2.dsk ONLINE 0 0 0
errors: No known data errors
nas1: disk320#
Et voilà un p'tit miroir ZFS de 256Mo
On n'en veut plus ?
nas1: disk320#
zpool destroy toto
nas1: disk320#
zpool status toto
cannot open 'toto': no such pool
un p'tit raidz2 ? (avec les ruines du miroir d'avant)
nas1: disk320#
dd if=/dev/zero of=./tank3.dsk bs=1M count=256
256+0 records in
256+0 records out
268435456 bytes transferred in 0.081613 secs (3289123621 bytes/sec)
Pour le tank4, on va faire différemment:
nas1: disk320#
cp ./tank3.dsk ./tank4.dsk
nas1: disk320#
ls -lh *.dsk
-rw-r--r-- 1 root wheel 256M Oct 22 01:26 tank1.dsk
-rw-r--r-- 1 root wheel 256M Oct 22 01:26 tank2.dsk
-rw-r--r-- 1 root wheel 256M Oct 22 01:28 tank3.dsk
-rw-r--r-- 1 root wheel 256M Oct 22 01:30 tank4.dsk
nas1: disk320#
zpool create toto raidz2 /mnt/disk320/tank1.dsk /mnt/disk320/tank2.dsk /mnt/disk320/tank3.dsk /mnt/disk320/tank4.dsk
nas1: disk320#
zpool status toto
pool: toto
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
toto ONLINE 0 0 0
raidz2-0 ONLINE 0 0 0
/mnt/disk320/tank1.dsk ONLINE 0 0 0
/mnt/disk320/tank2.dsk ONLINE 0 0 0
/mnt/disk320/tank3.dsk ONLINE 0 0 0
/mnt/disk320/tank4.dsk ONLINE 0 0 0
errors: No known data errors
nas1: disk320#
et voilà !
Attention, ne faite pas vos pool en vrai de cette façon (sur de l'UFS ou sur du fat32 !!! ... lol ), c'est juste pour l'exemple comme quoi on peut s'amuser avec une structure plus ou moins complexe sans prendre de risques
Allez un petit exemple de destruction
Je vais copier sauvagement 10Mo de zéro dans mon dev et il va d'ailleurs prendre la taille de 10Mo au lieu de 256Mo
nas1: disk320#
dd if=/dev/random of=./tank2.dsk bs=1M count=10
10+0 records in
10+0 records out
10485760 bytes transferred in 0.164325 secs (63811106 bytes/sec)
nas1: disk320#
zpool scrub toto
nas1: disk320#
zpool status toto
pool: toto
state: DEGRADED
status: One or more devices could not be used because the label is missing or
invalid. Sufficient replicas exist for the pool to continue
functioning in a degraded state.
action: Replace the device using 'zpool replace'.
see:
http://illumos.org/msg/ZFS-8000-4J
scan: scrub repaired 0 in 0h0m with 0 errors on Thu Oct 22 01:38:47 2015
config:
NAME STATE READ WRITE CKSUM
toto DEGRADED 0 0 0
raidz2-0 DEGRADED 0 0 0
/mnt/disk320/tank1.dsk ONLINE 0 0 0
15533550486369989241 UNAVAIL 0 0 0 was /mnt/disk320/tank2.dsk
/mnt/disk320/tank3.dsk ONLINE 0 0 0
/mnt/disk320/tank4.dsk ONLINE 0 0 0
errors: No known data errors
On vérifie le "carnage"
nas1: disk320#
ls -lh
-rw-r--r-- 1 root wheel 256M Oct 22 01:38 tank1.dsk
-rw-r--r-- 1 root wheel 10M Oct 22 01:38 tank2.dsk
-rw-r--r-- 1 root wheel 256M Oct 22 01:38 tank3.dsk
-rw-r--r-- 1 root wheel 256M Oct 22 01:38 tank4.dsk
Je vais récréer un dev (tank2) avec n'importe quoi
nas1: disk320#
dd if=/dev/zero of=./tank2.dsk bs=1M count=256
256+0 records in
256+0 records out
268435456 bytes transferred in 0.057713 secs (4651210442 bytes/sec)
nas1: disk320#
zpool replace toto 15533550486369989241 /mnt/disk320/tank2.dsk
nas1: disk320#
zpool status toto
pool: toto
state: DEGRADED
scan: resilvered 41.5K in 0h0m with 0 errors on Thu Oct 22 01:41:13 2015
config:
NAME STATE READ WRITE CKSUM
toto DEGRADED 0 0 0
raidz2-0 DEGRADED 0 0 0
/mnt/disk320/tank1.dsk ONLINE 0 0 0
replacing-1 UNAVAIL 0 0 0
15533550486369989241 UNAVAIL 0 0 0 was /mnt/disk320/tank2.dsk/old
/mnt/disk320/tank2.dsk ONLINE 0 0 0
/mnt/disk320/tank3.dsk ONLINE 0 0 0
/mnt/disk320/tank4.dsk ONLINE 0 0 0
errors: No known data errors
nas1: disk320#
zpool clear toto
nas1: disk320#
zpool status toto
pool: toto
state: ONLINE
scan: resilvered 41.5K in 0h0m with 0 errors on Thu Oct 22 01:41:13 2015
config:
NAME STATE READ WRITE CKSUM
toto ONLINE 0 0 0
raidz2-0 ONLINE 0 0 0
/mnt/disk320/tank1.dsk ONLINE 0 0 0
/mnt/disk320/tank2.dsk ONLINE 0 0 0
/mnt/disk320/tank3.dsk ONLINE 0 0 0
/mnt/disk320/tank4.dsk ONLINE 0 0 0
errors: No known data errors
Sinon pour les snapshots:
attention, à savoir:
toto est le pool (il n'y a pas de / devant)
toto/truc truc est un dataset OU un répertoire (la vérif se fera avec zfs list)
/toto est le chemin absolu du pool
/toto/truc est le chemin du dataset OU du répertoire truc
C'est un peu "casse-gueule", je sais, mais c'est pas moi "qu'à fait çà"
Donc, attention au remplissage de la carte CF (embedded) en croyant que son pool est monté !!! çà fait un peu "désordre"
nas1: disk320#
echo "un" > /toto/test.txt
nas1: disk320#
cat /toto/test.txt
un
nas1: disk320#
zfs snapshot toto@unedateavecuneheure
nas1: disk320#
echo "deux" > /toto/test.txt
nas1: disk320#
cat /toto/test.txt
deux
nas1: disk320#
zfs rollback toto@unedateavecuneheure
nas1: disk320#
cat /toto/test.txt
un
Voilà les grandes lignes
Je sais c'est de la ligne de commande, mais bon, c'est formateur et on ne fait pas çà en webgui
Pour le reste, la bible:
http://docs.oracle.com/cd/E19253-01/820-2315/index.html