ZFS

Про Самбу 4.6

У одного моего друга есть файлсервер с самбой. Прочитал я он CVE-2017-7494, пригорюнился и сделал pkg install samba46 (была 4.3).

Прошла неделя и зоркий глаз заметил, что утрешний бэкап, который укладывался в час (начинался в 7 и к восьми всяко завершался) теперь идет иногда и больше двух часов. Пригорюнился.

Запатчил 4.3 патчем от 4.4-4.6 (благо там 4 строчки и место это не менялось) - и стало обратно хорошо, скорость на интерфейсе при бэкапе/верификации 2-2.5 гигабита (упирается дальше в диски), а с 4.6 было 1+. Конфиг, понятно, один и тот же.

Вполне возможно, конечно, что если потюнить, ну там удалить из smb4.conf те настройки производительности, которые для 4.3 были сделаны, а поставить какие-то другие, то станет обратно хорошо. Но времени и сил на это жалко.

Эх!

Увы, до круглой цифры (скорости чтения) не дотянуло (и не дотянет, уже более медленная зона на дисках пошла), а было так близко.....

Нет, ничего не сломалось, просто я понял что

  • запасного диска в шкафу нет, а это неправильно, опять ужаленым в жопу метаться по магазинам если что
  • Гелиевые диски - систематически холоднее обычных, градусов эдак на 6, а лето на носу (они и систематически медленнее на несколько процентов, но мне хватает).
  • Если закупаться, то сейчас, бакс вот на рупь вверх уже прыг, а цены - еще нет.

Ну и купил гелиевый, а обычный - на полку.

Про ZFS L2ARC

В хорошую погоду zpool iostat -v zdata 5 выглядит теперь так

Но на самом деле, все как-то хуже. Не сильно, но все-таки.

Вот тут случился accidental reboot и я на пустом кэше попробовал так

tar cf /dev/null some-75Gb-folder

Ну и смотрю на скорости (на самом деле там tar cf - .. | mbuffer -s 16k -o /dev/null чтобы скорости видеть):

  • Первый проход: ~650MB/sec
  • ...

ZFS primarycache=metadata и recordsize

Значит продолжение вот этой истории (в стиле "что вижу - то пою"): Про zfs primarycache (самая мякотка там в комментариях):

  1. Поставил бэкапному dataset recordsize=64k (что соответствует типичному запросу на чтение самбой)
  2. Подождал несколько дней, новые бэкапы создались с таким размером записи
  3. Поставил primarycache=metadata
  4. Запустил проверку одного из новых бэкапов:
    • Скорость чтения снизилась до 100-150Mb/sec (было, с мегабайтной записью и primarycache=all 150-200)
    • Скорость чтения с дисков соответствует скорости отдачи в сеть, "зря" ничего не
  5. ...

Про zfs primarycache

У одного моего друга есть FreeBSD бокс, на нем ZFS, Samba и 10G-ethernet. К этому боксу подключена рабочая станция с Acronis Workstation, которая туда делает бэкапы.

Бэкапы делаются на отдельный zfs pool, я подумал "а нахрена бэкапами размывать кэши" и сказал этому пулу

zfs set primarycache=metadata zbackup

Получилась такая фигня: если у Acronis-а запустить проверку бэкапа, то:

1. C ZFS-тома читается ~150-200 мегабайт/сек:
$ zpool iostat zbackup 1
...
zbackup     2,36T  2,17T    195      0   195M      0
...

Заканчивая неделю ZFS

Заканчивая неделю (или полуторамесячник) ZFS, финальные тесты. Списал данные, добавил еще один диск, прежде чем возвращать данные - маленько потестировал

Оборудование: i3-6300T, 32GB RAM, 7 дисков (6Tb HGST: 4 штуки 7k6000 и 3 штуки He8), диски подключены к чипсетному контроллеру (Intel C236).

Окружение: FreeBSD 11.0-p4

Методика: собираем пул, делаем на нем один датасет с размером блока 1m или 128к, пишем 200-гигабайтный файл
dd if=/dev/zero of=/zdata/testset bs=1m count=200k
Затем читаем этот файл той же командой dd в /dev/nul с...

(надеюсь) в последний раз про ZFS

Перебросил один (самый большой) датасет туда-сюда, старый пока не стирал.

И вот сравнение ("чтение реального микса файлов"):

Было (правда я через 20+ минут задолбался ждать и нажал Ctrl-C, за это время оно прочитало 200Gb):

