내 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
삭제된 데이터를 0으로 채우는 데 사용하거나 다른 것을 사용해야 합니다.
답변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 유틸리티가 내장되어 있으며 웹 사이트의 지침도 읽어보세요).
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/