Восстановление массива BTRFS
Linux
Файловую систему Btrfs можно восстановить, даже если один из дисков отсутствует, особенно если Btrfs настроен с резервированием (например, RAID1, RAID5, RAID10). Btrfs предназначен для обработки сбоев одного или нескольких устройств в зависимости от используемого уровня RAID.
(Рассматривается вариант когда набор дисков был перенесен в на другой сервер, но в рамках того же сервера гайд, актуален)
Пример общего подхода к попытке смонтировать файловую систему Btrfs RAID5 с 4 из 5 дисков: 1. Определите оставшиеся диски
sudo blkid | grep btrfs
2. Монтируем ФС
(если она у нас размонтирована)sudo mount -o degraded /dev/sdX /mnt
* Заменять /dev/sdX с именем устройства одного из уцелевших дисков. -o degraded Опция указывает Btrfs разрешить монтирование, даже если одно или несколько устройств отсутствуют.3. Проверяем состояние ФС
sudo btrfs filesystem show /mnt
4. Замена диска.
(после того как убедились что ФС функционирует без умершего диска)sudo btrfs replace start ID /dev/sdX /mnt
ID -id отсутствующего диска (или эта же команда используется когда мы хотим заменить один диск на другой)
/dev/sdX - Диск на который меняемПример, отсутствует диск 4:
# btrfs filesystem show /mnt
Label: 'data' uuid: f44e7433-5a36-4251-a8be-25ca275f954d
Total devices 5 FS bytes used 61.36GiB
devid 1 size 440.00GiB used 17.27GiB path /dev/sdb1
devid 2 size 440.00GiB used 17.27GiB path /dev/sdc1
devid 3 size 440.00GiB used 17.27GiB path /dev/sdd1
devid 5 size 440.00GiB used 17.27GiB path /dev/sdf1
*** Some devices missing
# btrfs replace start 4 /dev/sde1 /mnt
Мониторинг замены:
sudo btrfs replace status /mnt
Отмена замены
(если вдруг по какой то причине нужно то):
sudo btrfs replace cancel /mnt
5.Балансировка ФС
(после замены диска):
sudo btrfs balance start /mnt
* балансировка файловой системы необходима, чтобы перераспределить данные по оставшимся дискамПроверка ФСsudo btrfs filesystem show /mnt
sudo btrfs device stats /mnt
Общий подход, как оказалось достаточно прост, нам он помог восстановить данные (не критически важные) после того как умер один из дисков в массиве
PS>Если вдург по какой то неведомой причине вы подключили диск через add
btrfs device add ID /mnt вместо replace
btrfs replace start ID /dev/sdX /mnt, тоесть: не хотели расширять массив а именно хотели заменить диск или просто решили отключить один из дисков из массива, то необходимо выполнить:
sudo btrfs device remove ID /mnt
Где ID это либо ID диска который недоступен либо /dev/sdX идентификатор в системе
Важно:
- Убедитесь, что ваша файловая система имеет достаточную избыточность (например, RAID1, RAID10 или RAID5/6) для сохранения целостности данных после удаления устройства. Если файловая система не имеет избыточности, удаление устройства может привести к потере данных.
- Файловая система выполнит балансировку данных на оставшихся устройствах после удаления. В зависимости от объема данных и состояния файловой системы эта операция может занять некоторое время.
- Вам не нужно размонтировать файловую систему, чтобы удалить устройство; операция удаления предназначена для работы с активной файловой системой
Добавление:
Еще один вариант замены диска, если по какой то из причин не получается сделать стандартную замену. Необходимо добавить HotSpare диск. (Для BTRFS диски горячей замены общие для всех имеющихся массивов)
btrfs spare add /dev/sde -f