LINUX.ORG.RU

Перевод NAS на zfs

 , ,


3

2

На домашнем NAS’e кончается место, задумался, не пора ли перейти на zfs попутно увеличив ёмкость.

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

Дано:

  • i3 3440 / 4Gb (не ECC) / 4 SATA / 3х3Tb Toshiba P300 @ Gentoo stable, если это важно, могу использовать freenas/nas4free
  • На дисках ext4, подключены отдельно
  • один заполнен на 90%, второй на 75%, третий пустой (новый, виновник торжества), теоретически для процесса миграции могу высвободить один действующий диск (итого максимум - 2 пустых)
  • Резервная копия важных данных rsnapshot’ом складывается на второй физический диск
  • Остальные данные не резервируются

Цель:

  • Правильно добавить новый диск в NAS, чтобы в будущем избежать подводных камней
  • Собрать диски в один массив (не критично, но было бы удобно)
  • Не сильно потерять в объеме
  • Не потерять в надежности
    • Инкрементная ререзрвная копия важных данных (сейчас это делает rsnapshot)
    • Возможность восстановить остальные данные (сейчас другие данные никак не резервируются)
  • Производительность и избыточность не требуются (это обычная домашняя файлопомойка, которая преимущественно состоит из BD-рипов)

Правильное ли решение, избавиться от oracle-фобии, и сделать zpool из своих дисков?

Если правильно понял документацию, затея целесообразна при использовании mirror или raidz1 и выше, т.к. stripe будет менее надёжен, чем текущая конфигурация с отдельными дисками.

Исходя из этого, нужно сделать осознанный выбор между mirror и raidz1

Из всей массы статей на эту тему, мне показалась наиболее логичной эта статья: https://jrs-s.net/2015/02/06/zfs-you-should-use-mirror-vdevs-not-raidz/ , которая подталкивает меня сделать выбора в пользу mirror, кроме того, с текущим кол-вом hdd (максимум 2 свободных), я не смогу собрать raidz1.

Взвесив все за и против, у меня получился следующий порядок действий:

  1. На новом диске сделать stripe
  2. Перенести на него данные со второго диска
  3. Очистить второй диск
  4. Добавить второй диск в stripe
  5. Через n-месяцев купить ещё 2х3Tb, добавить как mirror (вроде это можно сделать из простого stripe, поправьте если не прав)

Что получится в итоге:

  • [+] Один массив 6tb из двух дисков + отдельный диск 3tb для копирования важных данных
  • [+] В будущем можно перейти на mirror
  • [+] Проще расширять vdev - 4 диска большего объма, либо можно добавить ещё такой же vdev, разжившись sata портами или sas/sata мультиплексорами
  • [-] Без mirror надёжность массива ниже, чем сейчас с отдельными дисками
  • [-] Стоимость mirror

Посоветуйте пожалуйста, как не напороться на подводные камни в будущем.

Ответ на: комментарий от torvn77

По сути вопроса я уже ответил, ТС пока молчит.

А по сути твоего вопроса ответить невозможно, т.к. ты сам путаешься и вспоминаешь странные подробности. Да и вообще бессмысленно из-за полного отсутствия инженерного подхода к возможной проблеме.

Deleted ()
Ответ на: комментарий от Deleted

т.к. ты сам путаешься

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

вспоминаешь странные подробности.

Это ты про что?
Надеюсь не про описание бага как таковое(а то с тебя станет)

torvn77 ★★★★★ ()
Последнее исправление: torvn77 (всего исправлений: 4)
Ответ на: комментарий от torvn77

что мы пользуемся zfs от разных проектов.

Во-первых, zfs через fuse - это, в основном, PoC.

Во-вторых, ты им до сих пор пользуешься ещё? Really?

Что же до смысла сказанного, то я в нём не путаюсь, это скорее ты тупишь.

Да-да, если кто-то не может внятно сформулировать и написать текст, то он не путается, а туплю внезапно я? Отличная логика.

Deleted ()
Ответ на: комментарий от Deleted

Во-вторых, ты им до сих пор пользуешься ещё?

Диски лежат неиспользуемыми на полке и я бы хотел чтобы когда я их подключу в ПК не оказалось того, что современные версии zfs не могут с ними работать.

Ещё раз споашиваю, защитник zfs, тебе есть что сказать по делу?

torvn77 ★★★★★ ()
Ответ на: комментарий от torvn77

Ещё раз споашиваю, защитник zfs, тебе есть что сказать по делу?

Ещё раз отвечаю, по делу я уже ответил, ТС молчит. А ты разводишь нерелевантный флуд

