Для начала нам следует разделить проблемму на две составляющие.
Первое, настроить поддержку zfs в гостевой системе, настроить
массив допустим для хранилища. И второе, установить
через debootstrap или пренести корень системы на zfs с помощью
rsync. Для "пощупать" эту фс достаточно и первой части,Все таки
работу с zfs нужно начинать с пула хранения, а там видно будет.
Как вы помните я пользуюсь виртуальной машиной без посредников,
запуская как есть и прописывая все параметры в строке запуска.
libvirt пусть подождет меня пока я вырасту.
Начнем с настройки запуска виртуалки с необходимым массивом устройств.
Я создала новую папку для этого проэкта под названием zfs и все действия
будут разворачиваться именно в ней. Первым делом я создала две мягкие
ссылки debian.iso и disk0.qcow2, первую на официальный образ диска, вторую
на на уже готовый образ гостевой ос с ext4 на борту дебиан джесси имеющие
официальную прописку в других директориях.
Нам понадобится для пула raidz четыре дополнительных устройства, создадим их
Код: Выделить всё
for (( i=1; i<5; i=i+1 )); do
qemu-img create -f qcow2 disk${i}.qcow2 2G; doneКод: Выделить всё
ls
debian.iso
disk0.qcow2
disk1.qcow2
disk2.qcow2
disk3.qcow2
disk4.qcow2в виртуальной машине приняла следующий вид
Код: Выделить всё
kvm -drive if=virtio,media=disk,id=disk0,file=disk0.qcow2,serial=12345678900 \
-drive if=virtio,media=disk,id=disk1,file=disk1.qcow2,serial=12345678901 \
-drive if=virtio,media=disk,id=disk2,file=disk2.qcow2,serial=12345678902 \
-drive if=virtio,media=disk,id=disk3,file=disk3.qcow2,serial=12345678903 \
-drive if=virtio,media=disk,id=disk4,file=disk4.qcow2,serial=12345678904 \
-cdrom debian.iso -boot c -m 512Код: Выделить всё
ls /dev/disk/by-id/ #список сокращен
virtio-12345678901
virtio-12345678902
virtio-12345678903
virtio-12345678904заключающееся в следующем блоке команд
Код: Выделить всё
su -
wget http://archive.zfsonlinux.org/debian/pool/main/z/zfsonlinux/zfsonlinux_6_all.deb
dpkg -i zfsonlinux_6_all.deb #пакет добавляющий в систему необходимые репы
apt-get update
apt-get install linux-image-amd64 debian-zfsКод: Выделить всё
lsmod | grep zfsСледует заметить что мы можем полностью перенести домашний каталог на пул
с zfs или выбрать точку монтирования пула в любом пустом каталоге.
Остановимся на втором варианте и создадим каталог в домашней директории
Код: Выделить всё
mkdir ~/storage #придется на время выйти из под рутаМожно создавать пул на устройствах предварительно создав на них
пустую таблицу разделов, но мы будем работать с сырыми дисками и значит
с опцией -f. Создаем пул устройств по идентификатору by-id.
Код: Выделить всё
zpool create -f mypool raidz virtio-12345678901 virtio-12345678902 \
virtio-12345678903 virtio-12345678904Код: Выделить всё
df
zpool statusОбъем нашего пула выведет команда
Код: Выделить всё
zpool listВсегда можно удалить навороченное и начать все заново
Код: Выделить всё
zpool destroy mypoolи поэтому при повторном создании необходимо удалить их утилитой fdisk.
а так же желательно удалить пустую таблицу разделов командой
zpool labelclear и даже необходимо если вы решите использовать gpt.
Пул создан но это всего лиш контейнер и нам нужно еще создать в нем файловую систему.
Код: Выделить всё
zfs create mypool/myfsКод: Выделить всё
zfs destroy mypool/myfsКод: Выделить всё
zfs get all mypool/myfsИ теперь мы сможем создавать сколько угодно фс, любой вложенности
и даже с индивидуальными для каждой свойствами, set "параметр"="значение"
нам всем в помощь. Например все рекомендуют отключать опцию atime, сделаем это
Код: Выделить всё
zfs set atime=off mypool/myfs[album]184[/album]
Последнее что предстоит нам сделать это указать точку монтирования нашей
файловой системы и изменить права владения
Код: Выделить всё
chown nez:nez /mypool/myfs
zfs set mountpoint=/home/nez/storage mypool/myfs[album]185[/album]
В итоге в нашем распоряжении весь набор инструментов zfs. Применяй и
властвуй. Как оказалось zfs в управлении не сколько не сложнее btrfs.
У меня сейчас прекрасно ужились обе. btrfs на целевом хосте и zfs
на виртуальной машине. Осталось перетащить на нее корень, догоняйте.

