ゼロとして未使用のスペースを消去するには? (外部3、外部4)
私はそれ以上を探しています。
cat /dev/zero > /mnt/X/big_zero ; sync; rm /mnt/X/big_zero
良いFSアーカイバー「使用スペース」を探しており、使用されていませんが、反対側のサイトは無視されます。
目的:パーティションイメージを圧縮したいので、未使用スペースをゼロで埋めることをお勧めします。
ところで。 btrfsの場合:ゼロとして未使用のスペースを消去する(btrfs)
答え1
そのようなユーティリティはzerofree
。
説明で判断すると次のようになります。
Zerofree は ext2 または ext3 ファイルシステムから割り当てられず、ゼロ以外のブロックを見つけてゼロで埋めます。これは、ファイルシステムが存在するデバイスがディスクイメージである場合に便利です。この場合、ディスクイメージの種類に応じてZerofreeを実行した後、セカンダリユーティリティを使用してディスクイメージのサイズを小さくできます。 Zerofreeを使用するには、ファイルシステムをマウント解除するか、読み取り専用でマウントする必要があります。
同じ結果(使用しないブロックをゼロにする)を取得する一般的な方法は、「dd」を実行して、ドライブで利用可能なスペース全体を占めるゼロでいっぱいのファイルを作成し、ファイルを削除することです。これにはゼロフリーが軽減するいくつかの欠点があります。
- 遅い
- ディスクイメージを(一時的に)最大に増やします。
- (一時的に)ディスク上の利用可能なすべてのスペースを使用するため、他の同時書き込み操作が失敗する可能性があります。
Zerofreeは、仮想マシン内のゲストオペレーティングシステムとしてインストールされたGNU / Linuxシステムで実行するように書かれています。あなたの場合でない限り、ほとんど確実にこのパッケージは必要ありません。
アップデート#1
.deb パッケージ記述に次の段落が含まれています。これはこれがext4にも当てはまるという意味です。
説明:ext2、ext3、およびext4ファイルシステムのZerofreeブロックZerofreeは、ext2、ext3、またはext4ファイルシステムでゼロ以外のコンテンツを含む未割り当てブロックを検索し、ゼロで埋めます。
その他の用途
このユーティリティの別のアプリケーションは、物理ディスクのバックアップとして機能するディスクイメージを圧縮することです。一般的な例は、BegleBoneまたはRaspberry PiにSDカードをダンプすることです。空き領域が消去されると、バックアップイメージをより効率的に圧縮できます。
答え2
ext2/ext3/ext4で未使用のスペースを消去する方法の概要(この質問と他の場所で説明):
未使用のスペースを消去する
ファイルシステムがマウントされていません。
- ファイルシステムを備えた「ディスク」がシンプロビジョニングされている場合(TRIMをサポートする最新のSSD、スパース性をサポートする形式のVMファイルなど)、カーネルがそれを理解するブロックデバイスを表す場合は破棄を
e2fsck -E discard src_fs
使用できます。未使用スペース(e2fsprogs 1.42.2以降が必要) - 使用自由度ゼロ(例
zerofree src_fs
:)未使用のブロックに明示的にゼロを書き込みます。 - 使用中のブロックのみをコピーするために使用されます
e2image -rap src_fs dest_fs
(新しいファイルシステムはゼロではなく「ディスク」になければならず、e2fsprogs 1.42.9以降が必要です)。
ファイルシステムがマウントされました。
- ファイルシステムのある「ディスク」がシンプロビジョニングされている場合(たとえば、TRIMをサポートする最新のSSD、スパース性をサポートする形式のVMファイルなど)、カーネルはそれを理解するブロックデバイスを表し、最後にextファイルシステムを表します。ドライバのサポート
fstrim /mnt/fs/
未使用領域を削除するようにファイルシステムに要求できます。 cat /dev/zero > /mnt/fs/zeros; sync; rm /mnt/fs/zeros
(sfill
この技術を使用するには、セキュリティの削除から)を使用してください。このアプローチは非効率的で、Ted Ts'o(ext4作成者)が推奨しないため、一部をゼロにすることができず、将来の速度を遅くする可能性がありますfsck
。
ファイルシステムをアンマウントすると、マウントするよりも優れた結果が得られます。以前に使用された多くのスペースを空にする必要がある場合は、廃棄するのが最速の方法であることがよくありますが、廃棄zerofree
プロセスの後に使用すると、時には少し余分なスペースが空になることがあります(「ディスク」で廃棄が実装される方法によって異なります)。 。 。
画像ファイルを減らす
イメージは専用のVMフォーマットです。
qemu-img convert src_image dst_image
空のスペースを取り戻して画像を表すファイルを小さくするには、適切なディスクイメージングツール(たとえば)を使用する必要があります。
画像はオリジナルファイルです
次のいずれかの方法を使用してファイルを希薄にすることができます(したがって、ゼロを実行するとスペースを占有しなくなります)。
cp --sparse=always src_image dst_image
。fallocate -d src_image
(util-linux v2.25以降が必要です)。
最近では、これらのツールを使用する方が簡単かもしれません。仮想疎化この手順と他のいくつかの手順を一度に完了してください。
源泉
- ゼロとして未使用のスペースを消去する(ext3、ext4)(これはUnixとLinuxの質問です!)
- https://ext4.wiki.kernel.org/index.php/Ext4_VM_Images
- 画像縮小技術を議論するTed Ts'oの投稿"fs/ext4/resize.c:409のカーネルエラー" linux-ext4スレッドにあります。
- ファイルシステムイメージを稀に保つ作家:
zerofree
- kvm/qemu の qcow2-image-file で未使用領域を確保応答サーバーエラー
- http://libguestfs.org/virt-sparsify.1.html
答え3
sfill
~から安全削除これと他の多くの関連タスクを実行できます。
例えば
sfill -l -l -z /mnt/X
アップデート#1
githubのArchLinuxプロジェクトは、sfill
Secure-Deleteパッケージに含まれているツールのソースコードを含むソースツリーを使用しているようです。
sfill
マニュアルページのコピーもここにあります:
答え4
他のツールを使用したくない場合は、この方法が次のものより高速ですcat /dev/zero > /mnt/fs/zeros
。
dd if=/dev/zero of="/mnt/fs/filler" bs=1048576
dd if=/dev/zero of="/mnt/fs/filler1" bs=1
sync
rm /mnt/fs/filler
rm /mnt/fs/filler1