FreeBSD и ZFS

Как знают многие, есть такая ОС: FreeBSD. Плохая она или хорошая неважно, это выходит за рамки этого опросника. Любителям написать что-то типа «FreeBSD — RIP» просьба прогуляться на ЛОР и оставить эту надпись там.
Также, есть такая файловая система под названием ZFS, разработка недавно съеденной Sun Microsystems. Файловая система крайне интересная и достаточно замечательная.

Я — системный администратор ХабраХабра и в скором времени планирую достаточно серьезный апгрейд серверного хозяйства. Среди идей имею идею использовать ZFS. Недавно я стал тестировать ZFS на FreeBSD 8.1-RELEASE. Полет нормальный, кернел паников не было ни разу, скорость удовлетворяет. Но в интернете весьма разные отзывы, порой просто неадекватные. Уровень абстракции файловой системы просто потрясающий, разделами можно рулить как хочешь прямо на лету; скорость хорошая, местами быстрее UFS2+SU, да и развернуть ее тоже очень просто. Радует изкоробочная компрессия разделов, снапшоты и прочие полезности. Я ее поднял на своем тестовом сервере: все работает нормально, никаких проблем не замечал.

Но все таки хочу узнать мнения тех, кто непосредственно сталкивался с разворачиванием ZFS на боевом сервере под управлением FreeBSD и использовал такую связку под реальной нагрузкой достаточно много времени. Синтетические тесты тоже интересны, но в меньшей степени, ибо синтетические такие синтетические. Да: я использую только стабильные сборки ОС, опрос относится в большей мере к ним.
  • Вопрос задан
  • 13998 просмотров
Решения вопроса 1
pepelac
@pepelac
Около года FreeBSD c ZFS в продуктиве на файловом сервере. Средняя отдача — 1ТБ трафика в сутки. Сервер: CPU — 2xOpteron 2214, Mem — 32G, контроллер — AMCC 9650SE-12M, диски — Seagate серии NS, 10-12 штук + SSD Intel X25-M под кэш устройство. Ни одного зависания связанного с ZFS за всё время работы сервера. Единственная проблема — замена отказавших дисков в raidz. Делаешь replace диску, пул резилверится на новый диск, а старый не уходит из конфигурации. Находил PR по этому багу, починили ли его или нет — не знаю.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 15
@Dyr
На домашнем сервере (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, насколько я понимаю, они просто не работают.
Ответ написан
fenrirgray
@fenrirgray
Синтетический тест: www.phoronix.com/scan.php?page=article&item=zfs_ext4_btrfs&num=3
Но это фороникс. И тест, как обычно, имеет мало отношения к реальности )

Вообще у меня один сервер с бэкапами, резервный, стоит с zfs. Из любопытства т.к. оно там совершенно не нужно. Ну, вроде работает, что еще сказать, нагрузки там особой нет, выключений питания не бывает, фря не виснет.

Мне кажется, что если вам _действительно_ нужны те преимущества, которые дает zfs — тогда её стоит использовать. Если же не очень нужны — не стоит т.к. это все же experimental.
Ответ написан
klassik
@klassik
Около месяца тестирую FreeBSD с ZFS как файл сервер. Доступ около 400-800 человек в день. Пока все радует. Проблем в работе не замечаю. Если еще через месяц не будет проблем поставлю ZFS на основной файл-сервер, в надежде хоть немного снизить нагрузку.
Ответ написан
Комментировать
SADKO
@SADKO
aka -=SADKO=-
Ребята, а кто-нибудь уже пережил падение одного из хардов объединенных ZFS под фряхой?
В солярисе всё замечательно, и ZFS вполне можно довериться, а вот будет ли всё так же здорово случись что во фряхе?
Бэкап конечно наше всё, но интересует в первую очередь жизнеспособность системы в случае выхода из строя одного из дисков.
Ответ написан
@cadmi
да в принципе терпимо. не сказать, чтобы быстрее (файлопомойка), но очевидно удобнее.
Ответ написан
Комментировать
click0
@click0
Системный & сетевой архитектор
Эксплуатирую ZFS на FreeBSD 9.0-CURRENT:

  1. raidz2 из 6 дисков + диск для системы — в основном файлопомойка, хранилище торрентов и бэкап-сервер via ftp
  2. raid 1 с загрузкой на ZFS — nginx+php+mysql
  3. одиночный диск ZFS — nginx+php+mysql

