Техническое руководство: восстановление данных с BtrFS диска или RAID массива без потери информации
Узнайте, как безопасно восстановить данные с BtrFS диска или RAID массива ОС Linux! В нашей статье мы подробно рассмотрим процесс восстановления и поделимся советами по сохранению вашей важной информации.
- Файловая система btrfs
- Создание точки монтирования
- Как создать RAID5
- Как смонтировать RAID диск
- Как заменить или добавить накопитель
- Как восстановить поврежденный том
- Восстанавливаем данные с btrfs RAID5
- Особенности файловой системы btrfs
- Заключение
- Вопросы и ответы
- Комментарии
Обычно для создания RAID массива в ОС Linux используют mdadm и lvm, подробнее об этих системах можно посмотреть в одном из наших видео уроков.
Помимо этих инструментов, о которых рассказано в видео, еще встроенная поддержка RAID есть в файловой системе Btrfs. Она обходится собственными средствами для построения и работы с дисковыми массивами, далее давайте более детально рассмотрим все ее возможности.
Файловая система btrfs
Btrfs – это новая файловая система с поддержкой функции копирования при записи (Copy on Write) со встроенной поддержкой RAID. Суть этой замечательной функции состоит в отсутствии перезаписи старых данных при копировании. Это огромный плюс, она значительно упрощает восстановление удаленных файлов после сбоев. Так как любой сбой или ошибка в процессе переписывания никак не повлияют на предыдущее состояние файлов.
Характеристика | Описание |
---|---|
Тип файловой системы | Копирование при записи (COW) |
Поддержка снимков | Возможность создавать моментальные снимки данных (snapshots) для быстрого восстановления |
Поддержка RAID | Встроенная поддержка конфигураций RAID (RAID 0, 1, 5, 6, 10) |
Сжатие данных | Поддерживает прозрачное сжатие данных для экономии места |
Целостность данных | Проверка целостности данных с помощью хеширования и автоматическое восстановление |
Дефрагментация | Автоматическая и ручная дефрагментация данных |
Расширяемость | Возможность динамического увеличения размеров файловой системы без отключения |
Клонирование файлов | Возможность быстрого клонирования файлов без дублирования данных |
ФС хранит метаданные отдельно от данных файловой системы, и вы можете одновременно использовать разные уровни RAID для этой информации, это главное ее преимущество. Также целью этой журналируемой системы, является обеспечение более эффективного управления хранилищем и увеличенной безопасностью целостности данных в ОС Linux.
Перед началом использования btrfs, нам понадобиться доустановить необходимые инструменты управления ФС, выполнив следующую команду:
sudo apt install btrfs-tools
Создание точки монтирования
И прежде чем собрать RAID необходимо создать каталог точки монтирования.
Создаем каталог:
Sudo mkdir –v /data
Где «data» – это его название.
Теперь приступаем к созданию массива.
Как создать RAID5
Создавая массив, не нужно в обязательном порядке размечать носители на разделы, ФС не требует этого. Объединять накопители в массив, можно как целые, так и отдельные разделы, даже объединять носители с имеющимися разделами. Для примера я покажу как создать RAID 5 из пяти накопителей.
Чтобы постоянно не вводить пароль root выполните команду sudo -i, после чего все команды будут выполняться от администратора.
Для построения массива введите в терминале такую команду:
sudo mkfs.btrfs -L data -m raid5 -d raid5 -f /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf
где:
L - метка или имя файловой системы
Параметр:
d - устанавливаем тип RAID5 для данных.
m - устанавливаем тип RAID5 для метаданных.
f - служит для принудительного создания btrfs, даже если какой-либо из накопителей отформатирован в другой ФС.
Теперь, можно монтировать, используя любой из накопителей который входит в состав.
Как смонтировать RAID диск
Я использовал 5 накопителей для создания RAID: sdb, sdc, sdd, sde и sdf. Поэтому я могу смонтировать данные ФС в каталоге data с помощью диска sdb. Открываем управление дисками и монтируем наш носитель, после чего он станет доступным.
Или же можно смонтировать диск в терминале.
sudo mount /dev/sdb1 /data
Чтобы проверить введите sudo df -h
sudo df -h
Как видите, наш массив смонтирован в каталог /data
А чтобы посмотреть информацию о занятом и свободном пространстве массива, вводим:
sudo btrfs filesystem usage /data
А для размонтирования массива достаточно ввести:
sudo umount /data
Как заменить или добавить накопитель
Для замены накопителя нужно в терминале ввести btrfs replace. Она запускается асинхронно, то есть выполняется постепенно:
- start - для запуска,
- cancel - для остановки,
- status - а для просмотра состояния.
Прежде нужно определить номер поврежденного накопителя:
sudo btrfs filesystem show
Затем заменить его на новый:
btrfs replace start <удаляемое устройство или его ID> <добавляемое устройство> <путь, куда смонтирована btrfs>
В моем случае вводим:
btrfs replace start 3 /dev/sdg
где: 3 – это номер отсутствующего диска, а sdg – код нового накопителя.
Как восстановить поврежденный том
Для восстановления Btrfs массива, нужно использовать встроенную опцию монтирования - recovery:
sudo mount -o recovery /dev/sdb /mnt
Далее начнется процесс восстановления.
Восстанавливаем данные с btrfs RAID5
Даже самая надежная и отказоустойчивая система мажет выйти из строя. Сбой системы, выход из строя накопителя, аппаратной части, повреждение метаданных, случайное удаление, неправильная настройка все это может повлечь за собой поломку RAID и утерю важных данных. Если вы столкнулись с этим воспользуйтесь программой Hetman RAID Recovery. Она способна восстановить любую информацию с нерабочих массивов или носителей, которые входили в массив. Утилита воссоздаст разрушенный RAID, пошагово вычитывая всю известную информацию, далее вы сможете скопировать все найденные данные.
Подключите носители к ПК с установленной Windows, воспользуйтесь виртуальной машиной, или установите ее второй системой.
Программа автоматически просканирует дисковое пространство, и отобразит всю возможную информацию о массиве.
Как видите, в нашем случае с btrfs RAID, программа не собирает носители в массив, это связано со спецификой его построения, при этом вся информация хранится в соответствии с типом RAID.
Для начала процесса восстановления откройте менеджер дисков, кликните правой кнопкой мыши по любому из дисков из которых состоял массив и запустите «Быстрое сканирование».
При сканировании любого из дисков результат будет идентичным, так как они все являются частью одного массива.
По завершении анализа программа отобразит найденные файлы, здесь доступен их пред.просмотр, с помощью которого легче найти нужные изображения или видео.
Отметьте файлы, которые нужно вернуть и нажмите «Восстановить», укажите путь куда их сохранить и еще раз «Восстановить». По завершении все файлы будут лежать в указанной папке.
Если в результате быстрого сканирования программе не удалось найти нужных файлов выполните «Полный анализ». Данный тип анализа займет больше времени, но при этом найдет всю информацию, которая осталась на диске, даже ту которая была давно удалена с диска.
Так как это пятый RAID вся информация остается целой при отсутствии одного накопителя, но, если вышли из строя 2 диска часть информации будет повреждена.
Особенности файловой системы btrfs
Btrfs поддерживает сжатие данных. То есть, вся имеющаяся информация на носителях будет автоматически сжиматься. А при обращении к данным, каждый конкретный файл будет автоматически распакован.
Эта функция позволяет значительно экономить пространство на накопителях, а также время на поиски стороннего ПО для сжатия данных. ФС поддерживает 3 основных метода сжатия файлов – это zlib, lzo и zstd. Их основное отличие заключается в степени, а также скорости сжатия.
Наша программа поддерживает восстановление сжатых файлов любым из этих трех методов. В интерфейсе программы сжатые тома и файлы отображаются следующим образом, как видите они подсвечены другим цветом.
Еще одним из главных преимуществ является создание подтомов (subvolum-ов). Простыми словами на одном накопителе можно создать к примеру 3 разных диска (subvolum-а). Эти подтома способны саморасширятся за счет свободного пространства другого тома. Такая возможность при необходимости позволяет расширить один диск за счет другого без сжатия и переноса данных. Эти подтома отображаются в программе следующим образом, это диски внутри основного накопителя.
Таким же образом в программе отображены и папки со snap-shot-ами.
Для создания подтомов используйте команду:
btrfs subvolume create /mnt/btrfs/my-subvolume
А для просмотра списка подтомов на этом накопителе выполните:
btrfs subvolume list /mnt/btrfs
Для монтирования подтома:
mount -o subvol=my-subvolume /dev/sdd2 /mnt/btrfs2
где sdb1 - это код диска.
Заключение
Существует небольшое количество инструментов для восстановления данных, которые умеют читать btrfs RAID. При выборе стоит учитывать, что в процессе работы информация может затереться, обратите внимание на наличие функции создания образа массива и сканирования с образа. И все же лучшим решением уберечь себя от потери важных данных будет их регулярное резервное копирование.
Проверить, так ли это, можно с помощью команды: # btrfs subvolume list -a /mountpoint
Чтобы удалить подтом, вам нужно будет выполнить команду: # btrfs subvolume delete emptydir
Во-первых, обновите ядро до последней доступной версии и повторите попытку монтирования. Если у вас есть ядро в файловой системе btrfs, вам, вероятно, придется найти диск восстановления с последним ядром.
Во-вторых, попробуйте монтировать с параметрами -o recovery или -o ro или -o recovery,ro (используя новое ядро). Один из них может успешно работать.
Наконец, когда в логах ядра есть что-то вроде этого,
? replay_one_dir_item+0xb5/0xb5 [btrfs]
? walk_log_tree+0x9c/0x19d [btrfs]
? btrfs_read_fs_root_no_radix+0x169/0x1a1 [btrfs]
? btrfs_recover_log_trees+0x195/0x29c [btrfs]
? replay_one_dir_item+0xb5/0xb5 [btrfs]
? btree_read_extent_buffer_pages+0x76/0xbc [btrfs]
? open_ctree+0xff6/0x132c [btrfs]
тогда вам следует попробовать использовать btrfs rescure zero-log
Прежде всего, убедитесь, что вы передали параметр монтирования «сжать» в команде fstab или mount.
Если да, и коэффициенты неудовлетворительны, то вы можете попробовать опцию «сжатие-сила». Таким образом, вы заставляете btrfs сжимать все. Причина, по которой коэффициенты «сжатия» такие низкие, заключается в том, что btrfs очень легко отказывается от решения о сжатии.(Возможно, чтобы не тратить слишком много процессорного времени на плохое сжатие данных).
По дизайну. btrfs fi defrag работает с одним переданным ему объектом файловой системы, например, файлом. При запуске в каталоге он дефрагментирует метаданные, содержащиеся в подразделе, содержащем каталог, а не содержимое каталога.
Если вы хотите дефрагментировать содержимое каталога, вы должны использовать рекурсивный режим с флагом -r