btrfsは読み取り専用ファイルシステムから送信できません

btrfsは読み取り専用ファイルシステムから送信できません

だからbtrfsのルートファイルシステムは少し破損しています。起動すると、ルートの読み取り/書き込みマウントが失敗し、ファイルシステムが読み取り専用でマウントされます。私が読んでいるファイルはすべてうまく機能しているようです。

ローカルスナップショットがたくさんあります。破損によってすべてのファイルが影響を受けないことを願っています。問題を解決するために、より大胆な対策を講じる前に、できるだけ多くのファイルを外部バックアップディスクにコピーしたいと思います。しかし、btrfs sendそれは失敗しました-30 (Read-only file system)

  • btrfs sendもし送るファイルシステムは読み取り専用でマウントされていますか?そこに何も書く必要がないようですので、これは私を驚かせます。
  • それでは、btrfs send転送ファイルシステムが実際に記録されているのか、それともこのチェックを実行する他の理由がありますか?
  • 解決策はありますか?現時点ではスナップショットを再同期する予定ですが、当然のことながらはるかに遅くなります。

(他のことを扱うのが難しい場合は、上記のいずれか1つだけを扱う回答に投票します。)

答え1

私は私のVMでこれをテストしましたztest(zfs、btrfs、mdadm、lvmなどの項目をテスト/練習するために使用します)。 VM には、/dev/vda から /dev/vdo まで 15 x 100 MB の仮想ドライブが接続されています。私が実行しているテストタイプに比べて規模が大きい必要はありません)。

とにかく、読み取り専用btrfsマウントのサブボリュームを別のfs(/ tank1、ZFS)のファイルに送信できました。例えば

# df -Th /b1
Filesystem     Type   Size  Used Avail Use% Mounted on
/dev/vdb1      btrfs  190M  7.3M  148M   5% /b1

# btrfs filesystem show /b1
Label: none  uuid: a5217930-73a9-4481-a14a-2c1974b3f2db
    Total devices 2 FS bytes used 4.00MiB
    devid    1 size 190.00MiB used 104.00MiB path /dev/vdb1
    devid    2 size 190.00MiB used 104.00MiB path /dev/vdc1

# mount -o ro,remount /b1

# mount | grep /b1
/dev/vdb1 on /b1 type btrfs (ro,relatime,space_cache,subvolid=5,subvol=/)

# btrfs send /b1/sv1_20160506 -f /tank1/b1.send
At subvol /b1/sv1_20160506

# ls -l /tank1/b1.send 
-rw-rw-r-- 1 root root 2177404 Jun  7 01:24 /tank1/b1.send

これがあなたのシステムでうまくいかない理由について2つの可能性を考えることができます(しかし他の場合もあり、それらのどれも必ずしも正確ではありません)。

  1. btrfsを作成する必要があり/tmp/tmpサブディレクトリにすることもできます/。その可能性は低いですが、ramdiskにtmpfsをマウントすることは価値があるかもしれません/tmp

  2. btrfs fsが破損しているため、btrfsが/正しく機能しません。

どちらの場合も、可能な解決策は回復CD / DVD / USBなどから起動することです。btrfs サポートあり割れたそしてクロンジラ良いオプションです)btrfs sendそこでスナップショットを撮ってください(外部バックアップディスクをRWに手動でマウントした後)。

関連情報