web-dev-qa-db-ja.com

ドライブが間違った空き容量を報告する

そこで、光沢のあるSATA SSDをさらに光沢のあるPCI-E SSDに交換しました。 SSDでコアOSを実行するのは、それがばかばかしいからです。古いSSDでこれを行ったため、新しいEXT4パーティションを作成し、データをddedしました(もう実行した正確なコマンドがわかりません)。grubを再インストールした後、PCI- E SSD。一見、すべてが完璧に機能し、物事はかつてないほど速く実行されました。

しかし、その後、新しい大きなドライブの空きディスク領域に気付きました。他のディスクとほぼ同じでした...サイズが半分のディスク。

そのため、ファイルを誤ってコピーし、ファイルシステムのメタデータの一部も一緒にコピーしたかのように見えます。

duやDisk Usage Analyzerなどのツールは、正しい数値で戻ってきます。 (ファイルではなく)パーティションを見ると、ドライブは120GBであると考えられているようです

私はこのドライブを1週間使用しているので、古いSSDと同期が取れていないため、データをダンプして再起動することは喜びに満ちた仕事ではありませんが、2つの質問があります。

  1. ファイルシステムを修正して、それが実際に何をしているのかを知る方法はありますか? fscke2fsckおよびbadblocksはすべて、問題を発見することなくスキャンできるようです。

  2. 古いSSDを再び差し込んだ場合、PCI-Eからデータをコピーしてから、新しいファイルシステムにコピーし直します(データをジャグリングするなど)。これを行う最善の方法は何ですか?私は明らかに、すべての許可とソフトリンクをそれらが存在する場所に保持したいと考えています。

7
Oli

使用したツールddはファイルコピーツールではなく、ディスクコピーツールであり、バイト単位でコピーします。これは、ドライブ上のパーティションの容量に関するメタデータを含むすべての情報がコピーされたことを意味します。

ファイルの完全バックアップを行い、ドライブをフォーマットし(完全パーティションフォーマットを含む)、新しいext4ルートパーティションを作成し、ドライブをスワップしてから、ファイルをコピーする必要があります。

ファイルをコピーしたら、chrootを新しいシステムに上書きし、update-grubコマンドを実行してブートシステムを新しいドライブにインストールする必要があります。

または、Ubuntuの新規インストールを実行して、ファイルを元に戻すこともできます。


これを修正するためにオリがしたこと

  1. LiveCDから起動し、「Ubuntuを試す」を選択した
  2. SSDと別のディスク(コピー先)をマウントしました
  3. らん

    Sudo rsync -ax /media/ssd /media/backup-drive/ssd-backup
    

    これには長い時間がかかります。コピーする前にいくつかのクリーンアップを行いましたが、それでも35GBあり、書き込みバーストが約120MB/sになるのに少し時間がかかりました。 rsyncはデフォルトでは出力を提供しませんが、詳細の詳細を知りたい場合は--progressを追加できます(ただし、実際に読むには速すぎて、おそらく遅くなります)。

  4. ドライブを破棄しようとしましたが、palimpsest(ディスクユーティリティ)から「デバイスビジー」の問題が発生していたため、インストーラーを実行しました。インストーラーで、SSDドライブ全体を使用してNiceファイルシステムを作成し、ファイルのコピーを開始した後にkillall ubiquityを実行するように指示しました。
  5. 次に、インストーラーがコピーしたすべてのファイルを削除し、バックアップファイルをコピーしました。

    Sudo rm -rf /media/ssd/*
    Sudo rsync -ax /media/backup-drive/ssd-backup /media/ssd
    
  6. それから私はリブートし、私のUUIDが変更されたことに気付きました(それについて考えると明らかです)。したがって、grub2はどこからブートして爆発するかわからなかったので、LiveCDに戻りました。これをガイドとして使用している場合は、この手順をスキップすることをお勧めします;)
  7. Grubを再インストールしてください!ヘルプドキュメントに従い、chrootオプションに従いました。そこにいる間に/etc/fstabを編集する必要があるかもしれません。
  8. 再起動すると完了です。私は戻ってきました、私は空きスペースのメトリック「落書き」を持っています。ハザ。

私はあなたが次のようなことをしていると仮定します:

Sudo dd if=/dev/sda98 of=/dev/sda99

/ dev/sda98のサイズは12GBで、/ dev/sda99のサイズは25GBです。

明らかにこれらの名前は間違っていますが、あなたはそのアイデアを得ます。

行ったのは、データだけでなくファイルシステム全体(何が無料で何が使用されているかを記述するすべてのメタデータを含む)を新しいパーティションに移動することです。空き領域はたくさんありますが、その空き領域は/ dev/sda99のファイルシステムに組み込まれていないため、パーティションの最後に隠されており、まったく使用できません。

解決策は、パーティションにあるファイルシステムのサイズを変更することです。

Sudo resize2fs /dev/sda99

eXT2、EXT3、およびEXT4ファイルシステムで動作します。

最初にバックアップを作成する必要があります。

これにより、ファイルシステムがパーティション上の使用可能なすべてのスペースに拡張され、ファイルシステムのメタデータに新しいスペースが組み込まれ、ファイルをそこに保存できるようになります。

ddを使用して大きなパーティションを小さなパーティションにコピーすることはできません。ただし、countパラメーターを使用して大量のコピーのみを指定する場合を除きます。 ddは、ソースパーティション内のすべてをターゲットパーティションにビットコピーします。この場合、非表示/非表示のすべてのスペースを元のコンテンツとともに小さなパーティションにコピーしようとします。何をコピーしているのかについては何も考えもしませんし、有効なファイルシステムである必要もありません。

4
John S Gruber

実際には、ディスク全体を別のディスクにddしてもかまいません。ただし、パーティションのサイズを変更して、より大きな新しいディスクを満たすようにする必要があります。これを行うには、素晴らしいgpartedディスクパーティション分割ツールを使用できます。彼らも独自のLiveCDを持っています。

4
vadipp

WindowsでParagon Partition Managerを使用してLinux EX2パーティションのサイズを変更すると、この問題が発生しました。幸いなことに、2つのEX2 Linuxパーティションがあり、それぞれにLinuxディストリビューションがありました。サイズ変更されていないLinuxパーティションを起動し、Gpartedを使用して、ファイルシステムに空きスペースを適切に割り当てていないパーティションを再度縮小してから拡張することができました。これは完璧に機能しました!

0
user215334