Назад | Перейти на главную страницу

Как прикрепить к бассейну полосатое зеркало на 2 устройства?

У меня есть пул с одним диском, состоящий из жесткого диска 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 ТБ, чтобы сделать его зеркальной парой.