$ tar cf - datasetname |  dd of=/dev/null
^C418664864+0 records in
418664864+0 records out
214356410368 bytes transferred in 1414.744341 secs (151516005 bytes/sec)

Стало (аналогично, прервал прочитав 200Gb):

$ tar cf - /archive2/datasetname |  dd of=/dev/null
^C421087495+0 records in
421087494+0 records out
215596796928
...

Slow ZFS read: проблема не в коде а в данных на диске

Картинка, вероятно, уже надоела, но вот вам очередная порция тестов.

Ящик: Intel i5-2400, 16Gb RAM, Adaptec 5805, 5x4Tb (HGST NAS) в JBOD, собраны в RAIDZ2.

Свободного места достаточно:

$ zpool list
NAME      SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
zdata    18,1T  5,11T  13,0T         -     9%    28%  1.00x  ONLINE  -

настройки в loader.conf:

vm.kmem_size="15G"
vfs.zfs.arc_max="14G"

Загружаем FreeBSD 11.0-RELENG:...

FreeBSD ZFS read: 11-STABLE тоже поломана

Все оказалось еще гораздо хуже, чем казалось на первый взгляд:

  1. FreeBSD 11-STABLE тоже поломана
  2. И поломка - это свойство, возникающее при записи файла.

Давайте значит по порядку.

I. Другой ящик:

  • i3-6300T, 32Gb RAM, 6 дисков по 6Tb в RAIDZ2, диски подключены к контроллеру на материнке.

II. Берем FreeBSD 11-STABLE, конкретно вот эту вот:

FreeBSD home-gw.lexa.ru 11.0-STABLE...

FreeBSD ZFS read speed: они убили кенни!

Вчерашний вечер у меня тоже прошел не скучно.

Я взял уже знакомый вам стенд:

  • i5-2400, 16GB RAM
  • LSI 9211-8i (FW 16.0, IT-mode, без BIOS)
  • 7 дисков WD1003FBYX

И начал делать так:

  1. Скачиваю с ftp.freebsd.org FreeBSD-NN.y-RELEASE-amd64-memstick.img
  2. Пишу его на флешку
  3. Загружаюсь с этой флешки (никаких дополнительных настроек!)
  4. Собственно тестирую:

zpool create -O recordsize=nn ztest raidz2 /dev/gpt/DISK[0-5/6]
...

Про ZFS prefetch (2)

Продолжение вот этого вот текста, теперь более систематически.

АХТУНГ. Все описанные ниже эксперименты (и прошлая серия экспериментов) - относятся ТОЛЬКО к FreeBSD-12. На 10.3-11.0 (РЕЛИЗНЫХ, в -stable все похоже хуже) картина принципиально другая и деградации скорости чтения при маленькой глубине префетча нет.

