btrfs send receive のエラー

btrfs send receiveでエラー発生して、外付けのHDDにbackupのsnapshotをコピー出来無くて悩んでいます。 原因を調査中です。もしかしたらバックアップ対象のfsにエラーがあるのかもしれません。

snapshotはsubvolume単位で取得します。 コマンドは

btrfs subvolume -r snapshot [src] [dest]

で取得できます。 なんとなく予想できると思いますが、-rはREAD_ONLYという意味です。 どういう訳かはわかりませんが、READ_ONLYじゃないとbtrfs sendでエラーが発生して実行できません。 今は/のみ取得していますが、リストアには/bootも必要なので、 最終的には両方取得するスクリプトを書くことになると思います。 どうやってリストアするのかはこれから調べます。

dmesgでエラーが確認できます。

BTRFS warning (device sda3): csum failed root 747 ino 91831861 off 9555968 csum 0xedd5c6f1 expected csum 0x5126b9cd mirror 1

いくら btrfs scrub しても uncorrectable errorは消えませんでした。

何度かググってみて、

find / -inum

で壊れたファイルが検索できる事がわかりました。

inode番号が番号に一致したファイルを検索するという意味らしいです。

# find / -inum 91831861
./var/log/messages-20200428

壊れたファイルが見つかったので削除し、 うーん、削除していいんでしょうか? もう一度scrubをかけてみます。

# btrfs scrub start /

やった、これでエラーが出なければsend receiveうまくいくと思ったら、バーってエラーが出ました。

scrubのログは/var/lib/btrfs/にある。 しかし、読みづらいし、エラーが出たファイルのinode番号を記録してくれない様なので、あまり使い道がないかもしれません。

dmesgを見ると、エラーが出たファイルのinode番号が分かります。

[ 5801.359663] BTRFS warning (device sda3): csum failed root 5 ino 91831989 off 1015808 csum 0xbdcc0186 expected csum 0x52118d64 mirror 1

inode番号からエラーになっているファイルを特定します。

# find / -inum 91831989
/var/log/debug.log-20200503

特定したファイルを削除します。

つまり、エラーがなくなるまで以下のループを繰り返します。

1.btrfs scrub start /

2.btrfs scrub status / で たまにチェックし、エラー発生したら3へ。

3.btrfs scrub cancel /

4.inode番号からファイルを特定し、削除します。

# btrfs scrub status /
UUID:             ce760fa2-8e25-4e7e-89d8-18329003541e
Scrub resumed:    Thu Jul 23 16:48:50 2020
Status:           finished
Duration:         0:39:03
Total to scrub:   309.57GiB
Rate:             135.72MiB/s
Error summary:    no errors found

btrfs_scrub_end

この後、btrfs send receiveは無事成功しました。

btrfs_send_receive_end

コマンドの終了ステータスを取得しようとしたんですが、$?を#?と間違えてしまったため、空白が出力されてしまいましたが、 コマンドが何の異常もなく終了しているので、問題なしとしました。

神様からの贈り物

昨日、ツイッターを眺めてたら、プロゲーマーの藤村さんが配信しているってツイートしていたので見に行った。使用キャラは春麗かいぶきで募集していて、藤村さんは春麗を使っていた。もう最近はストVやってないんだけど、藤村さんのいぶきのかっこよさに憧れて、いぶきを使うようになったので、思い切って、いぶき使ってくれませんか?と発言してみた。そしたら、思いが届いたのか、キャラをいぶきに変えてくれた。俺はしばらくストVをやってなかったので、衣装が増えたのか、いぶきはジャージを着ていた。藤村さんのいぶきのプレイを見ながら、嬉しくて状況判断とか反応速度が早いとか発言してしまった。藤村さんはPCのSteam版のストVをプレイしていて、使っているPCの宣伝をやたらとしていた。もしかしたら、そのPCを宣伝するために配信していたのかもしれない。何はともあれ、偶然でもなんでも、俺の声が届いてちょっと会話みたいになったのが嬉しかった。もうこんな経験二度とできないだろうなあ。

コンボ練習

屈中K>天狐(最速)>大蛇>CA のコンボです。

メインキャラはいぶきなのですが、 なかなか勝てなくてちょっと他のキャラもやってみようかと思い、 かりんにちょっと手を出しています。

かりん上手な人は天狐大蛇なんて簡単なのかもしれませんが、 僕の成功率はだいたい10回に1回ぐらいです。 CAはとどめをさせる時に出す感じですね。

さらに中足>天狐も僕には難しいです。 小K小Pというをずらし押しで出しています。 2中K36小K小Pという感じです。 アケコンを使っているので、小Kを人差し指、小Pを中指でずらし押しします。

大蛇は中K中Pをずらし押しします。 236中K2中Pという感じです。

どなたかうまく出せるコツを知っている方がいたら教えてください。 よろしくお願いします。

モルディブより

さっき、ふいに自分には、 中途半端になるぐらいなら最初から手を付けないでおこう、 と思う癖があることに気づいた。 今日、しばらく放って置いたラズパイを再び起動させて、 室温グラフでも作ることを思いついた。 中途半端に終わるかもしれんけど。

数学ももう一度勉強してみるか!って気になった。

数学なんてそれこそ中途半端に終わっちゃいそうだけど、 考えてみれば俺の人生はどの道、 全てが中途半端に終わっちゃうんだよねきっと。

自分の人生なんだし、 もう中途半端でもいいから開き直って、 気楽にやっちゃうかって気になった。

ベリサンキュー。

XfceのBluetoothヘッドホン設定

plugdevグループにユーザーを追加する

$ gpasswd -a <user> plugdev

USBドングルの電源をONにする

$ sudo hciconfig hci0 up
$ bluetoothctl

でペアリングして、

$ sudo emerge --ask pavucontrol

$ pavucontrol

デバイス変更

サウンドを再生するデバイスをヘッドホンに変更したらヘッドホンで音楽が再生できた。

emergeのconflictについて

!!! Multiple package instances within a single package slot have been pulled
!!! into the dependency graph, resulting in a slot conflict:

dev-python/pluggy:0

(dev-python/pluggy-0.5.2:0/0::gentoo, ebuild scheduled for merge) pulled in by
<dev-python/pluggy-0.7s[python_targets_pypy(-)?,python_targets_pypy3(-)?,python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-)] required by (dev-python/sqlalchemy-1.2.7:0/0::gentoo, ebuild scheduled for merge)
^ ^^^^

(dev-python/pluggy-0.7.1:0/0::gentoo, ebuild scheduled for merge) pulled in by
>=dev-python/pluggy-0.7[python_targets_pypy(-)?,python_targets_pypy3(-)?,python_targets_python2_7(-)?,python_targets_python3_4(-)?,python_targets_python3_5(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python2_7(-),-python_single_target_python3_4(-),-python_single_target_python3_5(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)] required by (dev-python/pytest-3.10.1:0/0::gentoo, ebuild scheduled for merge)
^^ ^^^

https://wiki.gentoo.org/wiki/Troubleshooting/ja

公式のHandbookを読んで、コンフリクトが起きた場合は、

コンフリクトを起こしているパッケージを

--oneshot」オプションで入れてしまうとコンフリクトを解決しやすいと書いてあったので、

sudo emerge -a -1 =dev-python/pluggy-0.5.2

でemergeしようとしたところ、

zsh: dev-python/pluggy-0.5.2 not foundというエラーが出て終わってしまう。

仕方がないので、bashに切り替えて再度実行したら、エラーも出ずに正常終了した。なぜだろうか?

bashzsh だと何か違うんだろうか?わからない・・・