{{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 ゲストでこんなことができるかどうかはわかりません。