Сведения о вопросе

Martincow

17:39, 7th August, 2020

Теги

Хабр   FreeBSD   ZFS    

FreeBSD и ZFS

Просмотров: 422   Ответов: 18

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

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

Но все таки хочу узнать мнения тех, кто непосредственно сталкивался с разворачиванием ZFS на боевом сервере под управлением FreeBSD и использовал такую связку под реальной нагрузкой достаточно много времени. Синтетические тесты тоже интересны, но в меньшей степени, ибо синтетические такие синтетические. Да: я использую только стабильные сборки ОС, опрос относится в большей мере к ним.



  Сведения об ответе

VERSUION

06:50, 14th August, 2020

Около года FreeBSD c ZFS в продуктиве на файловом сервере. Средняя отдача — 1ТБ трафика в сутки. Сервер: CPU — 2xOpteron 2214, Mem — 32G, контроллер — AMCC 9650SE-12M, диски — Seagate серии NS, 10-12 штук + SSD Intel X25-M под кэш устройство. Ни одного зависания связанного с ZFS за всё время работы сервера. Единственная проблема — замена отказавших дисков в raidz. Делаешь replace диску, пул резилверится на новый диск, а старый не уходит из конфигурации. Находил PR по этому багу, починили ли его или нет — не знаю.


  Сведения об ответе

PHPH

04:31, 21st August, 2020

На домашнем сервере (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, насколько я понимаю, они просто не работают.


  Сведения об ответе

PIRLO

23:00, 9th August, 2020

Синтетический тест: www.phoronix.com/scan.php?page=article&item=zfs_ext4_btrfs&num=3
Но это фороникс. И тест, как обычно, имеет мало отношения к реальности )

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

Мне кажется, что если вам _действительно_ нужны те преимущества, которые дает zfs — тогда её стоит использовать. Если же не очень нужны — не стоит т.к. это все же experimental.


  Сведения об ответе

SSESION

09:11, 3rd August, 2020

Использую ZFS и FreeBSD 8.1 для бэкап-сервера (raidz на пачке 2TB дисков).
Нагрузка невелика (на то он и бэкап), проблем ноль.


  Сведения об ответе

padenie

15:42, 12th August, 2020

Около месяца тестирую FreeBSD с ZFS как файл сервер. Доступ около 400-800 человек в день. Пока все радует. Проблем в работе не замечаю. Если еще через месяц не будет проблем поставлю ZFS на основной файл-сервер, в надежде хоть немного снизить нагрузку.


  Сведения об ответе

dumai

23:14, 19th August, 2020

Ребята, а кто-нибудь уже пережил падение одного из хардов объединенных ZFS под фряхой?
В солярисе всё замечательно, и ZFS вполне можно довериться, а вот будет ли всё так же здорово случись что во фряхе?
Бэкап конечно наше всё, но интересует в первую очередь жизнеспособность системы в случае выхода из строя одного из дисков.


  Сведения об ответе

+-*/

12:04, 9th August, 2020

да в принципе терпимо. не сказать, чтобы быстрее (файлопомойка), но очевидно удобнее.


  Сведения об ответе

pumpa

03:58, 15th August, 2020

Эксплуатирую 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с…


  Сведения об ответе

dumai

20:46, 24th August, 2020

Не умеет. Но и проблемы в этом нет никакой. Или у кого-то это ежедневная задача?
Так разве что, перед пацанами померяться: «элвээм это делает в полпинка!» :)


  Сведения об ответе

ASSembler

13:48, 9th August, 2020

На боевом все круто если использовать снапшоты.
Эта киллер-фича до сих пор в ZFS.


  Сведения об ответе

qwerty101

07:17, 9th August, 2020

Слегка офтопик, но не могу не сказать.
Как администратору большого проекта следовало бы взять за правило вводить в энтерпрайз только хорошо проверенные и оттестированные технологии, в которых хорошо разбираетесь, и по поводу которых можете иметь свое взвешенное мнение.
А подход — «а посоветуйте ка мне тут штучек разных, а я их заюзаю на горячую» — это тупик.
ZFS на x86 — пока что слишком зелена для ентерпрайз продакшн. Хотите ZFS — берите Солярку на T2 — для многопоточных веб-делов — самое то. Ну и ясен красен нужно знать Solaris ))).


  Сведения об ответе

crush

16:31, 23rd August, 2020

а чем оно лучше LVM over RAID(1,5) под линухом?


  Сведения об ответе

P_S_S

08:27, 5th August, 2020

Ребят, использовал LVM на дебиане, сейчас он же крутится на фре. Делаю резервный файл-сервер, LVM/ZFS юзаю пока исключительно для объединения винчестеров разного размера в один большой диск.

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

Спасибо.


  Сведения об ответе

piter

03:21, 18th August, 2020

500+750+750 — это типа stripe был? ну, raid0 мол, в одну кучу все?

Потому что если там будет mirror или raidz, то использоваться будет все равно по 500 на каждом диске (минимальный в пуле). В этом случае вообще никаких проблем, zpool replace бубубу


  Сведения об ответе

+-*/

17:27, 21st August, 2020

С «кучей» вопрос отдельный :) Могу предложить hint, как разбираться со всеми этим zpool {add,replace,attach,detach,online,offline}.

Создайте несколько файлов (можно разного размера, в тех пропорциях, которые интересны).
И делайте zpool _из этих файлов_ :) zpool create testpool /path/to/file10G /path/to/file20G /path/to/file20G
Ну и пробуйте «отцепить диск» из пула, «прицепить обратно», «в оффлайн», обратно «в онлайн», сделать replace одного на другой. И смотрите на практике, что можно сделать, чего Вам не позволят. Ничего не сломаете, инфа 100% :) И никаких винтов не нужно вообще.


  Сведения об ответе

dump

01:51, 11th August, 2020

У меня solaris'ов гораздо больше, чем bsd, так что тут я плохой советчик :) Мне было бы проще сделать очередной solaris box. Но там для неподготовленного человека может быть то ещё дао с компиляцией типичного софта (хотя есть pkgsrc от netbsd, считай — те же порты, или вообще opencsw — ничего компилять не надо).

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


  Сведения об ответе

LAST

10:40, 18th August, 2020

а чем в итоге всё закончилось? тоже интересует как будет жить ZFS на FreeBSD
спасибо


  Сведения об ответе

SKY

14:44, 7th August, 2020

Три года миновало. Поделитесь опытом?


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться