Какую простую в управлении файловую систему выбрать на Linux для домашнего сервера?

Какую простую в управлении файловую систему выбрать на Linux для домашнего сервера?

У меня есть домашний сервер, работающий на HP Proliant Microserver Gen7 с 10 ГБ памяти ECC, работающий под управлением Debian 8 (jessie). Сейчас у меня есть один небольшой системный диск (сделанный с помощью rsnapshot) и 2 диска хранения по 3 ТБ, настроенные как Raid 1 с помощью mdadm, поверх у меня есть группы LVM для разных целей, одна из них - дополнительно зашифрована dm-crypt / luks для хранения личных данных.

Я планирую купить два дополнительных HD того же размера для пула хранения и, возможно, настроить сервер с нуля, определенно снова используя Debian, но, вероятно, на этот раз под виртуализацией xenserver. Таким образом, пул хранения будет 4x 3 ТБ, с Raid1, оставляющим пригодные для использования 6 ТБ, с Raid5 (или raidz1) 9 ТБ.

Хотя комбинация mdadm / lvm / dm-crypt работает хорошо, я нахожу ее невероятно сложной, особенно для планирования простой стратегии аварийного восстановления. Мне нужно исследовать для каждого из слоев, какой лучший процесс резервного копирования и восстановления метаданных и т. д.

В идеальном мире я бы сделал все хранилище зашифрованным пулом raidz1, НО шифрование пока не реализовано в ZFS на Linux, и из моих исследований совершенно неясно, КОГДА его можно будет реализовать.

С Btrfs ситуация немного похожа: по крайней мере, она выглядит стабильной в эксплуатации, но, увы, шифрование также появится только в непредвиденном будущем.

Итак, из файловых систем, которые я бы предпочел использовать, обе изначально не поддерживают шифрование в Linux (пока). Что ж, есть куча руководств и учебных пособий по использованию зашифрованных LUKS LVM в сочетании с ZFS или BtrFS. Есть подход использовать LVM поверх ZFS или ZFS поверх LVM — для меня это звучит как ужасная путаница.

Мне вообще не нравится концепция EncFS, так что это тоже не вариант.

Надеюсь, есть какие-то варианты, о которых я не слышал, поэтому мой вопрос здесь: что еще есть для достижения этой «легкой» (например, расширяемой и т. д., типа zfs, с исправлением ошибок) в управлении файловой системой, которую можно выбрать на Linux для домашнего сервера, которая может быть полностью или частично зашифрована?

ОБНОВЛЕНИЕ, декабрь 2017 г.: ZFS на Linux с поддержкой шифрования появится скоро: https://blog.heckel.xyz/2017/01/08/zfs-encryption-openzfs-zfs-on-linux/

решение1

mdadm / lvm / dm-crypt, вероятно, является вашим лучшим выбором — и это совсем не так уж и сложно — вы просто обрабатываете каждый уровень соответствующим образом — или, в зависимости от ваших потребностей, mdadm /dm-crypt/lvm (если вы хотите, чтобы все LV использовали одно устройство с одной парольной фразой)

Вы правы, что не используете encfs -это небезопасно.

решение2

Если вы выберете настройку ZFS, я бы посоветовал:

  • не используйте LVM, создавайте ZVOL поверх пула

  • для ОС - раздел GPT для незашифрованного пула ZFS с зеркалом (или raidz)

  • для личных данных - используйте LUKS на разделе GPT, затем поверх создайте зеркало пула ZFS (или raidz)

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

поэтому предлагаемая схема таковаGPT / LUKS / ZFS / data или ZVOL для ВМ

не забудьте создать раздел BIOS (размером 1 МБ), если вы не используете загрузку UEFI, также не забудьте создать раздел для GRUB, например, 150 МБ

для интенсивного случайного ввода-вывода я предлагаю отключить предварительную выборку ZFS (echo 1 > /sys/module/zfs/parameters/zfs_prefetch_disable)

решение3

Это совет всем, кто хочет зашифровать какие-либо данные: ВСЕГДА шифруйте 100% всех возможных хранилищ, подключенных к компьютеру, независимо от того, является ли это разделом Grub, системным разделом, домашним разделом, разделом данных, разделом подкачки и т. д. ВСЕГДА ШИФРУЙТЕ ВСЕ.

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

