Удаление диска из пула zfs навсегда

Я попытался добавить SSD в zpool с помощью ZIL, но сделал ошибку.

Я ожидал... журнал добавления zpool c0t1d0
Но я сделал... zpool add zone c0t1d0

Я пытался выполнить команды zone remove, detach, offline, но это не удалось.
Как удалить SSD без потери данных в zpool?

$ zpool status
pool: zones
state: ONLINE
scan : non requested
config:
   NAME          STATE     READ  WRITE CKSUM
   zones          ONLINE      0      0      0
       c0t0d0     ONLINE      0      0      0
       c0t1d0     ONLINE      0      0      0


$ zpool iostat -v               
capacity     operations    bandwidth
pool        alloc   free   read  write   read  write
----------  -----  -----  -----  -----  -----  -----
zones        280G   109G     40    139  1.28M  13.7M  
     c0t0d0  263G  15.3G     39     35  1.25M  2.61M  
     c0t1d0 17.6G  93.4G      0    104  20.9K  11.1M
----------  -----  -----  -----  -----  -----  -----

zfs
person iskim    schedule 21.11.2016    source источник
comment
Просто лишнее предложение от невежественного! Дэн, не было бы довольно простым дополнением запустить другую утилиту после удаления диска из пула, которая копирует файлы (снова) в новое место в пуле и одновременно стирает косвенное сопоставление? - Да, копирование дважды, но это было бы «логическим эквивалентом» копирования данных с диска, извлечения диска, а затем повторного копирования данных обратно в пул, однако это делается автоматически, а не вручную, и практичное решение для загруженных- вверх диски, а также. -Только мысль!   -  person user10209401    schedule 10.08.2018
comment
@user10209401 user10209401 Я думаю, вы хотели опубликовать это под моим ответом ниже :). К сожалению, это не так просто, потому что ZFS также пришлось бы пройтись по всему дереву метаданных пула и перезаписать все места, указывающие на старые данные (в моментальных снимках, таблице дедупликации и т. д.). С косвенными сопоставлениями ZFS видит, что устройство, указанное в указанном указателе блока, отсутствует, и обращается к сопоставлению, которое намного реализовать проще.   -  person Dan    schedule 24.10.2018


Ответы (2)


К сожалению, вам придется разрушать и создавать заново. Вы можете использовать zfs send/recv для переноса всех данных с сохранением всех моментальных снимков, метаданных и т. д., а также для более быстрого копирования, чем при обычном cp.

person user121391    schedule 22.11.2016

ОБНОВЛЕНИЕ: выпуск ZoL 0.8.0 будет содержать эту функцию.

@user121391 прав, что сегодня это невозможно, кроме как путем переноса хранилища send/recv.

Тем не менее, есть новая функция, разработанная Мэттом Аренсом (глава сообщества OpenZFS), которая близка к попаданию в основную ветку и в конечном итоге появится на других платформах (FreeBSD / Linux / macOS / и т. д.). Вот ссылка на запрос на вытягивание на Github.

После интеграции вы сможете запустить zpool remove на любом виртуальном устройстве верхнего уровня, которое перенесет свое хранилище на другое устройство в пуле и добавит непрямые сопоставления из старого местоположения в новое. Нехорошо, если vdev, который вы удаляете, уже очень заполнен данными (потому что тогда доступ к любым из этих данных должен проходить через непрямые сопоставления), но он предназначен для отличной работы в случае использования, о котором вы говорите. (неправильная конфигурация, которую вы заметили очень быстро).

person Dan    schedule 18.04.2017
comment
И похоже, что он вот-вот появится в Linux в выпуске 0.8.0 (github.com/zfsonlinux /zfs/pull/6900). - person James Moore; 24.10.2018