KVM의 Windows 10 스왑 영역(가상 스토리지)에서 호스트 측 Linux의 tmpfs 사용

Windows의 경우 메모리가 부족하면 페이지 파일에 저장된 메모리가 회피되지만 HDD처럼 느린 저장 장치는 읽기와 쓰기가 끝날 때까지 전체적인 처리가 멈추기 때문에 이런 처리가 빈번하게 발생하면 스트레스를 받는다.또한 SSD에서는 귀중한 쓰기 횟수를 낭비할 수 있습니다.
특히 가상 머신에서는 메모리가 제한되는 경우가 많아 스왑 처리가 용이하다.
따라서 Windows 페이지 파일을 호스트의 RAM에 구성하여 실행 속도를 높일 수 있습니다.
차리다
NTFS 파티션을 포맷하려면 ntfs-3g이 필요합니다.
$ sudo dnf install ntfs-3g # Red Hat
$ sudo apt install ntfs-3g # Debian
호스트 설정
이런 시나리오를 준비해.
/usr/local/bin/vmswap-attach
#!/bin/sh

if [ -e /tmp/vmswap ]; then
  exit 1
fi

mkdir /tmp/vmswap
mount -o size=0,noatime -t tmpfs tmpfs /tmp/vmswap
truncate -s 8G /tmp/vmswap/disk.img
loop=$(losetup -b 4096 -Pf --show /tmp/vmswap/disk.img)
parted -s -a optimal ${loop} mklabel gpt mkpart Volume ntfs 0% 100%
mkfs.ntfs -s 4096 -p 256 -H 0 -S 0 -If "${loop}p1"
parted -s ${loop} set 1 msftdata on
losetup -d ${loop}
/usr/local/bin/vmswap-detach
#!/bin/sh

if [ ! -e /tmp/vmswap ]; then
  exit 1
fi

umount /tmp/vmswap
rm -rfv /tmp/vmswap
실행vmswap-attach/tmp/vmswap/disk.img교환 구역이 생성되고 실행vmswap-detach후가 삭제됩니다.
더 자세히 설명하자면 tmpfs에 8GB의 스파 파일을 준비하고 거기서 GPT의 구역을 잘라 NTFS로 포맷한다.
마지막으로set 1 msftdata on Windows를 NTFS로 인식하지 못하는 것이 중요합니다.
시스템에서 자동으로 시작할 수 있도록 단원 파일을 만듭니다.
/etc/systemd/system/vmswap.service
[Unit]
Description=Swap space for Windows on KVM
Before=libvirtd.service

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/local/bin/vmswap-attach
ExecStop=/usr/local/bin/vmswap-detach

[Install]
WantedBy=multi-user.target
$ sudo systemctl enable --now vmswap
게스트 설정
생성된 스왑 영역을 VM 스토리지로 추가합니다.
더 이상 사용하지 않는 영역을 풀려면 Discard mode에서 unmap을 선택합니다.

XML을 편집하고 블록 크기를 4096바이트로 설정한 후 끝냅니다.
(논리적 섹터 크기는 페이지 크기에 따라 4096바이트로 포맷되며 그렇지 않으면 Windows에서 볼 수 없습니다.)
<disk type="file" device="disk">
  <driver name="qemu" type="raw" cache="writethrough" io="io_uring" ioeventfd="on" discard="unmap" iothread="4" detect_zeroes="off" packed="on"/>
  <source file="/tmp/vmswap/disk.img"/>
  <backingStore/>
  <!-- ブロックサイズを4096バイトに設定 -->
  <blockio logical_block_size="4096" physical_block_size="4096"/>
  <target dev="vdb" bus="virtio"/>
  <address type="pci" domain="0x0000" bus="0x08" slot="0x00" function="0x0"/>
</disk>
그런 다음 페이지 파일을 배치할 설정을 지정합니다.
Windows를 시작하면 시작 버튼→시스템→관련 설정의 시스템 세부 설정→고급 설정 탭→성능 설정→고급 설정 탭→가상 스토리지 수정을 마우스 오른쪽 버튼으로 클릭합니다.
가상 메모리 설정 창이 표시됩니다.

설정된 화면은 여기 있습니다.
D 드라이브는 방금 추가된 스토리지입니다.
사용자 정의 치수의 경우 빈 영역에서 5MB의 최대 8124MB를 빼면 더 이상 클 수 없습니다.
여기에는 처음부터 꽉 찬 저장 구역이 설정되어 있지만 통상적으로 시스템 관리 크기는 문제없다.
입력한 후 "설정"단추를 눌러야만 표시할 수 있으니, 누르는 것을 잊지 마십시오.

다시 시작하면 추가된 영역이 가상 메모리로 반영되었는지 확인할 수 있습니다.

좋은 웹페이지 즐겨찾기