Поиск по сайту:

Как установить и настроить ZFS в Ubuntu


Файловая система ZFS обеспечивает огромную емкость, зеркальное отображение RAID и механизмы защиты от повреждений прямо из коробки. Узнайте, как установить Ubuntu с ZFS и как создать зеркальный пул.

Что такое ЗФС?

ZFS — это усовершенствованная файловая система, разработанная Sun Microsystems для использования с их операционной системой Solaris. После приобретения Oracle компании Sun в 2009 году ZFS теперь принадлежит корпорации Oracle.

Однако, в типичном акте альтруизма, начиная с 2005 года, Sun выпустила версию ZFS с открытым исходным кодом. Неизбежно, это было перенесено на Linux, где оно получило более широкое распространение. Версия ZFS с открытым исходным кодом — openZFS — управляется и поддерживается проектом OpenZFS.

ZFS — отказоустойчивая файловая система большой емкости. Первоначально ZFS расшифровывалась как файловая система Zettabyte. Архитектура ZFS основана на 128 битах вместо более распространенных 64 бит других файловых систем. Возможность работать с большими числовыми значениями — один из факторов, благодаря которым ZFS способна обрабатывать зеттабайты хранилища. Чтобы дать вам представление о том, что это значит, скажем, что зеттабайт — это миллиард терабайт.

В настоящее время ZFS поддерживает хранение файлов до 256 зебибайт. Зебибайт (270 байт) больше зеттабайта (1021 байт), но не на порядок. В ZFS есть гораздо больше, чем просто емкость, как бы ошеломительно это ни звучало. ZFS функционирует как собственный менеджер томов и RAID-контроллер. Он имеет встроенные функции, такие как подлинное копирование при записи, которые защищают ваши данные от повреждения. Он сочетает в себе функции, обеспечивающие создание пула файловой системы, клонирование и копирование, а также функции, подобные RAID, изначально.

Ubuntu предлагает ZFS уже несколько лет, но всегда с предупреждениями и предостережениями. В Ubuntu 20.10 предупреждения были удалены. Canonical официально поддерживает ZFS, но только при полной настройке диска. Чтобы получить эту поддержку, вам необходимо установить ZFS при установке Ubuntu. Варианты ZFS по-прежнему спрятаны, но они есть и больше не только для бесстрашных или безрассудных.

Поскольку Ubuntu 21.10 выйдет в октябре 2021 года, самое время посмотреть, как развивается предложение ZFS в Ubuntu.

Поиск параметров ZFS во время установки

Во время установки Ubuntu экран «Тип установки» позволяет вам стереть диск, на который вы устанавливаете Ubuntu, или сделать что-то еще. Нажмите кнопку «Дополнительные функции».

Появится диалоговое окно «Дополнительные функции».

Выберите переключатель «Стереть диск и использовать ZFS» и нажмите кнопку «ОК».

На экране «Тип установки» отобразится «ZFS Selected», чтобы показать, что вы решили использовать ZFS.

Нажмите кнопку «Продолжить» и завершите установку как обычно.

Если на вашем компьютере установлено несколько жестких дисков, вы сможете выбрать, как вы хотите, чтобы они использовались ZFS. Ubuntu предложит рекомендуемую конфигурацию, но вы можете настроить ее по своему усмотрению.

Но что, если вы добавите несколько жестких дисков после установки Ubuntu? Как настроить ZFS для использования нового хранилища? Это то, что мы рассмотрим дальше.

Добавление дополнительных жестких дисков

Мы установили Ubuntu с ZFS на единственный жесткий диск тестовой машины, которую мы использовали для исследования этой статьи. Мы добавили еще два жестких диска, что дало компьютеру в общей сложности три жестких диска. На одном жестком диске была установлена Ubuntu, а два новых диска были пустыми, неформатированными и не смонтированными.

Первое, что нам нужно сделать, это определить, как Ubuntu относится к новым жестким дискам. Команда lsblk выводит список всех блочных устройств, установленных на вашем компьютере. Мы можем указать, какие столбцы вывода мы хотим видеть в результатах.

lsblk -o name,size,fstype,type,mountpoint

За опцией -o (output) следуют столбцы, которые мы хотим видеть. Мы выбрали:

  • имя: имя, которое Ubuntu использует для обозначения жесткого диска.
  • размер: размер жесткого диска. Если на жестком диске имеется более одного раздела, они все перечисляются и отображается размер каждого раздела.
  • fstype: файловая система на жестком диске или разделе.
  • тип: относится ли строка к диску, разделу, дисководу CD-ROM или псевдоустройству обратной связи.
  • точка монтирования: точка монтирования файловой системы на жестком диске или разделе.

Существует множество петлевых устройств squashfs, пронумерованных от loop0 до loop6. Каждый раз, когда вы устанавливаете приложение snap, создается одно из этих псевдоустройств. Это часть инкапсуляции и песочницы, которая охватывает каждое приложение snap.

Первый жесткий диск указан как /dev/sda. Это 32-гигабайтный диск с пятью разделами, перечисленными от /dev/sda1 до /dev/sda5. Они оформлены по-разному. Это диск, который был в компьютере, когда мы устанавливали Ubuntu.

Наши два новых жестких диска указаны как /dev/sdb и /dev/sdc. Это тоже диски на 32 ГБ, но они не форматированы и не смонтированы.

Пулы, RAID 0, RAID 1

Чтобы использовать новые жесткие диски, мы добавляем их в пул. Вы можете добавить столько дисков в пул, сколько захотите. Есть два способа сделать это. Вы можете настроить пул так, чтобы вы могли использовать все пространство хранения каждого жесткого диска в конфигурации RAID 0, или вы можете настроить их так, чтобы пул предлагал только объем хранилища самого маленького жесткого диска в пуле. в конфигурации RAID 1.

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

