it-swarm-ja.com

ディスク全体でzerofreeを使用するにはどうすればよいですか?

私のVirtualBoxファイルシステムは次のようになります。

# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda2       29799396 5467616  22795012  20% /
devtmpfs         1929980       0   1929980   0% /dev
tmpfs            1940308      12   1940296   1% /dev/shm
tmpfs            1940308    8712   1931596   1% /run
tmpfs            1940308       0   1940308   0% /sys/fs/cgroup
/dev/sdb        31441920 1124928  30316992   4% /srv/node/d1
/dev/sdc        31441920   49612  31392308   1% /srv/node/d2
/dev/sdd        31441920   34252  31407668   1% /srv/node/d3
/dev/sda1         999320  253564    676944  28% /boot
tmpfs             388064       0    388064   0% /run/user/0

ディスク/dev/sdb/dev/sdc/dev/sddはVDIデータディスクです。それらからいくつかのデータ(すべてではない)を削除し、zerofreeを使用してそれらを後で圧縮したいと考えています。これらのディスクではzerofreeを使用できないようです。これが実行です:

# zerofree -v /dev/sdb
zerofree: failed to open filesystem /dev/sdb

そのようなディスクでzerofreeを使用することは可能ですか?そうでない場合、代替の解決策はありますか?既存のデータをこれらのディスクに保持する必要がありますが、zerofree(またはその他)を使用して、削除されたデータをゼロで埋めます。

1
Oleksandr

そのようなディスクでzerofreeを使用する方法についての答えは見つかりませんでしたが、うまく機能する代替ソリューションを見つけました。

  1. ディスクをどこかにマウントします(私の場合、3つのディスクが次の場所にマウントされます:/srv/node/d1/srv/node/d2/srv/node/d3)。
  2. ディスクがマウントされているディレクトリを入力します(cd /srv/node/d1)。
  3. 次のコマンドを実行します:dd if=/dev/zero of=zerofillfile bs=1M
  4. 作成したファイルを削除します:rm -f zerofillfile
  5. 上記の操作をすべてのディスクに対して実行します。

P.S.この質問とは関係ありませんが、仮想ボックスディスクの圧縮には、上記のコマンドを実行した後にコマンドを使用します。

VBoxManage modifyhd --compact /path/to/my/disks/disk1.vdi
3
Oleksandr