Провел вчерашнее утро, а затем - вечер за стендом,  который схематически показан на картинке (там 7 дисков, потом...

Про ZFS prefetch

Вынесу из комментариев, потому что это важное, чтобы потом самому было легче найти.

АХТУНГ. Все описанные ниже эксперименты (и прошлая серия экспериментов) - относятся ТОЛЬКО к FreeBSD-12. На 10.3-11.0 (релизных! со -stable все сложно) картина принципиально другая и деградации скорости чтения при маленькой глубине префетча нет.

Собрал я тут ZFS массив на следующие (я надеюсь) лет пять: 6x6Tb, в RAIDZ2 (2 - потому что я устал срочно бегать в магазин, покупать замену вылетевшему диску), диски HGST, правда разные...

Про ZFS и манипулирование данными

Таскал тут данные туда-сюда, RAIDZ1 разобрать, RAIDZ2 собрать.

Но так как дисков/питания на "поднять оба массива сразу" не хватало, делал это хитровывернутым образом - скопировал на одиночные диски, потом собрал degraded-массив без этих дисков (подстановкой файликов из нулей вместо них), скопировал обратно, восстановил четность.

И смотрю я теперь на iostat -x 100 и не радуюсь:

device     r/s   w/s    kr/s    kw/s qlen svc_t  %b
da0      330.3  10.1 11156.0   104.6    0   3.9  20
da1      330.2  10.4 11152.1   107.8   
...

Поддерживает ли UFS2 файлы больше 1Tb?

Да, поддерживает (интернеты в этом расходятся, было немножко нервно):

lexa@home-gw:~# ls -l /DATA/
total 3446778112
-rw-r--r--  1 root  wheel   877456780272 Nov  2 18:24 archive-books3
-rw-r--r--  1 root  wheel  1844203276336 Nov  3 01:49 archive-photoarc
-rw-r--r--  1 root  wheel   171793351432 Nov  2 19:47 archive-photoother
-rw-r--r--  1 root  wheel   635185397760 Nov  3 11:49 archive-raw-archive

 

Это уже второй 6-терабайтник заполняется, игра в 15, так ее растак:

  • Cбэкапить текущий ZFS (6x4Tb, RAIDZ1)
  • Собрать новый в деградированном виде (6xTB, RAIDZ2, два висят
  • ...

Когда в руке молоток - все кажется гвоздями

Наконец я могу, не ограничиваясь скоростью источника, померять скорость своих Samba-ящиков:

Сначала оно жрет его в ARC - и оттуда горб (1+Gb/sec) на первые гигабайт 8, потом легкий провал (сброс кэша), потом sustained на ~600.

Конфиг:

  • 8x1Tb WD Re (дискам 4 года, они ~100+ со шпинделя выдают, надо будет поменять постепенно на те, которые 150+ могут, а больше и не надо уже)
  • Adaptec 5805 (и
  • ...

ZFS L2ARC performance

Преамбула:

(У одного моего друга) есть ZFS-pool такой вот конфигурации:

  • i5-2400 CPU @ 3.10GHz
  • avail memory = 16477163520 (15713 MB)
  • FreeBSD 12.0-CURRENT #4 r302772M
  • 8xTb SATA в RAIDZ2.
    Подключены к Adaptec 5805, сделаны simple volumes по одному диску
  • 3 консумерских SSD-шки (OCZ Vertex4, OCZ Agility 3, Intel 520) в L2ARC
    • я пробовал объединять их в gstripe, счастья не увидел особого
    • и сейчас они как отдельные диски подключены.

На пуле лежат RAW-фоточки к которым я хожу...

ZFS любви псто

Вот за такое вот ZFS люблю конечно нежно

Оно, конечно, В РАЗЫ быстрее, чем примонтировать два ящика к WS и каким-то userland-софтом гонять туды-сюды. Ну и вторые порты на 10G вот пригодились, повязал два сервера личным линком (10G-карта начала греться, пришлось еще кулер к ней приделывать...)

И, насколько я вот понимаю, zfs send - шлет же чексуммы (а recv - проверяет?) то есть у такого бэкапа еще и целостность гарантирована "сама"?

Вот по дороге едет ZIL и я им буду....

Вот есть у меня стораджбокс, в нем 8x1Tb WD RE в RAID6 на Adaptec 5805.

Тогда, когда я его собрал, то есть 4 года назад, я сравнивал аппаратный RAID с RAIDZ2 (и zvol на нем) и аппаратный был значительно быстрее. Конкретные цифры в блоге не нашел, но если память не врет, то RAIDZ2 была процентов на 20-25 медленнее на записи больших файлов.

И вот сегодня, засунув в тот же ящик еще 6 дисков (3x1Tb ноутбучные 2.5" и три старых...

ZFS Performance Q

В незапамятные времена, а именно четыре года назад, я намерял, что от ускорения процессора (или памяти?) ZFS-у бывает счастье. Было это на FreeBSD 9-STABLE.

Прошло четыре года и вопрос опять нагревается, хочу поменять 65-ваттные процессоры в ящиках на что-то попроще, а заодно добавить шпинделей и L2ARC.

FreeBSD у меня в одном ящике 10-STABLE, а в другом 11-чего-то там.

Ну и вопрос, собственно, более конкретный:

Что ему (ZFS на актуальных FreeBSD) более любо: частота, количество ядер или вовсе DDR4 RAM?

Или может там вообще все оптимизировали по самые гланды и сойдет и Atom? Или не Atom, а 20-вт Pentium D?

Скорости которые меня интересуют - мегабайт 700-900 в секунду (три старых SSD-шки в L2ARC, ~10 шпинделей в RAIDZ2).

zfs defrag?

Граждане читатели!

А для дефрагментации ZFS придумали что-то лучше чем:

zfs snapshot pool/fs@1

zfs send pool/fs@1 | zfs recv pool/fsnew

zfs destroy -r pool/fs

zfs destroy pool/fsnew@1

zfs rename pool/fsnew pool/fs

писал по памяти от фонаря, но смысл, надеюсь, передал...

Pages

Subscribe to ZFS