다음 상황을 이해하는 데 어려움을 겪고 있습니다.
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-attach
domU에 discard
그 안의 s가 파일 시스템 계층으로 전달될 수 있다고 알려줄 필요가 없나요 ? 그렇지 않으면 domU의 "파일 삭제"는 이미지 파일이 "이해하는" 작업이 아닙니다. domU에서 보는 것은 몇 가지 위치, 즉 변경된 디렉터리 및 확장 테이블 항목의 일부 변경 사항뿐입니다. "파일 삭제"는 블록 장치 개념이 아닙니다!
그러나 SSD의 출현으로 discard
파일 시스템(이 경우 domU의 파일 시스템 드라이버)은 데이터 블록이 더 이상 필요하지 않음을 기본 저장 장치에 알릴 수 있습니다. 이 경우 SSD(또는 여기서는 하이퍼바이저)는 해당 정보를 사용하여 실제로 파일에서 해당 데이터를 제거하고 다시 희박하게 만들 수 있습니다. 따라서 다음에 대한 지원이 필요합니다.
- dom0의 이미지 파일 형식 및 이미지 블록 장치 드라이버
- 하이퍼바이저(폐기 정보를 이미지 드라이버에 전달할 수 있음)
- domU 파일 시스템 및 해당 마운트 옵션(데이터가 삭제되면 실제로 폐기를 내보냄)
특히 3. 일반적으로 기본적으로 활성화되지 않습니다. 삭제 작업이 번들로 묶이거나 지연되는 경우가 많습니다. fstrim
domU 파일 시스템에서 실행 해 보세요 !
그러나 성능상의 이유로 이미지 드라이버를 즉시 "얇게 만드는" 것은 현명한 방법이 아니므로 지연/수동 정리가 필요할 수도 있습니다.