Напротив, в RAID 0 отказ одного жесткого диска делает вашу систему неработоспособной до тех пор, пока вы не замените неисправный диск и не выполните восстановление из резервных копий.

Чем больше у вас дисков в пуле RAID 1, тем надежнее он. Минимум, который вам нужен для RAID 1, — это два диска. Сбой в любом из дисков был бы неудобством, но не катастрофой. Но выход из строя обоих жестких дисков одновременно, конечно, был бы большей проблемой. Таким образом, ответ, по-видимому, состоит в том, чтобы объединить столько жестких дисков, сколько вы можете сэкономить.

Но, конечно же, на практике существует ограничение на количество дисков, которые вы хотите или можете себе позволить выделить для одного пула. Если у вас есть восемь запасных жестких дисков, создание двух пулов RAID 1 из четырех дисков, вероятно, будет более эффективным использованием оборудования, чем один пул из восьми дисков. И помните, пул RAID 1 может предложить хранилище только наименьшего жесткого диска в пуле, поэтому всегда старайтесь использовать диски одинакового размера в одном пуле.

Создание пула RAID 1

Мы определили наши новые жесткие диски как /dev/sdb и /dev/sdc . Чтобы создать пул ZFS RAID 1, мы используем эту команду:

sudo zpool create cloudsavvyit mirror /dev/sdb /dev/sdc

Компоненты команды:

  • sudo: мы меняем конфигурацию системы, поэтому нам нужно использовать sudo для получения привилегий root.
  • zpool: это команда управления пулом ZFS.
  • создать: это действие, которое мы хотим, чтобы zpool выполнил для нас.
  • cloudsavvyit: это имя пула, который мы хотим создать.
  • зеркало: мы хотим, чтобы наши данные отражались на всех дисках, что дает нам пул RAID 1. Если параметр «зеркало» не указан, создается пул RAID 0.
  • /dev/sdb: первый из наших новых жестких дисков.
  • /dev/sdc: второй из наших новых жестких дисков.

Замените «cloudsavvyit» на имя, которое вы хотите назвать своим пулом, и замените /dev/sdb и /dev/sdc на идентификаторы ваших новых жестких дисков.

Создание пула немного антиклиматически. Если все пойдет хорошо, вы бесцеремонно вернетесь в командную строку. Мы можем использовать действие status с командой zpool, чтобы увидеть статус нашего нового пула.

sudo zpool status cloudsavvyit

Наш новый пул создан, он онлайн, два наших новых диска в пуле, ошибок нет. Все это выглядит великолепно. Но где бассейн? Посмотрим, покажет ли lsblk, где он был смонтирован.

lsblk -o name,size,fstype,type,mountpoint

Мы видим, что наши новые жесткие диски /dev/sdb и /dev/sdc разбиты на два раздела каждый, но для них не указана точка монтирования. Пулы не монтируются, как обычные жесткие диски. Например, в файле /etc/fstab нет записи для пулов ZFS. По умолчанию точка монтирования создается в корневом каталоге. Он имеет то же имя, что и пул.

ls /

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

sudo zpool create -m /path/to/mount-point-name cloudsavvyit mirror /dev/sdb /dev/sdc

Предоставление пользователям доступа к пулу

Пул существует, но хранить в нем данные может только пользователь root. Это не то, что нам нужно, конечно. Мы хотим, чтобы другие пользователи могли получить доступ к пулу.

Для этого мы будем:

  • Создайте каталог в пуле.
  • Создайте новую группу.
  • Установите новую группу в качестве владельца группы для каталога.
  • Добавьте пользователей, которым необходим доступ к хранилищу данных, в новую группу.

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

Мы будем использовать groupadd для создания группы пользователей. Наша группа называется «csavvy1». Затем мы воспользуемся командой usermod, чтобы добавить пользователя с именем «dave» в новую группу. Опция -a (добавить) добавляет новую группу в список существующих групп, в которых состоит пользователь. Без этой опции пользователь удаляется из всех существующих групп и добавляется в новую. Это вызовет проблемы, поэтому обязательно используйте параметр -a.

sudo groupadd csavvy1
sudo usermod -a -G csavvy1 dave

Чтобы новое членство в группе вступило в силу, пользователь должен выйти из системы и снова войти в нее.

Теперь мы создадим каталог в пуле с именем «data1».

sudo mkdir /cloudsavvyit/data1

Команда chgrp позволяет нам установить группу-владельца каталога.

sudo chgrp csavvy1 /cloudsavvyit/data1

Наконец, мы установим разрешения группы с помощью chmod. «s» — это специальный бит SGID. Это означает, что файлы и каталоги, созданные в каталоге «data1», будут наследовать группу-владельца этого каталога.

sudo chmod g+rwsx /cloudsavvyit/data1/

Наш пользователь вышел из системы и снова вошёл. Давайте попробуем создать файл в новом каталоге хранилища данных в нашем новом пуле ZFS RAID 1.

touch /cloudsavvyit/data1/new-file.txt

И давайте посмотрим, что он был создан.

ls /cloudsavvyit/data1 -lh

Успех. Что, если мы попытаемся создать другой файл за пределами нашей области хранения data1?

touch /cloudsavvyit/new-file2.txt

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

Уничтожить бассейн

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

sudo zpool destroy cloudsavvyit

Замените «cloudsavvyit» на название пула, который вы собираетесь уничтожить.

У вас только один жесткий диск?

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

Но помните, отсутствие файловой системы — с зеркалированием RAID или без него — означает, что вы можете игнорировать резервные копии.