Deleted ()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от torvn77

У нас разница в терминах которая вполне может объясняться тем, что мы пользуемся zfs от разных проектов.

разница в терминах обусловлена тем, что ты вообще не отдупляешь как технологии работают, но мнение имеешь, и тебе об этом уже 100500 раз говорили. а raidz он в любой реализации raidz, как и другие типы.

Что же до смысла сказанного, то я в нём не путаюсь, это скорее ты тупишь

я аж взоржал от твоего блаженного наивняка.

Надеюсь не про описание бага как таковое(а то с тебя станет)

кстате да, баг-репорт где, болезный?

anonymous ()
Ответ на: комментарий от Deleted

по делу я уже ответил,

В этой ветке обсуждения обсуждается конкретно моё сообщение о возможной проблеме, ну и по твоей инициативе моя личность.

Так вот, можно ссылку на пост где бы ты прояснил технические причины того, что я наблюдал в своём компьютере?

torvn77 ★★★★★ ()
Ответ на: комментарий от torvn77

можно ссылку на пост где бы ты прояснил технические причины

можно ссылку на наличие бога(ов)?

Или можно ссылку на подробное описание проблемы, а не видения пятилетней давности?

ZFS использую, в nas4free, работает на трех дисках, тестовый сегмент. Кстати работает на 478 сокете, и 1 гб рам. По цпу не вывозит максимальную производительность.

Aborigen1020 ()
Последнее исправление: Aborigen1020 (всего исправлений: 1)
Ответ на: комментарий от torvn77

можно ссылку на пост где бы ты прояснил технические причины того, что я наблюдал в своём компьютере?

«Товарищи учёные, в моём сарае уже не первый год раздаётся подземный стук! Не могли бы вы объяснить природу этого стука?»

Deleted ()
Ответ на: комментарий от Deleted

Может под сараем тунель копают?
Или кастровая полость вот вот осупется?

Так что даже по такому описанию знающий человек может сделать несколько предположений, но вот программисты почему-то являются исключением и часто на это не способны.

torvn77 ★★★★★ ()
Ответ на: комментарий от torvn77

прояснил технические причины того, что я наблюдал в своём компьютере?

тебе ведь уже написали - память, мать, теперь ещё и fuse, но в силу своего скудоумия и абсолютного непонимания матчасти ты даже не воспринимаешь это.

моё сообщение о возможной проблеме

баг-репорт где с техническим обоснованием как, что и зачем ты делал?

anonymous ()
Ответ на: комментарий от Aborigen1020

можно ссылку на наличие бога(ов)? Или можно ссылку на подробное описание проблемы, а не видения пятилетней давности?

Я не изучал баги zfs и так подробно форумы не изучал по этому дать ссылку на баг не могу.

Но если надо в общих чертах описать что и как у меня было устроено то это можно, правда опции форматирования и монтирования я не вспомню. Но именно тот массив жив и если у тебя есть желание разобраться то могу например выслать тебе в указанное тобой место образы дисков(8*250ГБ)(имхо это самое правильное, так как монтирование изменит сомтояние массива)

torvn77 ★★★★★ ()
Последнее исправление: torvn77 (всего исправлений: 1)
Ответ на: комментарий от torvn77

даже по такому описанию знающий человек может сделать несколько предположений

Знающий человек вряд ли станет тратить время на домыслы, этим любят заниматься как раз диванные бестолочи.

Deleted ()
Ответ на: комментарий от anonymous

тебе ведь уже написали - память, мать,

в силу уже вашего скудоумия вы так и не осмыслили пост Перевод NAS на zfs (комментарий)

теперь ещё и fuse

То есть как минимум одна реализация zfs во всей своей совокупности является глючной о чём я и предупредил ТС в этом посте: Перевод NAS на zfs (комментарий) что очень не понравилось zfs фанбоям.

РС. А теперь в моём споре с Dimez вскрылся ещё и зоопарк в терминологии.

torvn77 ★★★★★ ()
Последнее исправление: torvn77 (всего исправлений: 2)
Ответ на: комментарий от Deleted

Спасибо за ответ.

Лучше сразу запланировать массив.

Можете что-нибудь посоветовать, по планированию?

Мой вариант сильно плохо? Начать со stripe из 2-х дисков, затем, подключить к нему ещё 2 диска как зеркало.
(вроде zfs позволяет из stripe сделать mirror без потери данных со stripe)

