私の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
zerofree
そのようなディスクでどのように使用するかの答えは見つかりませんでしたが、うまく機能する代替ソリューションを見つけました。
- ディスクを特定の場所にマウントします(私の場合は3つのディスクを、、、
/srv/node/d1
)/srv/node/d2
。/srv/node/d3
- ディスクインストールディレクトリ(
cd /srv/node/d1
)を入力してください。 - 注文の実行:
dd if=/dev/zero of=zerofillfile bs=1M
- 生成されたファイルの削除:
rm -f zerofillfile
- すべてのディスクに対して上記の操作を実行します。
PSこの質問には関係ありませんが、仮想ボックスディスクを圧縮するには、上記の命令を実行してから命令を使用してください。
VBoxManage modifyhd --compact /path/to/my/disks/disk1.vdi
答え2
Zerofreeを実行する前にファイルシステムを読み取り専用でマウントする必要がある可能性があります。 Zerofreeのマニュアルページでは、これを行う方法について説明します。
zerofreeが機能するには、ファイルシステムをマウント解除するか、読み取り専用でマウントする必要があります。ファイルシステムが書き込み可能にマウントされている場合は、エラーメッセージで終了します。ルートファイルシステムを読み取り専用で再マウントするには、まずシングルユーザー実行レベル(telinit 1)に切り替えてから、mount -o remount、roファイルシステムを使用できます。
答え3
元の問題は、VDI/QCOW2/RAW ファイルにアクセスするようです。ホストがLinuxの場合、「telinit 1」は必要ありません。
これは、RAWファイルにZerofreeプロセスを使用する「最初から」のbashバックアップソリューションの一部です。
スクリプトはLubuntu 22.04 LTSでうまく動作します。私はこの内容を仮想マシンに書きます。 ;)
pathe=/media/sebastian/VM
nname=lubuntu.raw
if [ -f /media/$USER/$hd/$nname ]; then
sudo apt install zerofree
fi
res1=`sudo losetup -fP --show $pathe/$nname`
echo DEBUG: Now RAW file is on $res1 .
losetup -l
ls -l ${res1}*
res2=${res1#/dev/*}
sudo zerofree -v /dev/${res2}
for i in {0..5}
do
sudo zerofree -v /dev/${res2}p${i}
done
答え4
Linuxホスト/ゲストでは、このオープンソースプロジェクトのLive CDを使用してください(このLive CDにはZerofreeユーティリティが組み込まれており、Webサイトの説明書もお読みください)。
https://sourceforge.net/projects/live-cd-with-zerofree-utility/
これは、エクスポートされた仮想マシンデバイス(.ovaファイルなど)のサイズを縮小するのにも役立ちます。
他の人が述べたように、Zerofreeを実行したら、圧縮オプションを使用してvdiファイルのサイズを小さくします。
PSこのLive CDの32ビットバージョン(i686アーキテクチャ)は、以下から入手できます。https://sourceforge.net/projects/live-cd-with-zerofree-32-bit/
非常に古いアーキテクチャの場合は、次のLive CDをお試しください。https://sourceforge.net/projects/live-cd-with-zerofree-x86/