$30 off During Our Annual Pro Sale. View details »

Btrfsが壊れかけて困った話

 Btrfsが壊れかけて困った話

Kenichiro MATOHARA

February 05, 2022
Tweet

More Decks by Kenichiro MATOHARA

Other Decks in Technology

Transcript

  1. Btrfsが壊れかけて Btrfsが壊れかけて 困った話 困った話 Kenichiro Matohara(matoken) <maroken@kagolug.org> 1 / 20

  2. 南隅から参加(鹿児島の右下) 好きなLinuxディストリビューションはDebian お仕事募集 mailto:work@matohara.org Kenichiro Matohara(matoken) Kenichiro Matohara(matoken) https://matoken.org https://matoken.org

    2 / 20
  3. 最近 最近 四十肩 スマホバッテリーがそろそろ限界 OCN/iijmio/mineoでセールやってるな…… OCNの . MNP+オプションで1円 だしLineageOS対応してそうだし 気になる

    Redmi 9T 1円 moto g31 Android Enterprise Recommended 3 / 20
  4. メインマシンの /(Btrfs) が壊れか メインマシンの /(Btrfs) が壊れか けて困った けて困った 4 /

    20
  5. 今回の環境 今回の環境 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
  6. 序章 序章 一部のアプリケーションが Segmentation Falt で落ちるように apt upgrade でいくつかのパッケージが依存関係で失敗したりし ていたのでよく調べずに

    sid だしな,そのうち治るだろうと思って いた 6 / 20
  7. はじまり はじまり 再起動すると起動できなくなってしまう kernel 起動パラメータ init=/bin/sh 追加して起動してみると shred librarie が壊れているようで

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

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

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

  11. 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
  12. 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
  13. 導入済みパッケージを導入し直す ~/.dpkg_—​ get-selections はデイリーで実行している dpkg - -get-selections の結果 $ grep

    $'\t'install$ ~/.dpkg_--get-selections | grep -v ^linux-image| awk '{print $1}' | xargs 13 / 20
  14. データの確認 データの確認 $HOME , /etc をバックアップと比較して壊れているものを探す $ rsync -avcn $SOURCE

    $DIST chacheくらいだった 14 / 20
  15. $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
  16. snapshotクリア snapshotクリア btrfs df / btrfs du を比べると倍くらい違う?消えていないsnapshotが2つ あったので手動で削除……大きく容量が空いた. $

    snapper --csvout list | grep -v ^config, | cut -f3 -d, | xargs -n1 sudo snapper delete 16 / 20
  17. snapshot設定 snapshot設定 $HOMEもsnapshotを設定 $ sudo cp /etc/snapper/configs/root /etc/snapper/configs/home $ sudo

    vi /etc/snapper/configs/home 17 / 20
  18. まとめ まとめ Btrfs便利な機能多くて助かるけどたまに壊れる(4度目)壊れると直 せるかは? 今回は直せるかが気になったのでrepairを試みたけどなんやかんや1 週間ほどかかった 時間もかかるし初期化するのが近道 一応治ったけどSecureErasesして再インストールかな? バックアップだいじ 18

    / 20
  19. 参考URL 参考URL Welcome to BTRFS documentation! — BTRFS documentation btrfs-check(8)

    19 / 20
  20. 奥付 奥付 発表 発表者 利用ソフトウェア ライセンス CC BY-NC-SA 4.0 LILO&東海道らぐオンラインミーティング

    2022-02-05 Kenichiro Matohara(matoken) Asciidoctor Reveal.js 20 / 20