29.10.2013 23:05
OlegON
 
В общем, возникла задача устроить себе хранилище. Суть проблемы в том, что большинство файловых систем умеют контролировать собственную целостность, но не умеют контролировать целостность файлов в себе. Т.е. вы можете и не узнать, что храните кучу файликов из нулей с подходящими названиями вместо семейного фотоархива. Да, если по питанию гробануть, то часть файлов можно потерять, всякие fsck забегают, но меня это немного не устраивало, поскольку из древних сборников своих (еще со времен винды) я до сих пор не знаю, которые битые в архивах. В общем, порекомендовали ZFS, которую уже некоторое время назад сделали ядром модуля. Подумав, погуглив, почитав, решил отдать ей сразу два диска из NAS, воткнув их в комп.
Размаскировал (Gentoo):
Код:
sys-kernel/spl ~amd64
sys-fs/zfs-kmod ~amd64
sys-fs/zfs ~amd64
Код:
emerge zfs
Код:
echo "options zfs zfs_arc_max=536870912" >> /etc/modprobe.d/zfs.conf
Код:
zpool create -m /home/ftp/storage -f storage mirror /dev/sdc1 /dev/sde1
Код:
zfs set compression=on storage
zfs set atime=off storage
Код:
zfs create storage/backup
Код:
rc-update add zfs boot
будете смеяться, но это все :) причем, в отличие от других файловых систем, создание zfs проходит не медленнее выполнения ls или какой-то еще мелкой команды. Внимательно читавшие обратят внимание, что я включил компрессию. На самом деле помимо "on" можно включать еще несколько типов, но на lzjb и lz4 у меня конкретно так подтормаживал rsync.
29.10.2013 23:19
OlegON
 
Сначала как-то крутился в сторону ext4, но хотелось компрессии и проверки целостности файлов. Поставил btrfs, офигительная вещь, но в области беты, все же боязно. ZFS on Linux не так, чтобы далеко от беты ушла, но до чего же меня впечатлила структура команд! Удобно, легко запоминается, логично. Учитывая многолетнюю историю ее на Solaris, решился оставить.
Основная команда
Код:
zpool status
можно дополнительную статистику посмотреть
Код:
cat /proc/spl/kstat/zfs/arcstats
ну и нечто похожее на штатный iostat
Код:
zpool iostat -v
посмотреть настройки пулов
Код:
zfs get all
Сразу предупрежу, файловая система 128-битная, тяжелая, с пределами по количеству файлов и их объему недостижимыми на текущий момент и обозримом будущем. Любит память. И при всем этом помедленнее ext4 и btrfs. Последняя, кстати, меня просто убила тем, что rsync на почти полмиллиона файлов идет несколько секунд. На ext4 и zfs этот процесс, для примера, идет около 10 минут. Но, когда я тестировал zfs, смонтировав себе "рейд" из двух файликов, решил проверить, что будет, если искромсать один из них. Сделал одному truncate до половины, а потом раздул обратно. Файлики внутри фс читались, как ни в чем не бывало, зато
Код:
zfs status
сказал, что я бяка, а после
Код:
zfs scrub
мне было выведено сообщение с отсылкой в доку и предложением либо диск заменить на другой, либо сделать clean ошибок и забыть о проблеме. Да, кстати, проверка идет фоном, как в обычном рейде. Т.е. пнул scrub, в status пишется, что идет проверка и приблизительное время окончания. В общем, пока нравится.
29.10.2013 23:21
OlegON
 
Сейчас все пока в виде ext4 -rsync-> зеркало zfs. Т.е. если файлик побьется, то rsync его не потащит, а если обновится, то zfs потом проследит, чтобы не битый был.
14.12.2013 20:53
OlegON
 