Да, я понимаю, что некоторое время весь zpool будет под угрозой, если пострадает один из двух дисков, но надеюсь этого не случится, т.к. диски относительно новые, и нагружены минимально, 70% времени nas выключен сейчас.
Для расширения такого массива мне потребуется 4 диска, для добавления ещё одного vdev в zpool, либо заменой существующих на более ёмкие.
Я не думаю, что мои потребности/способности к апгрейду, выйдут за рамки 3-х vdev (скорее всего их будет максимум два, но это не точно)

Альтернативный вариант - сразу начать с mirror из двух дисков.
В будущем для расширения мне потребуется всего 2 диска, но количество vdev при таком подходе больше, и если я правильно понимаю, это снижает отказоустойчивость.

Совсем экстрим, но допускаю эти варианты, если они оправданы в перспективе:
* raidz-1 из 3-х дисков, нужно только придумать, как высвободить два существующих диска (при двух vdev, этот вариант из преимуществ имеет только увеличенный объем на 3Тб)
* raidz-2 из 6-ти дисков, помимо высвобождения дисков, ещё вложить ~15к на диска и контроллер.


Справедливости ради замечу, что параллельно изучаю варианты mdadm+lvm, lvm-raid, btrfs - всё это, по сути, об одном и том же, но пока zfs для меня выглядит более простой и понятной, что странно... наверное нужно на виртуалке воспроизвести какие-нибудь типовые ситуации.

afterlanding ★★ ()
Последнее исправление: afterlanding (всего исправлений: 1)
Ответ на: комментарий от torvn77

в нём как-раз очень хорошо показано о чём я пишу. Ты хоть про cosmic rays почитай, может ещё что осмыслишь.

То есть как минимум одна реализация zfs во всей своей совокупности является глючной отчём

это может быть баг самого фьюза. что, как и зачем ты делал где задокументировано? багрепорт где, чучело? а пока что все твои обоснования - попытка оправдать свои кривые раки.

anonymous ()
Ответ на: комментарий от anonymous

это может быть баг самого фьюза?

А какая разница конечному пользователю где именно баг ставший причиной повреждения или пропажи файла?
Данные то утеряны.

Во вторых проблема по уже изложенным причинам явно не в fuse, а в чём-то другом, как способном ‘‘различать’’ отдельные файлы, их размер и atime.

Ты хоть про cosmic rays почитай, может ещё что осмыслишь.

А ты ещё раз перечитай пост Перевод NAS на zfs (комментарий) и попробуй осознать вот это:

Битая память и подобное бы равномерно распределялась на всю ФС целиком и в особенности на новые или часто перезаписываемые файлы.
А тут:

torvn77 ★★★★★ ()
Последнее исправление: torvn77 (всего исправлений: 1)
Ответ на: комментарий от torvn77

А какая разница конечному пользователю где именно баг

Разница большая, так как если бага нет – значит бага нет. Значит всё работает правильно.

anonymous ()
Ответ на: комментарий от torvn77

какая разница конечному пользователю где именно баг ставший причиной повреждения или пропажи файла?

хороша логика, ничего не скажешь

torvn77

хотя, о чём это я

эта, ты хоть первую ссылку с гугла прочитай, хотя бы определение.

anonymous ()
Ответ на: комментарий от Deleted

Очень напоминает https://bash.im/quote/268537

Глянул по диагонали, думаю что и не читая правильно догадываюсь о том, что там написано.

Так вот, если бы то литературное произведение было бы применимо к нашему обсуждению то файлы были бы просто порченные(изменённые, содержащие мусор) и к сообщеним о ВНУТРЕННИХ ошибках ФС не приводили.

torvn77 ★★★★★ ()
Последнее исправление: torvn77 (всего исправлений: 1)
Ответ на: комментарий от torvn77

Во вторых проблема по уже изложенным причинам явно не в fuse, а в чём-то другом, как способном ‘‘различать’’ отдельные файлы, их размер и atime.

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

проблема по уже изложенным причинам явно не в fuse, а в чём-то другом
в чём-то другом

и вот ты потихоньку подходишь к главному

anonymous ()
Ответ на: комментарий от afterlanding

Можете что-нибудь посоветовать, по планированию?

Если нагрузка небольшая и делается бэкап (а бэкап нужен в любом случае), то raidz минимум из 4х дисков (с моей точки зрения) - хороший вариант исходя из трат денег и получившегося доступного места.

Если нет 4х дисков сразу, то лучше сделать mirror, а потом через zfs send/receive и подменного диска сделать миграцию mirror->raidz. mirror из stripe'ов - очень надёжны и обладают большой скоростью/iops, но теряется половина ёмкости.

