У меня на ноутбуке установлена Ubuntu 14.04 с LVM на диске 500 ГБ. Я хочу настроить /playaround с zfs /zpool. Каков наилучший подход для этого без потери моих данных
1 ответ
Учитывая, что вы просто хотите "поиграться" с 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 обычно не ищет в этом каталоге устройства. Вы можете добавить эти команды в свои скрипты запуска / выключения системы, если хотите.
Повеселись!