Я думаю, что я столкнулся с известной ошибкой в btrfs:

https://www.spinics.net/lists/linux-btrfs/msg60984.html

Конечно, сообщения об ошибках похожи. Если это та же проблема, кажется несколько прискорбным, что исправление для проблемы 2-летней давности не было перенесено в стабильное ядро V4.9 (именно это использует Debian 9)

Сейчас я нахожусь в ситуации, когда один из inode-файловых систем имеет проблемы с экстентами (как сообщает btrfs check)

root 257 inode 2607184 errors 100, file extent discount
Found file extent holes:
       start: 0, len: 81920

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

Кажется, btrfs check --repair просто повторяет печать одной и той же ошибки снова и снова, фактически не исправляя ее.

Есть ли способ исправить существующую файловую систему, или я лучше воссоздать ее и восстановить резервную копию?

1 ответ1

1

Я думаю, root 257 относится к идентификатору подобъема , а затем inode 2607184 указывает на проблемный индекс. Я хотел бы попытаться удалить (отменить связь) каждый путь, связанный с индексом.

  1. Смонтировать подобъем:

    mount /dev/sdXN -o subvolid=257 /mnt/mountpoint
    
  2. Найдите каждую запись с соответствующим номером инода:

    find /mnt/mountpoint -xdev -inum 2607184
    
  3. Исследуйте объекты. Надеюсь, вы можете позволить себе удалить их.

    • (Я не уверен, что это может быть каталог в вашем случае). Если это каталог, я подозреваю, что его список может быть неполным.
      1. Переместите его содержимое (если есть) в другой новый каталог (создайте его с тем же владельцем, возможно, с правами доступа); удалить старый каталог; mv новый каталог со старым именем.
      2. Сравните с вашей резервной копией, восстановите недостающие объекты.
    • Если это один или несколько файлов -
      1. Убери их всех.
      2. Восстановите файлы из резервной копии.
  4. Размонтируйте:

    umount /mnt/mountpoint
    
  5. Проверьте файловую систему. Проблемного инода больше не должно быть.


Кроме того, вы можете удалить весь подобъем. Это кажется излишним, но это должно избавить от проблемного inode.

  1. Смонтируйте корень файловой системы:

    mount /dev/sdXN -o subvol=/ /mnt/mountpoint
    
  2. Список подобъемов:

    btrfs subvolume list /mnt/mountpoint
    

    и найдите тот с ID 257.

  3. Удалить подобъем:

    btrfs subvolume delete -c /mnt/mountpoint/path/to/the/subvolume/with/ID/257
    
  4. Размонтируйте:

    umount /mnt/mountpoint
    
  5. Проверьте файловую систему. Проблемного инода больше не должно быть.

  6. Восстановите ваши данные из резервной копии.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .