Онлайн-миграция дисков ZFS

Онлайн-миграция дисков ZFS

Мне интересно, может ли ZFS справиться со следующим. Допустим, у меня установлена ​​FreeBSD на zpool с двумя физическими дисками по 500 ГБ в зеркальной настройке. Они образуют корневой раздел, поэтому фактически используется максимум 20 ГБ.

Позже я хотел бы заменить физические диски двумя небольшими SSD в зеркальной настройке. Есть ли способ сделать это онлайн? Моя идея заключалась в том, чтобы добавить эти диски в zpool как дополнительные зеркала, дождаться завершения resilvering и затем удалить старые диски. Проблема в том, что эти новые диски будут меньше оригиналов.

Идея, которая у меня возникла, — просто разбить диски на 500 ГБ, так что ZFS получит, скажем, 30 ГБ места на каждом физическом диске, а остальное будет потрачено впустую. Таким образом, на SSD будет больше места, поэтому я не столкнусь с проблемой усадки. Проблема в том, что в этом случае мне нужно заранее оценить размер будущих сменных дисков. Есть ли способ избежать этого?

решение1

Вы правы, что если vdev — это весь диск, то при переходе на SSD они должны быть как минимум такого размера, вы не можете «сжаться» до меньших дисков (конечно, вы можете увеличить их до больших дисков). Вы также правы, что вы можете использовать разделы, чтобы vdev были меньше будущих SSD, и вам придется угадывать, насколько большими будут эти SSD.

В качестве альтернативы, если сервер может вместить все 4 диска одновременно, даже на короткий период времени, вы можете создать zpool любым удобным для вас способом, а затем использовать send/receive для передачи данных на новые SSD. Для этого требуется, чтобы все устройства были подключены одновременно. Небольшое предостережение: операция send/receive может отправлять только данные из снимка, поэтому вы не можете дублировать «живой» диск, и для этого нужно будет сделать соответствующие приспособления (время простоя может быть довольно коротким, если добавить немного сложности).

Еще сложнее то, что на самом деле возможно сохранить "отправку" в промежуточный файл на другом диске где-нибудь, а затем "получить" оттуда. Таким образом, вам нужно всего 3 диска на сервере в любой момент времени. И еще сложнее то, что 4 диска могут быть на разных серверах, а отправка/получение могут быть переданы через ssh или даже netcat.

решение2

Я не могу придумать ни одного очевидного способа сделать это.

На данный момент, учитывая, что вам в любом случае придется разбить корневые диски на разделы (чтобы добавить загрузочный код), а это не похоже на то, что должно происходить часто, я бы предложил просто создать небольшой (<20 ГБ) раздел для корневого пула. Если вам нужно дополнительное место, вы можете создать второй пул из оставшегося пространства. Когда дело дойдет до установки SSD, просто разбейте их на разделы, добавьте загрузочный код, «присоедините» их к корневому пулу «zfs», затем «отсоедините» оригиналы «zfs» (или «замените zfs» вместо «присоедините zfs» и «отсоедините zfs»).

Связанный контент