Цитата:
Dec 14 20:21:27 oops kernel: SPL: Loaded module v0.6.2-1
Dec 14 20:21:27 oops kernel: general protection fault: 0000 [#1] SMP
Dec 14 20:21:27 oops kernel: Modules linked in: spl(O) af_packet nls_cp866 usbhid coretemp hwmon crc32c_intel ghash_clmulni_intel aesni_intel aes_x86_64 lrw gf128mul glue_helper ablk_helper cryptd i2c_i801 lpc_ich mfd_core thermal fan snd_hda_intel snd_hda_codec processor
Dec 14 20:21:27 oops kernel: CPU: 1 PID: 7528 Comm: modprobe Tainted: G O 3.10.17-gentoo #12
Dec 14 20:21:27 oops kernel: Hardware name: ASUS All Series/Z87-PRO, BIOS 0801 04/19/2013
Dec 14 20:21:27 oops kernel: task: ffff8807ea7e8b80 ti: ffff8807f0de0000 task.ti: ffff8807f0de0000
Dec 14 20:21:27 oops kernel: RIP: 0010:[<ffffffff810735bc>] [<ffffffff810735bc>] module_put+0xc/0x30
Dec 14 20:21:27 oops kernel: RSP: 0018:ffff8807f0de1dc0 EFLAGS: 00010282
Dec 14 20:21:27 oops kernel: RAX: ffff8807f82d2c80 RBX: ffff8807f0de1ef8 RCX: 00000000ffffffff
Dec 14 20:21:27 oops kernel: RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffffffffa0327f80
Dec 14 20:21:27 oops kernel: RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000
Dec 14 20:21:27 oops kernel: R10: 0000000000000006 R11: 0000000000000317 R12: ffffffffa0327f98
Dec 14 20:21:27 oops kernel: R13: ffffffffa0327f80 R14: ffffffffa0327fd0 R15: ffff8807f8b0d660
Dec 14 20:21:27 oops kernel: FS: 00007f357bee5700(0000) GS:ffff88081fa40000(0000) knlGS:0000000000000000
Dec 14 20:21:27 oops kernel: CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
Dec 14 20:21:27 oops kernel: CR2: 00007f0b6d252198 CR3: 00000007f0dd9000 CR4: 00000000001407e0
Dec 14 20:21:27 oops kernel: DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
Dec 14 20:21:27 oops kernel: DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Dec 14 20:21:27 oops kernel: Stack:
Dec 14 20:21:27 oops kernel: ffffffff8107602f ffffffff81072b20 ffffffff810d19e8 ffff8807eb73dc00
Dec 14 20:21:27 oops kernel: ffffffff0000001e ffff880700000001 ffff8807f0de1f08 ffff8807f0de1ef8
Dec 14 20:21:27 oops kernel: ffffffffa0328160 0000000000000000 ffff8807f0de1eb0 ffffffffa032b110
Dec 14 20:21:27 oops kernel: Call Trace:
Dec 14 20:21:27 oops kernel: [<ffffffff8107602f>] ? load_module+0x17af/0x1f90
Dec 14 20:21:27 oops kernel: [<ffffffff81072b20>] ? sys_getegid16+0x40/0x40
Dec 14 20:21:27 oops kernel: [<ffffffff810d19e8>] ? vfs_read+0x118/0x160
Dec 14 20:21:27 oops kernel: [<ffffffff81076995>] ? SyS_finit_module+0x95/0xa0
Dec 14 20:21:27 oops kernel: [<ffffffff815caed2>] ? system_call_fastpath+0x16/0x1b
Dec 14 20:21:27 oops kernel: Code: 85 ff 74 0b 48 8b 87 00 02 00 00 65 48 ff 00 f3 c3 66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 48 85 ff 74 23 48 8b 87 00 02 00 00 <65> 48 ff 40 08 83 3f 02 74 01 c3 56 48 8b bf f0 01 00 00 e8 7c
Dec 14 20:21:27 oops kernel: RIP [<ffffffff810735bc>] module_put+0xc/0x30
Dec 14 20:21:27 oops kernel: RSP <ffff8807f0de1dc0>
Dec 14 20:21:27 oops kernel: ---[ end trace d1b01d745e4e2966 ]---
Dec 14 20:21:27 oops kernel: znvpair: module license 'CDDL' taints kernel.
порадовал себя :( нельзя забывать пересобирать spl после пересборки ядра
23.06.2014 13:40
OlegON
 
Продолжаю восторгаться этой FS, сейчас внешний диск, на который периодически сливаю бекапы, переделал в ZFS.
Итак, выводы. Система просто бронебойная и удобная. На дисках внутренних включил дедубликацию, на внешних отключил.
При дедубликации, например, две копии DVD.iso занимают места, как один. Но архивы, которые я пишу на внешние диски, практически не дедублицируются.
Везде включил zfs copies=2, т.е. хранятся две копии данных. И lz4 в компрессии. Если выбирать просто on, т.е. gzip, жмется куда слабее.
Внешние диски создаю просто
Код:
zpool create -m /mnt/ext -f backup /dev/sdf
переписал, отмонтировал zpool export - выключил. Надо достать или дописать - включил, zpool import backup.

Дополню, что размер arc можно менять на ходу
Код:
echo 6073741824 > /sys/module/zfs/parameters/zfs_arc_max
echo 5073741824 > /sys/module/zfs/parameters/zfs_arc_min
описание параметров есть здесь:
01.04.2020 10:05
OlegON
 
Вчера потратил некоторое время, чтобы сравнить скорость записи и удаления в различных вариантах ZFS-настроек. Просто сделал два файлика на 6Гб и положил каталог /usr в директорию, которую потом rsync на диск с ZFS. Диск обычный SATA.
Выяснилось, что удаление происходит одинаково, в пределах погрешностей, зато копирование быстрее, если включать lze-сжатие и 1М блок. Затем идет lze и 8к, затем gzip и без сжатия, уже опять в пределах статистических погрешностей.
08.05.2020 18:11
OlegON
 
Выяснилось, что виртуалки на ZFS с компрессией живут куда бодрее, чем на XFS с теми же дисками.
Более того, фильмы в телевизор запускаются сильно шустрее, чем с XFS (но это я уже победил).
Вообще просто кайфовал больше месяца, до чего классная файловая система (выделил ей от 1Гб до 25Гб кеш, хорошо сдувается, если вдруг виртуалке память нужна).
Пока, в один прекрасный момент не налетел на обновление ядра 5.5.6. Упс. И dkms не смог собрать модуль.
Собственно, на сайте написано, что 0.8.3 поддерживает только ядра до 5.4 включительно. Имейте это ввиду.
Завел баг, попереписывался... Подождал две недели полной тишины и слез обратно на XFS. Посмотрим, как и что, пока только огорчения в виде заметного замедления виртуалок. Файл образа с пустым диском за счет компрессии, как и файл сохранения (памяти) виртуалки, на ZFS записывается раз в 10 быстрее.
31.05.2020 21:08
OlegON
 
кстати, только я слез на XFS, как авторы поправили модуль и я обратно перелез на ZFS, пользуюсь этой файловой системой, восторг. да, имейте ввиду, что Safe boot надо отключать в биосе, иначе модуль неподписанный, не даст загрузить... Я после обновления BIOS столкнулся...
Часовой пояс GMT +3, время: 10:36.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.