Permalänk
Medlem

FreeBSD + GELI + ZFS

Tänkte kladda ner lite info om min nybyggda filserver

CPU: AMD Athlon(tm) II X2 245 Processor (2900.02-MHz K8-class CPU)
real memory = 4294967296 (4096 MB)

ad0: 238475MB <Seagate ST3250620A 3.AAC> at ata0-master UDMA100
ad4: 715404MB <SAMSUNG HD753LJ 1AA01113> at ata2-master SATA300
ad6: 953869MB <SAMSUNG HD103SJ 1AJ100E4> at ata3-master SATA300
ad8: 953869MB <SAMSUNG HD103SJ 1AJ100E4> at ata4-master SATA300
ad10: 953869MB <SAMSUNG HD103SJ 1AJ100E4> at ata5-master SATA300
ad12: 953869MB <SAMSUNG HD103SJ 1AJ10001> at ata6-master SATA300
ad14: 953869MB <SAMSUNG HD103SJ 1AJ10001> at ata7-master SATA300
ad16: 715404MB <SAMSUNG HD753LJ 1AA01117> at ata8-master SATA300
ad18: 715404MB <SAMSUNG HD753LJ 1AA01113> at ata9-master SATA300
ad21: 715404MB <SAMSUNG HD753LJ 1AA01113> at ata10-slave UDMA33
ad22: 715404MB <SAMSUNG HD753LJ 1AA01117> at ata11-master UDMA33

(Ingen aning om varför 21 och 22 är UDMA33 och inte SATA300, varken haft tid eller ork att urforska heller )

atapci1: <Marvell 88SX6081 SATA300 controller> port 0xd800-0xd8ff mem 0xfcf00000-0xfcffffff irq 18 at device 6.0 on pci1 i en vanlig PCI-kontakt då det kändes dyrt och drygt att leta runt efter ett moderkort med en PCI-X plats som inte kostar allt för mycket, inte den begränsande faktorn oavsett.

ad0 är bootdisken, resten sitter i zpool i 2 olika raidz1.

NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
raidz1 ONLINE 0 0 0
ad6.eli ONLINE 0 0 0
ad8.eli ONLINE 0 0 0
ad10.eli ONLINE 0 0 0
ad12.eli ONLINE 0 0 0
ad14.eli ONLINE 0 0 0
raidz1 ONLINE 0 0 0
ad4.eli ONLINE 0 0 0
ad16.eli ONLINE 0 0 0
ad18.eli ONLINE 0 0 0
ad21.eli ONLINE 0 0 0
ad22.eli ONLINE 0 0 0

eli-ändelsen kommer från GELI och är ganska enkelt att fixa själv, geli init på diskarna med nycklar och lösenord, geli attach så dom finns under /dev/ och sen är det bara köra en
zpool create tank raidz1 /dev/ad6.eli /dev/ad8.eli osv.
Krypteringen som används är AES-CBC 256 så förväntar mig rätt lite prestanda

2 problem jag stötte på är att drivisen hptrr tycker att den ska kontrollera Marvell-kortet, vilket inte fungerade så bra och det har funnits tuneables att stoppa in i /boot/loader.conf för att undvika det men det verkar som om Highpoint (som skriver drivisen) inte har backportat den in i sina nya versioner, så det var bara att kompilera om kärnan utan den (behövde göra det ändå, för POLLING och en annan grej) så att den vanliga ata-drivisen fick driva kortet, och då kom diskarna upp som vanligt.

Det andra problemet (som jag har haft tidigare på en annan filserver med liknande setup) är att krypteringen dödade allt vad prestanda heter, 99% av tiden gick åt att processer satt fast i geli:w, dock fanns det svar på google den här gången i form av en patch.

http://people.freebsd.org/~pjd/patches/g_eli.c.2.patch

Med den inkompilerad så gick det en aningen bättre, tidigare kunde man inte köra zpool scrub utan att maskinen fick en load på över 600 (skämtar ej...) och slutade svara, nu klarar den en scrub med en load på ungefär 4, och tar runt 16 timmar.

Eftersom jag kör blanade miljöer så blev det att installera samba, och samba och freebsd leker oftast inte så bra... men google blev räddningen igen

