На домашнем сервере (Cel3300, 2Gb, 4xWD EARS 2Tb; FreeBSD 8.1 amd64) использую ZFS в конфигурации 4xRAID1 и RAID10:
root@server:/usr/local/etc (1768) zpool status
pool: storage
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
storage ONLINE 0 0 0
mirror ONLINE 0 0 0
gpt/storage0 ONLINE 0 0 0
gpt/storage3 ONLINE 0 0 0
mirror ONLINE 0 0 0
gpt/storage1 ONLINE 0 0 0
gpt/storage2 ONLINE 0 0 0
errors: No known data errors
pool: zroot
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
zroot ONLINE 0 0 0
mirror ONLINE 0 0 0
gpt/system0 ONLINE 0 0 0
gpt/system2 ONLINE 0 0 0
gpt/system3 ONLINE 0 0 0
gpt/system1 ONLINE 0 0 0
errors: No known data errors
Диски разбиты вот так (сделан отступ в 2 Мбайта в начале диска для исправления проблем AdvancedFormat у WD EARS винтов):
root@server:/usr/local/etc (1771) gpart show
=> 34 3907029101 ada0 GPT (1.8T)
34 2014 - free - (1.0M)
2048 128 1 freebsd-boot (64K)
2176 8388608 2 freebsd-swap (4.0G)
8390784 41943040 3 freebsd-zfs (20G)
50333824 3856695311 4 freebsd-zfs (1.8T)
=> 34 3907029101 ada1 GPT (1.8T)
34 2014 - free - (1.0M)
2048 128 1 freebsd-boot (64K)
2176 8388608 2 freebsd-swap (4.0G)
8390784 41943040 3 freebsd-zfs (20G)
50333824 3856695311 4 freebsd-zfs (1.8T)
=> 34 3907029101 ada2 GPT (1.8T)
34 2014 - free - (1.0M)
2048 128 1 freebsd-boot (64K)
2176 8388608 2 freebsd-swap (4.0G)
8390784 41943040 3 freebsd-zfs (20G)
50333824 3856695311 4 freebsd-zfs (1.8T)
=> 34 3907029101 ada3 GPT (1.8T)
34 2014 - free - (1.0M)
2048 128 1 freebsd-boot (64K)
2176 8388608 2 freebsd-swap (4.0G)
8390784 41943040 3 freebsd-zfs (20G)
50333824 3856695311 4 freebsd-zfs (1.8T)
Проблема: низкая скорость чтения и записи у ZFS RAID10:
Например, запись:
dd if=/dev/zero of=/storage/test.file bs=1000M count
1+0 records in
1+0 records out
1048576000 bytes transferred in 33.316996 secs (31472705 bytes/sec)
Или чтение:
dd if=/storage/test.file of=/dev/nulbs=1000M count=1
1+0 records in
1+0 records out
1048576000 bytes transferred in 13.424865 secs (78107005 bytes/sec)
systat при этом выглядит примерно так:
2 users Load 0,29 0,12 0,04 19 окт 14:27
Mem:KB REAL VIRTUAL VN PAGER SWAP PAGER
Tot Share Tot Share Free in out in out
Act 1048432 7548 2771456 11732 87616 count
All 1232436 10608 1076589k 29964 pages
Proc: Interrupts
r p d s w Csw Trp Sys Int Sof Flt cow 4770 total
69 8556 20k 517 776 798 20k 20581 zfod 104 em0 uhci0
2 ozfod 5 uhci3 ehci
9,7%Sys 0,0%Intr 0,0%User 0,0%Nice 90,3%Idle %ozfod 1997 cpu0: time
| | | | | | | | | | | daefr hdac0 257
===== prcfr 667 ahci0 259
dtbuf 3762 totfr 1997 cpu1: time
Namei Name-cache Dir-cache 100000 desvn react
Calls hits % hits % 26371 numvn pdwak
2 2 100 24996 frevn pdpgs
intrn
Disks ada0 ada1 ada2 ada3 da0 pass0 pass1 429056 wire
KB/t 128 128 128 127 0,00 0,00 0,00 1103516 act
tps 156 173 188 145 0 0 0 368484 inact
MB/s 19,51 21,62 23,48 18,03 0,00 0,00 0,00 cache
%busy 18 35 35 16 0 0 0 87616 free
buf
А с самих дисков читает вполне приемлимо:
1073741824 bytes transferred in 9.673196 secs (111001764 bytes/sec)
root@server:/usr/home/dyr (1769) dd if=/dev/gpt/storage1 of=/dev/null bs=1024M count=1
1+0 records in
1+0 records out
1073741824 bytes transferred in 9.887180 secs (108599400 bytes/sec)
root@server:/usr/home/dyr (1770) dd if=/dev/gpt/storage2 of=/dev/null bs=1024M count=1
1+0 records in
1+0 records out
1073741824 bytes transferred in 9.736273 secs (110282635 bytes/sec)
root@server:/usr/home/dyr (1772) dd if=/dev/gpt/storage3 of=/dev/null bs=1024M count=1
1+0 records in
1+0 records out
1073741824 bytes transferred in 11.112231 secs (96627025 bytes/sec)
В чём причина, не понимаю.
vfs.zfs.l2c_only_size: 3535428608
vfs.zfs.mfu_ghost_data_lsize: 23331328
vfs.zfs.mfu_ghost_metadata_lsize: 20963840
vfs.zfs.mfu_ghost_size: 44295168
vfs.zfs.mfu_data_lsize: 0
vfs.zfs.mfu_metadata_lsize: 0
vfs.zfs.mfu_size: 11698176
vfs.zfs.mru_ghost_data_lsize: 22306304
vfs.zfs.mru_ghost_metadata_lsize: 8190464
vfs.zfs.mru_ghost_size: 30496768
vfs.zfs.mru_data_lsize: 512
vfs.zfs.mru_metadata_lsize: 0
vfs.zfs.mru_size: 20443648
vfs.zfs.anon_data_lsize: 0
vfs.zfs.anon_metadata_lsize: 0
vfs.zfs.anon_size: 1048576
vfs.zfs.l2arc_norw: 1
vfs.zfs.l2arc_feed_again: 1
vfs.zfs.l2arc_noprefetch: 0
vfs.zfs.l2arc_feed_min_ms: 200
vfs.zfs.l2arc_feed_secs: 1
vfs.zfs.l2arc_headroom: 2
vfs.zfs.l2arc_write_boost: 8388608
vfs.zfs.l2arc_write_max: 8388608
vfs.zfs.arc_meta_limit: 106137600
vfs.zfs.arc_meta_used: 104179208
vfs.zfs.mdcomp_disable: 0
vfs.zfs.arc_min: 53068800
vfs.zfs.arc_max: 424550400
vfs.zfs.zfetch.array_rd_sz: 1048576
vfs.zfs.zfetch.block_cap: 256
vfs.zfs.zfetch.min_sec_reap: 2
vfs.zfs.zfetch.max_streams: 8
vfs.zfs.prefetch_disable: 1
vfs.zfs.check_hostid: 1
vfs.zfs.recover: 0
vfs.zfs.txg.write_limit_override: 0
vfs.zfs.txg.synctime: 5
vfs.zfs.txg.timeout: 10
vfs.zfs.scrub_limit: 10
vfs.zfs.vdev.cache.bshift: 16
vfs.zfs.vdev.cache.size: 10485760
vfs.zfs.vdev.cache.max: 16384
vfs.zfs.vdev.aggregation_limit: 131072
vfs.zfs.vdev.ramp_rate: 2
vfs.zfs.vdev.time_shift: 6
vfs.zfs.vdev.min_pending: 4
vfs.zfs.vdev.max_pending: 10
vfs.zfs.cache_flush_disable: 0
vfs.zfs.zil_disable: 0
vfs.zfs.zio.use_uma: 0
vfs.zfs.version.zpl: 4
vfs.zfs.version.spa: 15
vfs.zfs.version.dmu_backup_stream: 1
vfs.zfs.version.dmu_backup_header: 2
vfs.zfs.version.acl: 1
vfs.zfs.debug: 0
vfs.zfs.super_owner: 0
Ещё немного раздражает наличие опций файловой системы sharesmb и sharenfs — понятно, что они в Solaris делают, но во FreeBSD, насколько я понимаю, они просто не работают.