ディスク全体でゼロフリーを使用するには?

ディスク全体でゼロフリーを使用するには?

私の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/sddVDIデータディスクです。一部のデータ(すべてではない)を削除してzerofree後で圧縮するために使用したいと思います。zerofreeこのディスクでは使用できないようです。以下は実行です。

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

そのようなディスクでZerofreeを使用できますか?そうでなければ、他の解決策はありますか?このディスクには既存のデータを保持する必要がありますが、zerofree削除されたデータをゼロで埋めるために使用するか、他のものを使用する必要があります。

答え1

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. すべてのディスクに対して上記の操作を実行します。

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/

関連情報