KVM 게스트에서 fstrim
아래의 기사 등을 참고로 해 보았습니다.
게스트 설정 편집을 시작합니다.
virsh edit GUEST
scsi controller를 추가합니다 (이미 있다면 필요 없음).
<controller type='scsi' model='virtio-scsi' index='0'/>
디스크 설정을 변경합니다.
<disk type='block' device='disk'>
<driver name='qemu' type='raw' discard='unmap'/>
<source dev='/dev/vg1/guest.img'/>
<target dev='sda' bus='scsi'/>
</disk>
<target/>
를 dev='sda' bus='scsi'
로 변경 <driver/>
에 discard='unmap'
추가 <address/>
삭제 변경사항을 저장하고 게스트를 시작합니다.
virsh start GUEST
virsh console GUEST
fstrim 해 보겠습니다.
fstrim -a -v
TRIM되었습니다.
/: 3.2 GiB (3422597120 bytes) trimmed
또한 원래 게스트 디스크가 virtio로 연결되어 있으면 디스크 장치의 이름이
/dev/vda
에서 /dev/sda
로 바뀝니다.호스트에서 SystemTap에서 TRIM 확인
아래의 기사와 같은 방법으로, 호스트측에서 SystemTap 를 사용해, 게스트로 fstrim 했을 때에 실제로 TRIM 되고 있는 것을 확인해 보았습니다.
호스트 측에서 다음과 같이 준비합니다.
yum install systemtap \
kernel-devel-$(uname -r) \
kernel-headers-$(uname -r)
debuginfo-install kernel-$(uname -r)
cat <<'EOS'> /tmp/discard.stp
probe kernel.function("blkdev_issue_discard").return {
printf("%s, sector=%d, nr_sects=%d, return=%d (%d - %d KiB)\n",
execname(), $sector, $nr_sects, $return,
$sector / 2, ($sector + $nr_sects) / 2 - 1);
}
EOS
stap -v /tmp/discard.stp
위가 게스트이고 아래가 호스트입니다.
Reference
이 문제에 관하여(KVM 게스트에서 fstrim), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ngyuki/items/9a7373da17e8d8733ad7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)