http://www.mywushublog.com/2009/12/freebsd-8-0-a-great-nas-se... och körde in dom inställningarna rakt av, har fungerat bra sen dess och får runt 20-30MB/s över nätverket, vilket är helt acceptablet för min del.

Nedan är ett lokalt test från iozone.

Record Size 128 KB File size set to 40960 KB Percent read in mix test is 70 Command line used: iozone -M -e -+u -T -t 4 -r 128k -s 40960 -i 0 -i 1 -i 2 -i 8 -+p 70 -C Output is in Kbytes/sec Time Resolution = 0.000001 seconds. Processor cache size set to 1024 Kbytes. Processor cache line size set to 32 bytes. File stride size set to 17 * record size. Throughput test with 4 threads Each thread writes a 40960 Kbyte file in 128 Kbyte records Children see throughput for 4 initial writers = 132987.45 KB/sec Parent sees throughput for 4 initial writers = 50141.62 KB/sec Min throughput per thread = 11787.19 KB/sec Max throughput per thread = 72139.20 KB/sec Avg throughput per thread = 33246.86 KB/sec Min xfer = 13696.00 KB CPU Utilization: Wall time 2.257 CPU time 0.327 CPU utilization 14.50 % Child[0] xfer count = 13696.00 KB, Throughput = 11787.19 KB/sec, wall= 2.109, cpu= 0.092, %= 4.35 Child[1] xfer count = 40960.00 KB, Throughput = 72139.20 KB/sec, wall= 0.568, cpu= 0.058, %= 10.23 Child[2] xfer count = 28672.00 KB, Throughput = 30009.84 KB/sec, wall= 1.751, cpu= 0.091, %= 5.19 Child[3] xfer count = 29952.00 KB, Throughput = 19051.21 KB/sec, wall= 2.257, cpu= 0.087, %= 3.84 Children see throughput for 4 rewriters = 152825.94 KB/sec Parent sees throughput for 4 rewriters = 75889.80 KB/sec Min throughput per thread = 19296.37 KB/sec Max throughput per thread = 70647.37 KB/sec Avg throughput per thread = 38206.48 KB/sec Min xfer = 40960.00 KB CPU utilization: Wall time 2.123 CPU time 0.242 CPU utilization 11.41 % Child[0] xfer count = 40960.00 KB, Throughput = 70647.37 KB/sec, wall= 0.580, cpu= 0.082, %= 14.14 Child[1] xfer count = 40960.00 KB, Throughput = 19296.37 KB/sec, wall= 2.123, cpu= 0.044, %= 2.08 Child[2] xfer count = 40960.00 KB, Throughput = 37050.84 KB/sec, wall= 1.106, cpu= 0.083, %= 7.55 Child[3] xfer count = 40960.00 KB, Throughput = 25831.37 KB/sec, wall= 1.586, cpu= 0.033, %= 2.07 Children see throughput for 4 readers = 7285291.75 KB/sec Parent sees throughput for 4 readers = 6741122.34 KB/sec Min throughput per thread = 3745436.50 KB/sec Max throughput per thread = 3745436.50 KB/sec Avg throughput per thread = 1821322.94 KB/sec Min xfer = 40960.00 KB CPU utilization: Wall time 0.019 CPU time 0.033 CPU utilization 171.50 % Child[0] xfer count = 0.00 KB, Throughput = 0.00 KB/sec, wall= 0.000, cpu= 0.000, %= 66.23 Child[1] xfer count = 33664.00 KB, Throughput = 3539855.25 KB/sec, wall= 0.019, cpu= 0.019, %=100.00 Child[2] xfer count = 0.00 KB, Throughput = 0.00 KB/sec, wall= 0.000, cpu= 0.000, %= 38.13 Child[3] xfer count = 40960.00 KB, Throughput = 3745436.50 KB/sec, wall= 0.014, cpu= 0.014, %=100.00 Children see throughput for 4 re-readers = 7269123.00 KB/sec Parent sees throughput for 4 re-readers = 6734904.72 KB/sec Min throughput per thread = 3848122.75 KB/sec Max throughput per thread = 3848122.75 KB/sec Avg throughput per thread = 1817280.75 KB/sec Min xfer = 40960.00 KB CPU utilization: Wall time 0.020 CPU time 0.039 CPU utilization 196.67 % Child[0] xfer count = 0.00 KB, Throughput = 0.00 KB/sec, wall= 0.000, cpu= 0.000, %=100.00 Child[1] xfer count = 31360.00 KB, Throughput = 3421000.25 KB/sec, wall= 0.019, cpu= 0.019, %=100.00 Child[2] xfer count = 0.00 KB, Throughput = 0.00 KB/sec, wall= 0.000, cpu= 0.000, %=100.00 Child[3] xfer count = 40960.00 KB, Throughput = 3848122.75 KB/sec, wall= 0.020, cpu= 0.020, %=100.00 Children see throughput for 4 random readers = 7158181.25 KB/sec Parent sees throughput for 4 random readers = 6645065.85 KB/sec Min throughput per thread = 3765753.00 KB/sec Max throughput per thread = 3765753.00 KB/sec Avg throughput per thread = 1789545.31 KB/sec Min xfer = 39936.00 KB CPU utilization: Wall time 0.021 CPU time 0.040 CPU utilization 191.14 % Child[0] xfer count = 0.00 KB, Throughput = 0.00 KB/sec, wall= 0.000, cpu= 0.000, %=100.00 Child[1] xfer count = 40960.00 KB, Throughput = 3392428.25 KB/sec, wall= 0.019, cpu= 0.019, %=100.00 Child[2] xfer count = 0.00 KB, Throughput = 0.00 KB/sec, wall= 0.000, cpu= 0.000, %=100.00 Child[3] xfer count = 39936.00 KB, Throughput = 3765753.00 KB/sec, wall= 0.021, cpu= 0.021, %=100.00 Children see throughput for 4 mixed workload = 2705233.87 KB/sec Parent sees throughput for 4 mixed workload = 71526.62 KB/sec Min throughput per thread = 73021.87 KB/sec Max throughput per thread = 2632212.00 KB/sec Avg throughput per thread = 676308.47 KB/sec Min xfer = 38144.00 KB CPU utilization: Wall time 1.089 CPU time 0.111 CPU utilization 10.22 % Child[0] xfer count = 0.00 KB, Throughput = 0.00 KB/sec, wall= 0.494, cpu= 0.004, %= 0.75 Child[1] xfer count = 40960.00 KB, Throughput = 2632212.00 KB/sec, wall= 0.031, cpu= 0.031, %=100.00 Child[2] xfer count = 0.00 KB, Throughput = 0.00 KB/sec, wall= 1.089, cpu= 0.023, %= 2.07 Child[3] xfer count = 38144.00 KB, Throughput = 73021.87 KB/sec, wall= 0.597, cpu= 0.054, %= 9.12 Children see throughput for 4 random writers = 109024.14 KB/sec Parent sees throughput for 4 random writers = 35788.71 KB/sec Min throughput per thread = 74303.73 KB/sec Max throughput per thread = 74303.73 KB/sec Avg throughput per thread = 27256.04 KB/sec Min xfer = 40960.00 KB CPU utilization: Wall time 2.187 CPU time 0.225 CPU utilization 10.30 % Child[0] xfer count = 0.00 KB, Throughput = 0.00 KB/sec, wall= 1.564, cpu= 0.046, %= 2.94 Child[1] xfer count = 37376.00 KB, Throughput = 34720.41 KB/sec, wall= 2.187, cpu= 0.089, %= 4.05 Child[2] xfer count = 0.00 KB, Throughput = 0.00 KB/sec, wall= 2.102, cpu= 0.048, %= 2.27 Child[3] xfer count = 40960.00 KB, Throughput = 74303.73 KB/sec, wall= 0.551, cpu= 0.043, %= 7.82

Permalänk
Avstängd

Detta kan nog vara intressant info för FreeBSD användare. Kanske kan detta bli en lång FreeBSD tråd? Och det är även intressant för andra som kör ZFS på andra OS. Ska väl titta i denna tråd då och då.