При загрузке виртуалки с Linux стала появляться ошибка связанная с BTRFS - "BTRFS warning (device dm-X): block group XXXXXXXXXX has wrong amount of free space", где dm-X - устройство device mapper на котором находится BTRFS, а XXXXXXXXXX - номер блока файловой системы.
Sep 22 09:01:35 vbox kernel: Btrfs loaded, crc32c=crc32c-intel Sep 22 09:01:35 vbox kernel: BTRFS: device fsid 683a86c5-a6f1-4b68-b0f9-5330e443a1e4 devid 1 transid 1769033 /dev/mapper/debian--jessie--vg-docker scanned by btrfs (191) Sep 22 09:01:36 vbox kernel: BTRFS info (device dm-2): using crc32c (crc32c-intel) checksum algorithm Sep 22 09:01:36 vbox kernel: BTRFS info (device dm-2): flagging fs with big metadata feature Sep 22 09:01:37 vbox kernel: BTRFS info (device dm-2): disk space caching is enabled Sep 22 09:01:37 vbox kernel: BTRFS info (device dm-2): enabling ssd optimizations Sep 22 09:01:48 vbox kernel: BTRFS warning (device dm-2): block group 71072481280 has wrong amount of free space Sep 22 09:01:48 vbox kernel: BTRFS warning (device dm-2): failed to load free space cache for block group 71072481280, rebuilding it now
Хотя и пишет что "rebuilding it now", но за несколько дней ничего не изменилось. В Linux fsck для BTRFS это заглушка, которая ничего не делает и потому придётся исправлять вручную.
В моём случае BTRFS используется для Docker и сначала нужно остановить его и отмонтировать файловую систему (по-умолчанию это /var/lib/docker)
$ sudo systemctl stop docker.service docker.socket $ sudo umount /var/lib/docker
Далее выполню проверку через btrfs check
$ sudo btrfs check /dev/dm-2 Opening filesystem to check... Checking filesystem on /dev/dm-2 UUID: 683a86c5-a6f1-4b68-b0f9-5330e443a1e4 [1/7] checking root items [2/7] checking extents [3/7] checking free space cache block group 95097454592 has wrong amount of free space, free space cache has 40697856 block group has 40714240 failed to load free space cache for block group 95097454592 [4/7] checking fs roots [5/7] checking only csums items (without verifying data) [6/7] checking root refs [7/7] checking quota groups skipped (not enabled on this FS) found 40978440218 bytes used, no error found total csum bytes: 37374324 total tree bytes: 2710274048 total fs tree bytes: 2584936448 total extent tree bytes: 80347136 btree space waste bytes: 479271479 file data blocks allocated: 210482892800 referenced 210412625920
Проверка подтверждает наличие проблемы. Чтобы ее исправить нужно очистить free space кеш. По-умолчанию используется кеш версии v1
$ $ sudo btrfs check --clear-space-cache v1 /dev/dm-2 Opening filesystem to check... Checking filesystem on /dev/dm-2 UUID: 683a86c5-a6f1-4b68-b0f9-5330e443a1e4 Free space cache cleared
Повторная проверка не обнаруживает проблемы
$ sudo btrfs check /dev/dm-2 Opening filesystem to check... Checking filesystem on /dev/dm-2 UUID: 683a86c5-a6f1-4b68-b0f9-5330e443a1e4 [1/7] checking root items [2/7] checking extents [3/7] checking free space cache [4/7] checking fs roots [5/7] checking only csums items (without verifying data) [6/7] checking root refs [7/7] checking quota groups skipped (not enabled on this FS) found 40967827484 bytes used, no error found total csum bytes: 37374324 total tree bytes: 2710306816 total fs tree bytes: 2584936448 total extent tree bytes: 80379904 btree space waste bytes: 479323951 file data blocks allocated: 210472275968 referenced 210402013184
Можно монтировать файловую систему обратно и запускать Docker
$ sudo mount /var/lib/docker $ sudo systemctl start docker.service docker.socket
Комментариев нет:
Отправить комментарий