Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Btrfsが壊れかけて困った話

 Btrfsが壊れかけて困った話

Kenichiro MATOHARA

February 05, 2022
Tweet

More Decks by Kenichiro MATOHARA

Other Decks in Technology

Transcript

  1. 今回の環境 今回の環境 PC Lenovo ThinkPad T430s CPU Intel® Core™ i5-3320M/RAM

    16GB/SATA S , FwRev=STAS1024) OS Debian sid amd64 + セルフビルドKernel 5.16.0 ファイルシステム dm-crypt + Btrfs (v5.15.1), snapperスナップショット有効,zstd透過圧縮 rw,noatime,nodiratime,compress=zstd:3,ssd,space_cac バックアップ デイリーバックアップ有り ZA1000CM10002 5 / 20
  2. はじまり はじまり 再起動すると起動できなくなってしまう kernel 起動パラメータ init=/bin/sh 追加して起動してみると shred librarie が壊れているようで

    file too short とか言 われる(0byte) 壊れたpkgを apt install --reinstall しようと思ったら apt もコケる 7 / 20
  3. とりあえずの復旧 とりあえずの復旧 testing のインストーラで起動(レスキューモード) 壊れてそうな .deb を から手動ダウンロー ドして dpkg

    -i を何度か繰り返してとりあえず apt コマンドを使 えるように 壊れたライブラリを apt install --reinstall で起動するよ うになった Debian — Debian インストーラ http://packages.debian.org/ 8 / 20
  4. 原因 原因 なんで壊れたんだろう? と btrfs check をかけてみる 大量のエラ ー……ファイルシステムがおかしそう? リモートにバックアップが取れていることを確認

    とりあえずほっとする 初期化してしまったほうがいいだろうけどあまり機会がないので 復旧を試みる 9 / 20
  5. btrfs check --repair btrfs check --repair につ につ いて いて

    今回は幸い復旧できたけどいくつかのファイルは壊れていたし時間 もかかるのでバックアップ重要 btrfs-check(8) Warning Do not use --repair unless you are advised to do so by a developer or an experienced user, and then only after having accepted that no fsck successfully repair all types of filesystem corruption. Eg. some other software or hardware bugs can fatally damage a volume. 11 / 20
  6. Debianシステムの修復 Debianシステムの修復 ファイルシステムは治ったようだけどシステムは壊れてそう debianの重要なパッケージ一覧を出して apt install -- reinstall $ dpkg-query

    -Wf '${Package;-40}${Essential}\n' | grep yes | cut -f1 -d\ | \ xargs deborphan -anp required --no-show-section | sed 's/^ *//g' | sort | uniq > essentialpkgs $ cat essentialpkgs.list | xargs sudo apt install --reinstall 12 / 20
  7. $HOME を / から分けてみる $HOME を / から分けてみる $HOME をサブボリュームに分けることにする(多少壊れにくくな

    る?) 1 $HOME 退避 2 $HOME 用サブボリューム作成 3 サブボリュームマウント 4 サブボリュームに $HOME のデータをコピー 5 /etc/fstab を修正して $HOME をマウントするようにする # mv /mnt/home /mnt/home.org # btrfs subvolume create /mnt/home # mount -o noatime,nodiratime,compress=zstd:3,ssd,space_cache,subvol=/home /dev/mapper/t430s--v # cp -a /mnt/home.org /mnt/home # nano /mnt/etc/fstab # grep /home /mnt/etc/fstab /dev/mapper/t430s--vg-root /home btrfs noatime,nodiratime,ssd,compress=zstd,space_ 1 2 4 5 15 / 20