web-dev-qa-db-ja.com

完全なBTRFSパーティションは使用できません

私には非常に重大な状況があります。 Fedora20ボックスにスナッパーをインストールしました。約20のスナップショットを作成しました。私のbtrfsパーティションはスナッパーサブボリュームでいっぱいになりました。パーティションが書き込み不能になりました(いっぱいです)。 OSが起動できなくなりました(ランレベル1でも)。

私は試しました(OSがまだ起動可能である間に)

  • スナッパーを殺し、ファイルを削除します
    • スナップショットのためにスペースが回復されませんでした。
  • ランレベル3 に再起動します
    • 失敗(ブートハング)
  • ランレベル1で再起動し、snapper delete N を発行します。
    • 失敗(Snapperにはdbusが必要)
  • OSが起動できなくなります。

それから私は試しました:

  • Fedora 20ライブスティックを作成し、そこからマウントします
    • >ファイルファイルをrmしてtrueにするようにしてください
      • 不合格。ファイルはスナップショットで複製されます
    • スナップショットで削除してみてください
      • 不合格。スナップショットは読み取り専用です
    • Btrfsサブボリュームでスナップショットを削除してみてください(.snapshots/N/snapshot)
      • 不合格。 「デバイスに空き容量がありません」と表示されます
    • Btrfsサブボリュームで親サブボリューム( ".snapshots")を削除してみてください
      • 不合格。 「ディレクトリは空ではありません」と表示されます
    • Btrfs fibalanceを試してください。 -dusage = 5
      • 不合格。非推奨だと言っています
    • Btrfs balancestartを試してください。
      • 不合格。 「デバイスに空き容量がありません」と表示されます
    • Btrfs balancestartを試してください。 -dusage = 5
      • 不合格。 「完了、90チャンクのうち0を再配置する必要がありました」と言いますが、何も変更されていません。

ファイルシステムも破損している可能性があります。 btrfsckは主にマイナーエラーを返します。

私はほとんど希望がありません。システムは私にとって重要であり、失われているようです。奇跡で救えますか?

私は複数のコンピューター、ハードドライブ、USBスティック、そして必要なだけの時間を持っています。

1
PythonNut

現在のドライブよりも多くのストレージを備えた予備のハードドライブがある場合は、次のことを試すことができます。

  1. LiveCDから起動します(Fedoraまたは少なくとも同じbtrfsバージョンをサポートするものが素晴らしいでしょう)
  2. Btrfsファイルシステムを新しいハードドライブにコピーします
  3. 新しいファイルシステムを検出する
  4. Btrfsファイルシステムのサイズ変更を使用して、ストレージプールのスペースの量を増やします。
  5. スペースが増えると、「デバイスに残っているスペース」があるはずです。気にしない数のスナップショットを削除してください。

それでも十分なスペースを確保できない場合、またはより多くのストレージを備えた1台のハードドライブがないが、少なくとも同じストレージ機能を備えた2台のドライブがある場合は、次のことを試すことができます。

  1. Btrfsファイルシステムを新しいハードドライブの1つにコピーします
  2. 2番目のハードドライブで新しいストレージプールを使用するように新しいbtrfsファイルシステムを構成します
  3. リバランス(btrfsバランス開始)
  4. これで、結合されたスペースのほぼ半分が空いているはずです。

元のパーティションと別のドライブを使用したこのアプローチはお勧めしません。元のパーティションを破損した場合(たとえば、リバランス中に)、回復の機会がなくなる可能性があるためです。

スナップショットのデータを実際に気にしない場合は、コンテンツを別のbtrfsパーティションまたはext4パーティション、mkfsに再度コピーして、ファイルを転送する方が簡単な場合があります。

メタデータツリーを変更する必要がないため(スナップショットを気にしない場合)、この方法の方が高速です(読み取り専用でマウントされている場合)。

2
ssice