У меня есть пул с одним диском, состоящий из жесткого диска 2 ТБ. У меня есть два диска емкостью 1 ТБ, которые я могу использовать в зеркале - я хотел бы добавить избыточность в свой пул.
Как я могу соединить эти два диска как единое устройство, чтобы их можно было использовать как полосатое зеркало?
Назовем мой диск емкостью 2 ТБ sda
, пустые диски емкостью 1 ТБ sdb
и sdc
.
Я попытался: zfs attach tank sda sdb sdc
но это говорит too many arguments
.
Я попытался: zfs attach tank sda sdb
но это говорит device is too small
Я попытался: zfs attach tank sda sdb+sdc
но это говорит no such device in /dev
Я попытался: zfs attach tank sda sdb,sdc
но это говорит no such device in /dev
Я прочитал руководство и поискал в Интернете - у меня нет идей.
Думаю, я мог бы попытаться создать новый чередующийся пул из этих двух дисков емкостью 1 ТБ, создать внутри zvol и использовать его в качестве зеркала для моего основного пула, но это, вероятно, в любом случае даст мне недостаточно емкости для зеркала, плюс много ненужных накладных расходов.
Как я могу это сделать?
Это невозможно сделать напрямую через ZFS. Из страница руководства:
Виртуальные устройства не могут быть вложенными, поэтому зеркало или виртуальное устройство raidz может содержать только файлы или диски. Зеркала зеркал (или другие комбинации) не допускаются.
Я предлагаю создать новый пул, состоящий из двух дисков по 1 ТБ, и использовать что-нибудь как синкоид чтобы часто отправлять содержимое первого пула в новый пул.
--- ВНИМАНИЕ: неуклюжий обходной путь ниже! НЕ используйте, если не ДЕЙСТВИТЕЛЬНО уверены !!! ---
В любом случае, если вы действительно хотите добавить два диска по 1 ТБ в качестве зеркала первых дисков по 2 ТБ, можно попробовать обходной путь. Вы можете использовать device-mapper (в его форме LVM) для объединения двух дисков и присоединения полученного тома к устройству 2 ТБ. Например:
pvcreate /dev/sdb
pvcreate /dev/sdc
vgcreate zvg /dev/sdb
vgextend zvg /dev/sdc
lvcreate zvg --name zdev -l +100%FREE
zpool attach tank /dev/sda /dev/zvg/zdev
zpool status
Вы можете добиться аналогичного (даже лучшего) результата с помощью mdadm, создав устройство RAID0 и подключив его к zpool:
mdadm --create md127 --level=0 --raid-devices=2 /dev/sdb /dev/sdc
zpool attach tank /dev/sda /dev/md127
zpool status
Такой подход не рекомендуемые. Используйте его на свой страх и риск.
Чтобы добавить два новых диска в пул, вы можете использовать zpool add tank mirror sdb sdc
но это добавит новую пару в качестве зеркала и разделит ее с существующим диском. (Это не добавляет избыточности).
Вам нужно будет использовать zpool attach
, чтобы добавить диски к существующему vdev, но вы не можете использовать зеркальную пару для резервного копирования одного диска, вам придется добавить новый диск 2 ТБ, чтобы сделать его зеркальной парой.