Einführung in ZFS, Teil 3
Nachdem es im ersten und im zweiten Teil sehr viel Text gab, aber keine Beispiele, geht es in diesem Teil um die grundlegenden Funktionien von ZFS.
Nachdem wir uns einen Name für den neuen Pool überlegt haben, schauen wir mal was für Disks wir haben:
# echo | formatSearching for disks...done
AVAILABLE DISK SELECTIONS: 0. c0t0d0 <SUN9.0G cyl 4924 alt 2 hd 27 sec 133>/sbus@1f,0/SUNW,fas@e,8800000/sd@0,0 1. c0t1d0 <SUN9.0G cyl 4924 alt 2 hd 27 sec 133>/sbus@1f,0/SUNW,fas@e,8800000/sd@1,0 2. c1t2d0 <FUJITSU-MAN3184M SUN18G-1502-16.87GB>/sbus@1f,0/QLGC,isp@0,10000/sd@2,0 3. c1t3d0 <SEAGATE-ST318203LSUN18G-034A-16.87GB>/sbus@1f,0/QLGC,isp@0,10000/sd@3,0 4. c1t4d0 <FUJITSU-MAN3184M SUN18G-1502-16.87GB>/sbus@1f,0/QLGC,isp@0,10000/sd@4,0 5. c1t5d0 <SEAGATE-ST318203LSUN18G-034A-16.87GB>/sbus@1f,0/QLGC,isp@0,10000/sd@5,0 Specify disk (enter its number): Specify disk (enter its number):
Auf den beiden internen Disks (erster Controller) ist das Betriebssystem installiert und auf den ersten beiden externen Disks liegen die Home Directories. Deshalb welchen wir die Disks c1t4d0 und c1t5d0 und erstellen einen gespiegelten Pool mit dem Namen zhadum:
# zpool create zhadum mirror c1t4d0 c1t5d0
invalid vdev specificationuse '-f' to override the following errors:
/dev/dsk/c1t4d0s0 is part of exported or potentially active ZFS pool pool0. Please see zpool(1M).
ZFS überschreibt nichts einfach so. Wenn irgendwas (UFS, ZFS) bereits auf der Disk war, wird das gemeldet. Also forcieren wir das:
# zpool create -f zhadum mirror c1t4d0 c1t5d0
Dieser Vorgang dauert eine Sekunde. Da bei ZFS das Volume Management und das Filesystem nicht getrennt ist, entfällt hier das sinnlose kopieren von Nullen.
# zpool status
pool: zhadumstate: ONLINEscrub: none requested config:NAME STATE READ WRITE CKSUM zhadum ONLINE 0 0 0 mirror ONLINE 0 0 0 c1t4d0 ONLINE 0 0 0 c1t5d0 ONLINE 0 0 0 errors: No known data errors # df -h Filesystem size used avail capacity Mounted on /dev/dsk/c0t0d0s0 7.3G 4.1G 3.1G 57% / /devices 0K 0K 0K 0% /devices ctfs 0K 0K 0K 0% /system/contract proc 0K 0K 0K 0% /proc mnttab 0K 0K 0K 0% /etc/mnttab swap 2.4G 1016K 2.4G 1% /etc/svc/volatile objfs 0K 0K 0K 0% /system/object fd 0K 0K 0K 0% /dev/fd swap 2.4G 0K 2.4G 0% /tmp swap 2.4G 64K 2.4G 1% /var/run zhadum 16G 27K 16G 1% /zhadum
Der neue Pool wird unter /zhadum gemountet. Jetzt können wir die ersten Filesysteme in unserem neuen Pool erstellen:
# zfs create zhadum/foo
# zfs create zhadum/bar
# zfs create zhadum/bar/bla
Die neu erstelleten Filesysteme werden per default unter /zhadum gemountet. Man kann Filesysteme in Filesysteme erstellen. Man muss sich das wie eine Verzeichnisstruktr vorstellen.
Mit “set mountpoint” kann man einen alternativen Mountpoint erstellen. Die untergeordneten Filesysteme werden dann ebenfalls unter dem neuen Mountpoint gemountet.
# zfs create zhadum/data# zfs set mountpoint=/data zhadum/data # zfs create zhadum/data/mp3 # zfs create zhadum/data/movies # zfs list NAME USED AVAIL REFER MOUNTPOINT zhadum 326K 16.5G 27.5K /zhadum zhadum/bar 50K 16.5G 25.5K /zhadum/bar zhadum/bar/bla 24.5K 16.5G 24.5K /zhadum/bar/bla zhadum/data 76.5K 16.5G 27.5K /data zhadum/data/movies 24.5K 16.5G 24.5K /data/movies zhadum/data/mp3 24.5K 16.5G 24.5K /data/mp3 zhadum/foo 24.5K 16.5G 24.5K /zhadum/foo
Ein ZFS mit NFS zu exportieren, ist genau so einfach wie das setzten eines Mountpoints. Zu beachten ist hier, dass hier ebenfalls die untergeordneten Filesysteme ebenfalls exportiert werden.
# zfs set sharenfs=on zhadum/data # dfshares RESOURCE SERVER ACCESS TRANSPORT zhadum:/data zhadum - - zhadum:/data/mp3 zhadum - - zhadum:/data/movies zhadum - -
Auch will. ZFS ist echt geil.
Durfte mich heute grad wieder mit Linux LVM und Software-RAID rumschlagen.
Es geht, wenn mans mal kapiert hat einwandfrei, aber es ist mühsam.