Deleted ()
Ответ на: комментарий от torvn77

Так вот, если бы то литературное произведение было бы применимо к нашему обсуждению то файлы были бы просто порченные(изменённые, содержащие мусор) и к сообщеним о ВНУТРЕННИХ ошибках ФС не приводили.

Если литературное произведение применить к нашему обсуждению, то тебя послали к медведям за непроходимую тупость.

Deleted ()
Ответ на: комментарий от afterlanding

Начать со stripe из 2-х дисков, затем, подключить к нему ещё 2 диска как зеркало.

Не надо так делать(ака raid0+1), вариант страйпа из зеркал(raid10) более отказоустойчив.

raidz-2 из 6-ти дисков, помимо высвобождения дисков, ещё вложить ~15к на диска и контроллер.

Почему экстрим? Самый подходящий вариант для файлопомойки. Только не делать 2d+2p, а то со скоростью совсем печально будет, но надёжнее raid10 и, тем более, raid0+1.

anonymous ()
Ответ на: комментарий от anonymous

Не надо так делать(ака raid0+1), вариант страйпа из зеркал(raid10) более отказоустойчив.

Не уверен, что я правильно понял вас...

Два vdev из двух физических дисков лучше, чем один vdev из четырех дисков?

Почему экстрим?

Нужно докупить два диска, контроллер, и куда-то перетащить данные на время миграции.

afterlanding ★★ ()
Ответ на: комментарий от afterlanding

Начать со stripe из 2-х дисков, затем, подключить к нему ещё 2 диска как зеркало.

Это raid 0+1

Альтернативный вариант - сразу начать с mirror из двух дисков.

И потом добавить ещё зеркало - будет raid10(1+0).

кол-во vdev будет одинаковое, но отказоустойчивость во втором варианте выше.

Нужно докупить два диска, контроллер, и куда-то перетащить данные на время миграции.

ну это да.

anonymous ()
Ответ на: комментарий от anonymous

Спасибо, я примерно написал для себя порядок основных действий:

zpool create testpool drive1
// Перенести всё с drive2 на testpool (который состоит из пока drive1)
zpool attach testpool drive1 drive2 // ~raid10 из 2 дисков
zpool add testpool mirror drive3 drive4 // ~raid10 из 4 дисков
..
zpool add testpool mirror driveN driveN+1 // ~raid10 из N дисков

Ещё несколько вопросов, на которые не нашёл однозначного ответа:

  1. Стоит ли беспокоится о дисбалансе распределения данных по дискам? В моем случае, из-за последовательной миграции, он точно будет.
  2. Какие подводные камни меня ждут, если, новая пара дисков будет бОльшего объема: 3Tb х 2 + 3Tb х 2 + 6Tb х 2 (все диски 7200)?
  3. Может ли zfs пережить отключение питания, или обязателен ups?
  4. Не будет ли проблем если отправить систему в suspend2ram?
afterlanding ★★ ()
Последнее исправление: afterlanding (всего исправлений: 1)
Ответ на: комментарий от afterlanding

Может ли zfs пережить отключение питания, или обязателен ups?

Может и переживёт (т.к. CoW), но, разумеется, ups нужен для полного отсутствия потерь данных. У меня была история, обновил биос на сервере, а там обнаружили баг в amd microcode и виртуалки под нагрузкой «залипали». Пока понял, несколько раз пришлось перезагружать резетом (потом откатил биос и исправилось), ничего не пропало.

Нашёл: Raid для хранилища бекапов + шара + диски (комментарий)

Deleted ()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

Я взвесил все 'за' и 'против', посчитал стоимость 1го Тб, и пришел к выводу, что проще подкопить, но собрать raidz-2 из 6-ти дисков, чем потом переделывать выросшее до 6 дисков зеркало.

Спасибо за помощь.

afterlanding ★★ ()
Ответ на: комментарий от Deleted

Вроде всё получилось, но, перед тем, как переносить данные, забыл поменять параметр xattr=sa.

Данные копировал через mc, галка «сохранять атрибуты» была снята. smb и nfs ещё не запускал. Всё равно нужно перезаписывать уже скопированные данные, после изменения этого параметра?

Если нужно перезаписывать, то можно ли сделать вот так:

zfs set xattr=sa mypool // применяем параметр ко всему пулу
zfs rename mypool/Video mypool/tmp // переименовываем старый датасет
zfs create mypool/Video // создаём новый
zfs send mypool/tmp@snap1 | zfs recv mypool/Video // отправляем данные в новый датасет

