Memory hotplug med Qemu / KVM og libvirt.

Hotplugging of Memory stottes siden versjon 2.1 av Qemu og er et alternativ til minneballong. Hvis du fjerner minnet pa nettet, stottes det siden Qemu 2.4 og er dekket i en annen artikkel.

Konfigurasjonsendringer.

For a fortelle libvirt at vi vil ha minneprop, ma det v re et maxMemory-element og en NUMA-nodedeklarasjon. Hvis ikke tilstede, bor folgende linjer legges til:

maxMemory spesifiserer maksimal mengde minne som kan bli plugget inn og oppforer seg pa samme mate som minnetributtet. Den andre begrensningen er mengden moduler som kan kobles til. Jeg holder for oyeblikket til 16 spor fordi det gir flere sma okninger og mindre skritt ved a koble fra hvis det er nodvendig.

libvirt handhever for oyeblikket en spesifisert NUMA-knutepunkt for minneoppkobling. id spesifiserer nodenummeret og cpusene som vcpus tilhorer denne noden. Selv om ikke alle vcpus er aktive, bor maksimal mengde vcpus spesifiseres her. I dette tilfellet har jeg 3 vcpus og libvirt bruker en nullbasert nummerering her. Minne og enhet skal v re som utelatt minneattributt.

Hotplug med virsh.

virsh krever en XML-fil med en minneenhet. For a legge til 128 megabyte, ser filen ut som folgende.

For a legge den til lopende gjest og legge den til konfigureringen, er folgende nodvendig.

Hotplug med python og libvirt API.

For Debian-baserte systemer er python-libvirt eller python3-libvirt nodvendig. Pa openSuse er pakken navngitt libvirt-python. Folgende utdrag vil gjore alt som den forrige virsh-kommandoen gjorde for oss.

Mulige problemer.

Linux krever minneoppkobling i storrelser pa 128Mib eller noen flere av det.

Ingen feil og ingenting skjer.

Det er flere grunner til at ingenting skjer pa gjestesiden.

kjernen er for gammel eller moduler mangler.

For hotplug minst kjerne 3.2 er nodvendig og kjernen 3.9 for a fjerne den pa nettet. Ogsa modulene acpiphp og pci_hotplug er nodvendig. Feil konfigurert kjernen.

Dette kan kontrolleres med a se i config av kjorekjernen med cat / boot / config- / boot / config-`uname -r` | grep CONFIG_MEMORY_HOTPLUG = som skal returnere en y for dette alternativet Minne er fortsatt frakoblet.

Det er to mater a sette det hakkede minnet i en online modus.

Legge til en udev-regel:

SUBSYSTEM == «minne», ACTION == «add», TEST == «state», ATTR == «offline», ATTR = «online»

Bruke et lite skript:

for jeg i `grep -l offline / sys / devices / system / memory / memory * / state`

Ved a klappe mer eller mindre, kan du signalere til oss hvilke historier som virkelig skiller seg ut.