전체 디스크에서 zerofree를 사용하는 방법은 무엇입니까?

전체 디스크에서 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/sddVDI 데이터 디스크입니다. 일부 데이터(전부는 아님)를 제거하고 zerofree나중에 압축하는 데 사용하고 싶습니다. zerofree이 디스크에서는 사용할 수 없는 것 같습니다 . 다음은 실행입니다.

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

그러한 디스크에서 Zerofree를 사용할 수 있습니까? 그렇지 않다면 다른 해결책이 있습니까? 이 디스크에 기존 데이터를 유지해야 하지만 zerofree삭제된 데이터를 0으로 채우는 데 사용하거나 다른 것을 사용해야 합니다.

답변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 유틸리티가 내장되어 있으며 웹 사이트의 지침도 읽어보세요).

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/

관련 정보