P.S. Ведёт ли к фрагментации переименование файла, или перемещение файла внутри датасета между директориями?

afterlanding ★★ ()
Ответ на: комментарий от afterlanding

Всё равно нужно перезаписывать уже скопированные данные, после изменения этого параметра?

Не сталкивался, но, скорее всего, да.

P.S. Ведёт ли к фрагментации переименование файла, или перемещение файла внутри датасета между директориями?

CoW системы активно противостоят фрагментации. У меня массив raidz почти без изменений уже 4 года, активно качаю торренты на него же, фрагментация 10%.

Deleted ()

Если кому-то интересно продолжение истории:

Пропущенный атрибут xattrs=sa я «починил» просто скопировав всё ещё раз, благо, теперь свободное место позволяет такие манипуляции.

Раздосадованный новостью [https://www.linux.org.ru/news/opensource/15457233](Линус Торвальдс высказался о ZFS) - я попробовал xigmanas (бывший nas4free).

Установил embedeed версию, в процессе установки xigmanas словил все возможные проблемы - сразу что-то не заладилось с этим дистрибутивом. Установил. Пробую импортировать:

status: The pool can only be accessed in read-only mode on this system. It cannot be accessed in read-write mode because it uses the following feature(s) not supported on this system:org.zfsonlinux:userobj_accounting (User/Group object accounting.)

Вобщем-то, не очень и хотелось с Gentoo слазить. :)

В итоге, утащилпозаимствовал идеи и написал простенькие скрипты для автоснапшотов, проверки статуса пула и т.д. (знаю что есть zed и zfs-auto-snapshot, но мне показалось это излишним для моей микронагрузки).

afterlanding ★★ ()

просто интересно что является важными данными в размере 3тб? У меня всякие документы, даже сканы в пдф за несколько лет набралось около 300мб. Причем многие уже устарели, но разбираться в хламе времени жаль.

jtad ()

Случайно обнаружил наличие меток в /dev/disk/by-label

# ls -la /dev/disk/by-label/
итого 0
drwxr-xr-x 2 root root  80 фев  5 23:58 .
drwxr-xr-x 7 root root 140 фев  5 21:57 ..
lrwxrwxrwx 1 root root  10 фев  5 23:58 zdata -> ../../sdg1
lrwxrwxrwx 1 root root  10 фев  5 23:58 ztest -> ../../sdg9
# lsblk -o name,mountpoint,label,size,uuid
NAME   MOUNTPOINT LABEL   SIZE UUID
sda                     149,1G
├─sda1 /                  145G 14992ed6-2ba8-4694-95fa-9f70c9a16233
├─sda2                    100M AE7B-4906
└─sda3 [SWAP]               4G 97260a58-0196-4884-abc8-fc1245c6aa15
sdb                       2,7T
├─sdb1            zdata   2,7T 16056286597213542478
└─sdb9                      8M
sdc                       2,7T
├─sdc1            zdata   2,7T 16056286597213542478
└─sdc9                      8M
sdd                       2,7T
├─sdd1            zdata   2,7T 16056286597213542478
└─sdd9                      8M
sde                       2,7T
├─sde1            zdata   2,7T 16056286597213542478
└─sde9                      8M
sdf                       2,7T
├─sdf1            zdata   2,7T 16056286597213542478
└─sdf9                      8M
sdg           >>> ztest   2,7T 11997769909462690096
├─sdg1            zdata   2,7T 16056286597213542478
└─sdg9                      8M
sdh                     465,8G
└─sdh1 /mnt/share       465,8G 24bcefbb-2f99-455d-a466-c6e39844b34c

Помнится, что перед тем, как сделать zdata, я пробовал сделать ztest из некоторых дисков. Как правильно очистить эту метку (ztest)?

afterlanding ★★ ()
Ответ на: комментарий от afterlanding

Я нагуглил похожую ситуацию (ССЗБ).
После тестов с zfs, надо обязательно делать zpool labelclear /dev/sdX, чтобы подчистить за своими тестами.

Перевёл диск в offline, сделал labelclear, сделал новую новую таблицу разделов через parted (mklabel gpt), вернул диск в online.
Пул завёлся и даже не попытался сделать resilver, к счастью, уже подошло время делать очередной scrub, запустил, ошибок пока нет, на первый взгляд всё в порядке.

Разве после labelclear + mklabel gpt диск не должен быть «чистым»? Почему пул сразу вышел в онлайн, как будто ничего не произошло?
Я не жалуюсь, просто интересно.

afterlanding ★★ ()