Как преобразовать 4-дисковый BTRFS raid1 в 2-дисковый «одиночный» (не RAID) режим

В цикле, на который вы ссылаетесь в своей команде, вы сохраняете следующее «слово» из команды seq в переменной я . Вы можете использовать это значение где угодно, поэтому, чтобы передать его команде, вы можете вызвать его как command "$ i"

. Вы можете избежать необходимости в дополнительном процессе seq с помощью bash по крайней мере, вы можете сделать это как

for ((i=1; i<=10; i++)); do
    command "$i"
done

или с расширением скобок, например

for i in {1..10}; do

, или если вы хотите сделать это в соответствии с POSIX, вы можете сделать что-то вроде

i=1
while [ "$i" -lt 11 ]; do
    command "$i"
    i=$((i+1))
done
3
02.05.2019, 17:59
1 ответ

Я быстро протестировал эту процедуру на пустой файловой системе, состоящей из четырех небольших логических томов LVM. Первый вопрос: хотите ли вы оставить его зеркальным (с уменьшенной емкостью )или нет?

Во всем нижеследующем «PATH»— это точка монтирования вашей файловой системы btrfs. Это онлайн-операции.

Если вы не хотите зеркалировать данные (, потому что они не подходят для уменьшенной емкости, например):

  • Избавьтесь от зеркала, преобразовав файловую систему в ту, какой она была бы без него. По умолчанию это дублированные метаданные и одна копия данных. Однако, поскольку у вас все еще есть два диска, метаданные raid1 имеют гораздо больше смысла. Вы делаете это с ребалансом. «Мягкое» здесь означает преобразование только групп блоков -, которые в этом нуждаются — например, метаданные, которые уже являются raid1, не будут затронуты. (То же самое с данными, которые уже являются «одиночными», что может произойти, если вы отмените это на полпути и запустите его снова позже ).

    btrfs balance start -mconvert=raid1,soft -dconvert=single,soft «PATH»
    

    Баланс будет (по умолчанию )работать на переднем плане; вы можете ввести --background, чтобы вернуть терминал (и проверить статус с помощью btrfs balance status «PATH»). Сообщения о состоянии также будут выводиться в dmesg (и, следовательно, в журнал ядра и/или журнал systemd ). Это, вероятно, займет много времени; btrfs любит перемещать данные ☹.

Затем снимите диски . Вы делаете это независимо от того, оставили ли вы его зеркальным или нет.

  • Теперь вы можете удалить два других диска. Это также переместит кучу данных и, следовательно, займет некоторое время. Обратите внимание, что вы можете (и должны )удалить оба диска одновременно, иначе данные могут быть перемещены на диск, который вы хотите удалить следующим.

    btrfs device remove /dev/disk1 /dev/disk2 «PATH»
    

    Обратите внимание, что устройства дисков/разделов располагаются перед точкой монтирования. Опять же, это онлайн-операция. Статус можно посмотреть в журнале ядра.

3
27.01.2020, 21:24

Теги

Похожие вопросы