Последовательность событий Disarter:

  1. Загрузка нормальная
  2. Используйте приложение
  3. Открыть «личный» документ
  4. Сбой системы (программного или аппаратного)
  5. Следующая загрузка не работает
  6. Одно устройство закончило свой срок службы (больше не работает)

Вы не можете удалить то, что находится на таком устройстве (оно не работает), вы не можете прочитать это, так что же там было сохранено? Может быть, что-то «личное»? Вы даже не можете знать, что и где.

Но кто-то другой (возможно, с несколькими миллионами денег в кармане) сделал это, поэтому вы не можете выбросить это устройство в мусор, пока не убедитесь, что на нем нет «личных» данных... но вы не можете этого знать, пока не отдадите устройство в компанию, но тогда «личное» находится под угрозой, возможно, они его «скопируют» (там работает плохой человек и т. д.).

Спросите себя: знаете ли вы каждую исходную строку всего кода, который вы используете (загрузочный код, системный код, код приложений и т. д.), исходный код, который вы компилируете самостоятельно... и никогда не используете какие-либо «двоичные» файлы... то есть вы, должно быть, скомпилировали его с помощью карандаша и бумаги, компилятора.

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

Примечание: Если вам необходимо использовать «личные» данные, никогда больше не подключайте этот компьютер к Интернету... возможно, какая-то часть приложения, которое вы использовали, сохранила какие-то данные и в далеком будущем отправила их на интернет-серверы.

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

Случаи бывают экстремальными? Я узнаю их на собственном горьком опыте... на моем Linux входит троян (внутри приложения, которое я хочу использовать), по-видимому, ничего не делает (не имеет подключения к сокету и т. д.), но он регистрирует какие-то «записи» на диск и делает двойную запись... примерно через две недели другой троян взял эту информацию и попытался отправить ее на IP... Боже, у меня был другой компьютер в «середине» моего интернет-соединения (да, конечно, я такой и есть, и я был полным параноиком, это меня спасло), чтобы «обнаружить» эти соединения и «заблокировать» их... не говоря уже о том, что я использую только «Linux», так как с Windows, которую невозможно контролировать. Такие трояны были там без ведома автора приложения, они были внедрены, когда приложение сохранялось в репозитории. Надеюсь, вы понимаете, что я предпочитаю не говорить, какое именно приложение было, так как теперь оно «исправлено»... кто знает, с каких пор!

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

О, да, grub.cfg может находиться внутри RAID0, LUKS поверх LUKS ... поверх LUKS и т. д. Вам понадобится только очень маленький раздел для Stage 1.5 или 2 размером 8 МБ или меньше в неформатированном виде (массовый дамп), чтобы Grub2 мог загрузиться... поищите раздел BIOS GRUB в Интернете.

Извините, я еще не пробовал ZFS и не уверен, могут ли файлы Grub (grub.cfg и т. д.) находиться внутри ZFS... но я тестировал их поверх: Ext4 поверх LVM поверх LUKS поверх LVM поверх LUKS... так на некоторых уровнях... поверх LUKS поверх настоящего GPT (также в MBR) без раздела EFI, и он нормально загружается... нужно было только добавить расширения «crypto» и «lvm» при установке grub2... я предпочитаю вводить свой собственный grub.cfg, поэтому я никогда не использую ничего, кроме grub2-install, связанного с grub2 (опять же, я параноик).

Я всегда использую в качестве основного загрузчика свой собственный grub.cfg, который вызывает другие загрузчики, таким образом я позволяю системе управлять своим собственным загрузчиком, не трогая основной, который я редактирую вручную с помощью текстового редактора.

Извините, я полный параноик.

Что вы должны думать? Если есть какое-то «место», где незашифрованные данные могут быть записаны/прочитаны, любые «частные» данные — это полный промах, они могут быть когда-нибудь записаны на эту незашифрованную часть. Чтобы быть в безопасности, никогда не имейте никаких незашифрованных частей.

PD: Если вы используете раздел EFI, имейте в виду, что любой код может записать на него данные, поскольку он вообще не имеет никакой защиты и представляет собой незашифровываемый раздел FAT32.

PPD: Где могут храниться данные на FAT32? Где угодно, даже на свободном пространстве. И в Ext4? Точно так же... всегда шифруйте все хранилище.

Связанный контент