Leker lite med "ZFS on Linux" version 0.6.0_rc10 på min Arch Linux skrivbordsinstallation och måste säga att det verkar fungera bra än så länge (fast har precis börjat leka).
Först fick jag installera spl samt zfs med sina beroenden från AUR. Detta innebar kompilering men det gick smidigt och enkelt som vanligt när man installerar från AUR. Bara att kolla lite i dessa guider i wikin:
https://wiki.archlinux.org/index.php/Installing_Arch_Linux_on...
https://wiki.archlinux.org/index.php/ZFS
Nu kör jag inte boot eller rootfilsystem på ZFS (även om det är möjligt att göra) men jag lade ändå in zfs till HOOKS i mkinitcpio.conf samt till daemons-listan i rc.conf och genererade en ny ramdsisk image så att zfs-modulen laddas in vid boot. Nackdelen är väl att jag får kompilera om zfs-modulen när kärnan uppdateras misstänker jag (kanske går att lösa autoatiskt med DKMS eller vad det heter).
Jag gjorde en fuling med några slaskdiskar.
1 st 500 GB SAMSUNG HD501LJ
1 st 320 GB WDC WD3200AAKS
1 st 200 GB SAMSUNG SP2014N
Med hjälp av LVM skapade jag en logisk 500GB volym utifrån 320 GB plus 200 GB diskarna (för att slippa slösa på diskutrymme) och speglade sedan denna logiska volym med den fysiska 500 GB disken för att ge redundans. Minst en av hårddiskarna kan gå sönder utan att någon data förloras.
Visserligen har jag ännu inga "Advanced Format" diskar eller SSD i poolen men jag förberedde ändå poolen för diskar upp till 8K stora sektorer (som vissa SSD-diskar påstås ha) med hjälp av "ashift=13". För endast mekaniska diskar räcker det väl med "ashift=12" men strunt samma, läste någonstans att man kan få aningen bättre prestanda med "ashift=13".
sudo zpool create -f -m /mnt/zfs -o ashift=13 zfs mirror ata-SAMSUNG_HD501LJ_S0MUJ2MP817527 dm-name-volymgrupp-lvol500g
Resultat:
[ronny@r1arch ~]$ sudo zpool status
pool: zfs
state: ONLINE
scan: scrub repaired 0 in 0h0m with 0 errors on Fri Sep 7 22:23:16 2012
config:
NAME STATE READ WRITE CKSUM
zfs ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
ata-SAMSUNG_HD501LJ_S0MUJ2MP817527 ONLINE 0 0 0
dm-name-volymgrupp-lvol500g ONLINE 0 0 0
errors: No known data errors
Ställde in atime=off som standard i poolen (jag kallar min pool för zfs, kan ju kanske göra det lite förvirrat, men strunt samma):
sudo zfs set atime=off zfs
Däremot bryr jag mig inte om kompression eller något annat "fancy"...
Nu får alla nya filsystem skapade i poolen zfs "atime=off" som default.
Så jag skapar mig ett filsystem jag kallar video:
sudo zfs create zfs/video
Kopierade över sisådär 115 GB filmer (och foton) jag tagit med systemkameran.
Resultat:
[ronny@r1arch ~]$ sudo zfs list
[sudo] password for ronny:
NAME USED AVAIL REFER MOUNTPOINT
zfs 115G 342G 288K /mnt/zfs
zfs/video 115G 342G 115G /mnt/zfs/video
och
[ronny@r1arch ~]$ sudo zpool list
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
zfs 464G 115G 349G 24% 1.00x ONLINE -
Testade köra scrub på altihopa och hastigheten på scrub blev ungefär 72 MB/s vilket är ungefär vad man kan vänta sig.
[ronny@r1arch ~]$ sudo zpool status
pool: zfs
state: ONLINE
scan: scrub in progress since Fri Sep 7 23:34:28 2012
113G scanned out of 115G at 72,1M/s, 0h0m to go
0 repaired, 97,89% done
config:
NAME STATE READ WRITE CKSUM
zfs ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
ata-SAMSUNG_HD501LJ_S0MUJ2MP817527 ONLINE 0 0 0
dm-name-volymgrupp-lvol500g ONLINE 0 0 0
errors: No known data errors
Efter 27 minuter hade allt skrubbats utan att några fel hittats.
Klassiska dd-testet:
dd if=/dev/zero of=/mnt/zfs/video/junk00 bs=1M count=10000
10000+0 poster in
10000+0 poster ut
10485760000 byte (10 GB) kopierade, 139,421 s, 75,2 MB/s
och
dd if=/mnt/zfs/video/junk00 of=/dev/null bs=1M
10000+0 poster in
10000+0 poster ut
10485760000 byte (10 GB) kopierade, 76,7789 s, 137 MB/s
Så får man alltså dubbla läsprestandan när man kör mirror?
Eller är det kanske lagrat i RAM-cahche?
Ska boota om och testa igen, återkommer...
Jodå:
[ronny@r1arch ~]$ dd if=/mnt/zfs/video/junk00 of=/dev/null bs=1M
10000+0 poster in
10000+0 poster ut
10485760000 byte (10 GB) kopierade, 78,6306 s, 133 MB/s
Men det kan vara så att den läser från snabbaste disken i spegeln och 320GB-disken kan vara ungefär så pass snabb.
sudo dd if=/dev/sdf of=/dev/null bs=1M count=10000
[sudo] password for ronny:
10000+0 poster in
10000+0 poster ut
10485760000 byte (10 GB) kopierade, 92,4977 s, 113 MB/s
Nej inte riktigt så snabb. Nähä, men 500GB disken då?
dd if=/dev/sdg of=/dev/null bs=1M count=10000
10000+0 poster in
10000+0 poster ut
10485760000 byte (10 GB) kopierade, 122,908 s, 85,3 MB/s
Ännu slöare. Ja men då är det väl så att en ZFS mirror är snabbare i läsning än en singeldisk (har hört att det ska ge uppåt dubbla läsprestandan).
För säkerhets skull kollade jag även den logiska LVM-volymen:
dd if=/dev/disk/by-id/dm-name-volymgrupp-lvol500g of=/dev/null bs=1M count=10000
10000+0 poster in
10000+0 poster ut
10485760000 byte (10 GB) kopierade, 92,4759 s, 113 MB/s
Ger samma hastighet som 320GB-disken som ligger först i LVM-gruppen.