3

У меня на ноутбуке установлена Ubuntu 14.04 с LVM на диске 500 ГБ. Я хочу настроить /playaround с zfs /zpool. Каков наилучший подход для этого без потери моих данных

1 ответ1

2

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

Одна из прелестей ZFS заключается в том, что вы можете предоставить ей практически все, что может хранить данные в произвольной форме ввода-вывода, и она будет "просто работать". В производственных средах вы обычно хотите предоставить ZFS целый диск (или несколько целых дисков) и позволить ему обрабатывать разбиения и т.д., Но для того, чтобы попробовать и почувствовать, как работает ZFS, пул с файловой поддержкой почти всегда идеально адекватны.

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

Чтобы создать пул с файловой поддержкой, сначала создайте набор файлов соответствующего размера. Я создам пул raidz1 с четырьмя устройствами, где каждое устройство (файл) имеет размер 2 ГБ, поэтому:

sudo mkdir /.zfs
sudo dd if=/dev/zero of=/.zfs/disk1 bs=1M count=2048
sudo dd if=/dev/zero of=/.zfs/disk2 bs=1M count=2048
sudo dd if=/dev/zero of=/.zfs/disk3 bs=1M count=2048
sudo dd if=/dev/zero of=/.zfs/disk4 bs=1M count=2048
sudo chmod 0700 /.zfs

Это дает нам четыре файла в /.zfs с именами от disk1 до disk4 соответственно. Каждый файл будет иметь размер 2 ГБ, что при учете накладных расходов raidz1 дает нам полезную емкость хранения чуть менее 6 ГБ (в raidz1 одно из устройств используется для данных о четности, поэтому недоступно для использования).

Затем создайте пул (tank - это обычное имя примера для пула ZFS):

sudo zpool create tank raidz /.zfs/disk1 /.zfs/disk2 /.zfs/disk3 /.zfs/disk4

Это говорит о создании пула с именем tank с использованием значений по умолчанию и установке одного vdev в этом пуле с четырьмя файлами, которые мы только что создали. Пул будет автоматически импортирован после создания, а его корневая файловая система будет смонтирована в /tank . Вы можете наблюдать результат, используя sudo zpool status , который должен напечатать что-то очень похожее на:

  pool: tank
 state: ONLINE
  scan: none requested
config:

    NAME             STATE     READ WRITE CKSUM
    tank             ONLINE       0     0     0
      raidz1-0       ONLINE       0     0     0
        /.zfs/disk1  ONLINE       0     0     0
        /.zfs/disk2  ONLINE       0     0     0
        /.zfs/disk3  ONLINE       0     0     0
        /.zfs/disk4  ONLINE       0     0     0

errors: No known data errors

Мы можем подтвердить необработанный размер пула, используя sudo zpool list:

NAME   SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
tank  7,94G   120K  7,94G         -     0%     0%  1.00x  ONLINE  -

и используемая и доступная емкость хранилища с использованием sudo zfs list:

NAME   USED  AVAIL  REFER  MOUNTPOINT
tank  74,8K  5,84G  25,4K  /tank

Обе эти команды имеют множество опций для управления тем, что печатается и как; см. справочную страницу для zpool и zfs соответственно.

Теперь вы можете сохранять файлы в /tank и вообще запачкать руки с помощью ZFS. Чтобы экспортировать пул (рекомендуется до завершения работы), используйте sudo zpool export tank (или sudo zpool export -a для экспорта всех текущих импортируемых пулов). Чтобы снова импортировать пул, sudo zpool import -d /.zfs -a (или замените -a на имя пула, tank); -d /.zfs может понадобиться, потому что ZFS обычно не ищет в этом каталоге устройства. Вы можете добавить эти команды в свои скрипты запуска / выключения системы, если хотите.

Повеселись!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .