それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

lxc の btrfs ストレージがぶっ壊れたときの記録

lxc のインスタンスの動作が微妙におかしいので、停止してみみてみた。

srubでエラーになる。

there are uncorrectable errors

エラーを見てくる。、

dmesg| grep -e "BTRFS warning.*path:"
dmesg| grep -e "BTRFS warning.*path:" | sed -e 's/^.*path\: //'

LXCのログも見る。

lxc monitor --type=logging --pretty

ログを見ながらscrubする

btrfs scrub start /mnt
journalctl --dmesg -f --grep 'BTRFS'
-- Logs begin at Thu 2020-09-10 14:48:11 JST. --

May 13 04:37:05 m75q-1 kernel: BTRFS error (device loop1): bdev /dev/loop1 errs: wr 704175, rd 69641, flush 0, corrupt 0, gen 0
May 13 04:37:05 m75q-1 kernel: BTRFS error (device loop1): bdev /dev/loop1 errs: wr 704175, rd 69642, flush 0, corrupt 0, gen 0
May 13 04:37:05 m75q-1 kernel: BTRFS error (device loop1): bdev /dev/loop1 errs: wr 704175, rd 69643, flush 0, corrupt 0, gen 0
May 13 04:37:05 m75q-1 kernel: BTRFS error (device loop1): unable to fixup (regular) error at logical 221216776192 on dev /dev/loop1
May 13 04:37:05 m75q-1 kernel: BTRFS error (device loop1): unable to fixup (regular) error at logical 221216247808 on dev /dev/loop1
May 13 04:37:05 m75q-1 kernel: BTRFS error (device loop1): unable to fixup (regular) error at logical 221216903168 on dev /dev/loop1
May 13 04:37:05 m75q-1 kernel: BTRFS error (device loop1): unable to fixup (regular) error at logical 221216780288 on dev /dev/loop1
May 13 04:37:05 m75q-1 kernel: BTRFS warning (device loop1): i/o error at logical 221216641024 on dev /dev/loop1, physical 193282576384, root 4115, inode 103249193, offset 76156928, length 4096, links 1 (path: rootfs/var/log/journal/67abe395f45b472>
May 13 04:37:05 m75q-1 kernel: BTRFS warning (device loop1): i/o error at logical 221215981568 on dev /dev/loop1, physical 193281916928, root 4115, inode 103249193, offset 75497472, length 4096, links 1 (path: rootfs/var/log/journal/67abe395f45b472>
May 13 04:37:05 m75q-1 kernel: BTRFS info (device loop1): scrub: finished on devid 1 with status: 0
May 13 04:49:16 m75q-1 kernel: BTRFS info (device loop1): scrub: started on devid 1

ハードウェアエラーだって・・・・

Ideally, a corrupt checksum only happens due to hardware issues (e.g., "bit rot" on disk). 

その状態でもbtrfs restore はできるので、btrfs のスナップショットとサブボリュームの管理がlxdからうまく行えてないんじゃないかと疑問を感じた。

btrfsの場合、マウントできるのでファイルを取り出した。

lxc storage list | grep default 
pv /var/snap/lxd/common/lxd/disks/default.img | pigz default.img.gz
losetup -f --show /var/snap/lxd/common/lxd/disks/default.img
mount /dev/loopX /mnt
snap stop lxd
btrfs scrub /mnt
btrfs restore /dev/loopX