zfs3

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

zfs - введение


ZFS поддерживает большие объёмы данных, работает поверх устройств, т.е. из нескольких hdd/ssd делает программный raid, её две основных особенности - контроль целостности данных на основе контрольных сумм, возможность каждому пользователю быстро выделить свой пул фиксированного размера, и возможность создания снимков файловой системы.

zfs4

Единственная проблема у zfs, как и у любой другой, созданной для быстрой работы с большими объёмами данных - вероятность восстановления в случае краха довольно мала. Правда, в zfs это компенсируется тем самым контролем целостности и за три года не наблюдалось сбоев, не вызванных человеческим фактором вмешательства администратора. инструменты восстановления пулов есть, но в тех нескольких наблюдаемых случаях люди постарались так, что восстановить данные оказалось невозможно, поэтому определить их действенность пока не представлялось возможным.

Кстати, у zpool есть опция zpool status -x
<br>[waryag@gaia] ~% zpool status -x<br>all pools are healthy<br>

Очень удобно для алертов.

На сайте оракла полное руководствор по zfs, даже на русском:

О снимках


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

zfs snapshot


В моём случае использовался freenas, поэтому я не буду приводить тут первичные настройки, их итак очень много. Хранилище - volume manager - делаем пул. Если нужен cifs для сетевого доступа windows, то в пользователях создаём пользователя с домашней директорией этого пула, в службах включаем ssh, при необходимости что-то ещё, настраиваем сетевые шары. В создании снимков задаём задания снапшотов.
В моём случае это снапшоты каждые 15 минут, хранящиеся два дня, и ежедневные, хранящиеся два месяца.

Ну и получаем например такую картину:
<br>[waryag@gaia] ~% zpool list<br>NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT<br>freenas-boot 5.84G 2.85G 2.99G - - 48% 1.00x ONLINE -<br>gaia 1.81T 155G 1.66T - 5% 8% 1.00x ONLINE /mnt<br>


Очень часто нужно не откатить назад весь пул, а взять из снапшота состояние файла/каталога на какой-то момент времени. Например, удалён важный плейлист с каналами iptv, а посмотреть хочется.
<br>[waryag@gaia] ~/sansara/letters% ls<br>./ .server.txt.kate-swp* akt.doc work/<br>../ 123* hyperspace_IPTV_playlist.m3u<br>.directory SkyNet_IPTV_playlist.m3u keys waryag*<br>[waryag@gaia] ~/sansara/letters% rm SkyNet_IPTV_playlist.m3u<br>[waryag@gaia] ~/sansara/letters% ls<br>./ .server.txt.kate-swp* hyperspace_IPTV_playlist.m3u<br>../ 123* keys waryag*<br>.directory akt.doc work/<br>


Проще всего открыть доступ к .zfs/snapshot:
<br>[waryag@gaia] /mnt/gaia# su<br>[waryag@gaia] /mnt/gaia# zfs set snapdir=visible gaia<br>


И с вашей клиентской машины откроется доступ к .zfs/snapshot.
!!ВНИМАНИЕ!! большое количество (100+) снапшотов в этом каталоге вешают долфин/наутилус на клиентских машинах насмерть, вслед за чем подвешивается плазма (что и произошло во время написания статьи, хоть и между gaia и клиентской infinity 1gb сеть, у обоих по 16 гигов памяти и 8 ядер процессоры), так что все дальнейшие операции на клиентах лучше выполнять из консоли или консольных менеджеров типа mc.
для наглядности покажу в командах, но с mc всё конечно гораздо проще.
<br>[waryag@infinity ~]$ cd /gaia/sansara/letters/<br>[waryag@infinity letters]$ ls<br>123* akt.doc hyperspace_IPTV_playlist.m3u keys waryag* work/<br>[waryag@infinity letters]$ <br>


Ищем снапшот с нужной датой, заходим туда
<br>cd /gaia/.zfs/snapshot/auto-20150529.1134-2d/sansara/letters<br>[waryag@infinity letters]$ ls<br>123* akt.doc hyperspace_IPTV_playlist.m3u keys waryag* SkyNet_IPTV_playlist.m3u work/<br>[waryag@infinity letters]$<br>

Копируем плейлист обратно

<br>[waryag@infinity letters]$ cp SkyNet_IPTV_playlist.m3u /gaia/sansara/letters/<br>[waryag@infinity letters]$ ls /gaia/sansara/letters/<br>123* akt.doc hyperspace_IPTV_playlist.m3u keys waryag* SkyNet_IPTV_playlist.m3u work/<br>[waryag@infinity letters]$<br>


Готово!


zfs2

Автор: Артём Ягодкин