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

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

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

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

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

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

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

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

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

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