domU 설치 이미지에서 데이터를 제거해도 이미지 크기는 줄어들지 않습니다.

domU 설치 이미지에서 데이터를 제거해도 이미지 크기는 줄어들지 않습니다.

다음 상황을 이해하는 데 어려움을 겪고 있습니다.

Dom0 이미지:

[root@Dom0]# du -h 19.12.0.0_dbhome_1.img
980M    19.12.0.0_dbhome_1.img

DomU에 설치됨:

[root@DomU]# df -h /u01/app/oracle/product/19.12.0.0/dbhome_1
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvde        50G   62M   47G   1% /u01/app/oracle/product/19.12.0.0/dbhome_1

DomU 및 Dom0에 데이터를 쓰면 /u01/app/oracle/product/19.12.0.0/dbhome_1디스크 사용량이 그에 따라 증가합니다.

[root@DomU dbhome_1]# dd if=/dev/zero of=./test.img bs=4k iflag=fullblock,count_bytes > /dev/null
[root@DomU dbhome_1]# df -h /u01/app/oracle/product/19.12.0.0/dbhome_1
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvde        50G   21G   27G  44% /u01/app/oracle/product/19.12.0.0/dbhome_1
[root@Dom0]# du -h 19.12.0.0_dbhome_1.img
21G     19.12.0.0_dbhome_1.img

데이터를 삭제하면 DomU의 디스크 사용량은 감소하지만 Dom0은 동일하게 유지됩니다.

[root@DomU dbhome_1]# rm test.img
[root@DomU dbhome_1]# df -h /u01/app/oracle/product/19.12.0.0/dbhome_1
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvde        50G   62M   47G   1% /u01/app/oracle/product/19.12.0.0/dbhome_1
[root@Dom0]# du -h 19.12.0.0_dbhome_1.img
21G     19.12.0.0_dbhome_1.img

그 차이는 어떻게 발생했나요?

이미지를 생성하고 설치하기 위해 다음 프로세스를 수행했습니다.
[root@Dom0]# qemu-img create 19.12.0.0_dbhome_1.img.img 50G &>/dev/null
[root@Dom0]# xm block-attach domU file:19.12.0.0_dbhome_1.img /dev/xvde w >/dev/null 2>&1
[root@Dom0]# ln -s 19.12.0.0_dbhome_1.img.img /path/to/link/19.12.0.0_dbhome_1.img
[root@Dom0]# vi vm.cfg (added link to disks[] parameter)
[root@DomU]# parted /dev/xvde mklabel gpt &>/dev/null
[root@DomU]# parted -s /dev/xvde mkpart primary 0 100% &>/dev/null
[root@DomU]# parted -s /dev/xvde set 1 lvm on &>/dev/null
[root@DomU]# echo "/dev/xvde /u01/app/oracle/product/19.12.0.0/dbhome_1 ext4 defaults 1 1\" >> /etc/fstab
[root@DomU]# mkfs.ext4 /dev/xvde &>/dev/null
[root@DomU]# mount -a &>/dev/null

답변1

XEN 전문가는 아니지만:

xm block-attachdomU에 discard그 안의 s가 파일 시스템 계층으로 전달될 수 있다고 알려줄 필요가 없나요 ? 그렇지 않으면 domU의 "파일 삭제"는 이미지 파일이 "이해하는" 작업이 아닙니다. domU에서 보는 것은 몇 가지 위치, 즉 변경된 디렉터리 및 확장 테이블 항목의 일부 변경 사항뿐입니다. "파일 삭제"는 블록 장치 개념이 아닙니다!

그러나 SSD의 출현으로 discard파일 시스템(이 경우 domU의 파일 시스템 드라이버)은 데이터 블록이 더 이상 필요하지 않음을 기본 저장 장치에 알릴 수 있습니다. 이 경우 SSD(또는 여기서는 하이퍼바이저)는 해당 정보를 사용하여 실제로 파일에서 해당 데이터를 제거하고 다시 희박하게 만들 수 있습니다. 따라서 다음에 대한 지원이 필요합니다.

  1. dom0의 이미지 파일 형식 및 이미지 블록 장치 드라이버
  2. 하이퍼바이저(폐기 정보를 이미지 드라이버에 전달할 수 있음)
  3. domU 파일 시스템 및 해당 마운트 옵션(데이터가 삭제되면 실제로 폐기를 내보냄)

특히 3. 일반적으로 기본적으로 활성화되지 않습니다. 삭제 작업이 번들로 묶이거나 지연되는 경우가 많습니다. fstrimdomU 파일 시스템에서 실행 해 보세요 !

그러나 성능상의 이유로 이미지 드라이버를 즉시 "얇게 만드는" 것은 현명한 방법이 아니므로 지연/수동 정리가 필요할 수도 있습니다.

관련 정보