При копировании большого количества мелких файлов ~30G в пределах одного пула система начинает тупить.
Но тут уже приходится мирится или высокая скорость IO или временные тормоза при переполнении vfs.zfs.arс…
Ответ написан
Комментировать
@cadmi
Не умеет. Но и проблемы в этом нет никакой. Или у кого-то это ежедневная задача?
Так разве что, перед пацанами померяться: «элвээм это делает в полпинка!» :)
Ответ написан
@vjjvr
На боевом все круто если использовать снапшоты.
Эта киллер-фича до сих пор в ZFS.
Ответ написан
Комментировать
intnzy
@intnzy
Слегка офтопик, но не могу не сказать.
Как администратору большого проекта следовало бы взять за правило вводить в энтерпрайз только хорошо проверенные и оттестированные технологии, в которых хорошо разбираетесь, и по поводу которых можете иметь свое взвешенное мнение.
А подход — «а посоветуйте ка мне тут штучек разных, а я их заюзаю на горячую» — это тупик.
ZFS на x86 — пока что слишком зелена для ентерпрайз продакшн. Хотите ZFS — берите Солярку на T2 — для многопоточных веб-делов — самое то. Ну и ясен красен нужно знать Solaris ))).
Ответ написан
nicolnx
@nicolnx
а чем оно лучше LVM over RAID(1,5) под линухом?
Ответ написан
YaakovTooth
@YaakovTooth
Ребят, использовал LVM на дебиане, сейчас он же крутится на фре. Делаю резервный файл-сервер, LVM/ZFS юзаю пока исключительно для объединения винчестеров разного размера в один большой диск.

Действительно ZFS не умеет уменьшение пула? LVM это делает в полпинка через pvmove. :(

Спасибо.
Ответ написан
Комментировать
@cadmi
500+750+750 — это типа stripe был? ну, raid0 мол, в одну кучу все?

Потому что если там будет mirror или raidz, то использоваться будет все равно по 500 на каждом диске (минимальный в пуле). В этом случае вообще никаких проблем, zpool replace бубубу
Ответ написан
@cadmi
С «кучей» вопрос отдельный :) Могу предложить hint, как разбираться со всеми этим zpool {add,replace,attach,detach,online,offline}.

Создайте несколько файлов (можно разного размера, в тех пропорциях, которые интересны).
И делайте zpool _из этих файлов_ :) zpool create testpool /path/to/file10G /path/to/file20G /path/to/file20G
Ну и пробуйте «отцепить диск» из пула, «прицепить обратно», «в оффлайн», обратно «в онлайн», сделать replace одного на другой. И смотрите на практике, что можно сделать, чего Вам не позволят. Ничего не сломаете, инфа 100% :) И никаких винтов не нужно вообще.
Ответ написан
@cadmi
У меня solaris'ов гораздо больше, чем bsd, так что тут я плохой советчик :) Мне было бы проще сделать очередной solaris box. Но там для неподготовленного человека может быть то ещё дао с компиляцией типичного софта (хотя есть pkgsrc от netbsd, считай — те же порты, или вообще opencsw — ничего компилять не надо).

Ну и сама установка минимальной ОС (что-то типа Base System во FreeBSD, метров на 200 без лишнего трэша) тоже потребует определенной усидчивости и желания «поразбираться». Ну или как вариант — OpenSolaris в дефолтной установке, но это 4 гига «всего подряд» вместе с иксами и прочей требухой.
Ответ написан
nowfine
@nowfine
сисадмин 30+ левел
Три года миновало. Поделитесь опытом?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы