{{tag>virsh libvirt linux}} # kvm ゲストのメモリ割り当てを変更する 設定を 2箇所変更します。 ## 最大メモリサイズの変更 これは xml の `` に設定される数字です。 ``` virsh # setmaxmem 1GiB --config ``` ## カレントメモリサイズの変更 これは xml の `` に設定される数字です。 ``` virsh # setmem 1GiB --config ``` ## 再起動する 再起動は `# systemctl reboot` や `# reboot` で行う os の再起動ではなく、仮想マシンそのものの再起動が必要です。 ``` # shutdown -h now ``` ……または systemd であれば…… ``` # systemctl poweroff ``` 等で、しっかり仮想マシンを停止してから `virsh start` します。 ## 動的に変更する ……ちなみに、最大メモリとカレントメモリのサイズを別の値にしたとして qemu/kvm でメモリバルーニングなんてできるんでしょうか……やったことないです。意外とあっさりできました。 仮想ゲスト側で現在の割り当てを確認します。 1GiB です。 ``` # free --mebi total used free shared buff/cache available Mem: 997 44 237 0 714 927 Swap: 894 16 878 ``` 仮想ホスト側で `setmem` で割り当てを半分にします。 ``` virsh # setmem 512MiB --live ``` もう1度、仮想ゲスト側で割り当てを確認します。 ``` # free --mebi total used free shared buff/cache available Mem: 485 43 12 0 429 416 Swap: 894 16 878 ``` 最大メモリサイズの変更には仮想マシンの再起動が必要ですが、最大メモリサイズの範囲内であれば、意外と簡単に割り当てメモリサイズを変更できるようです。ですが当然、仮想ゲスト側のカーネルがメモリバルーニングに対応している((Device Drivers -> virtio あたりのパラバーチャライゼーションドライバーかな……?))必要があると思います。なので、例えば windows ゲストでこんなことができるかどうかはわかりません。