SSD Nodes Learn
మార్గదర్శకాలు Matt Connorద్వారా Matt Connor · అప్‌డేట్ చేయబడింది 2026-07-25

VPS లో Proxmox నడుపొలకా? nested virtualization సాధ్యమేనా?

చాలా VPS ప్రొవైడర్లు vmx ఫ్లాగ్ దాచుతారు. kvm-ok తో ఒక నిమిషంలో తనిఖీ చేయండి. తర్వాత KVM లేదా Proxmox గెస్ట్‌లను నడపండి. మీరు చూసే సరైన error strings ఇక్కడ ఉన్నాయి.

సంక్షిప్త సమాధానం

నెస్టెడ్ వర్చువలైజేషన్ అంటే ఒక వర్చువల్ మెషీన్ లోపల హైపర్‌వైజర్ నడవడం. మీ VPS ఇప్పటికే ఒక గెస్ట్. దానికి మరికొన్ని గెస్ట్‌లను హోస్ట్ చేయాలని మీరు కోరుకుంటున్నారు. మీ ప్రొవైడర్ హైపర్‌వైజర్ మీ ఇన్‌స్టెన్స్‌కు CPU వర్చువలైజేషన్ ఎక్స్‌టెన్షన్‌లను ఉద్దేశపూర్వకంగా బహిర్గతం చేసినప్పుడే ఇది పనిచేస్తుంది. Intel కోసం vmx ఫ్లాగ్ కోసం లేదా AMD కోసం svm కోసం /proc/cpuinfo తనిఖీ చేయండి. వీటిలో ఏదీ కనిపించకపోతే, VPS లోపల మీరు ఏది కాన్ఫిగర్ చేసినా సమస్య పరిష్కారం కాదు.

ముందుగా ఒక నిజాన్ని స్పష్టం చేద్దాం: Docker కు ఇందులో ఏమీ అవసరం లేదు. కంటైనర్‌లు మీ VPS కర్నల్‌ను పంచుకుంటాయి. అవి /dev/kvm ను ఎప్పుడూ ఉపయోగించవు. మీ అసలు లక్ష్యం "నా సర్వర్‌లో కంటైనర్‌లలో అనేక సర్వీసులను నడపడం" అయితే, మీకు కావలసింది ఇప్పటికే ఉంది. మీకు రెండవ కర్నల్ కావాలని ఉన్నప్పుడు నెస్టింగ్ అవసరం — Proxmox ల్యాబ్, Windows గెస్ట్, Firecracker microVMలు, Android ఎమ్యులేటర్, నిజమైన VMలతో కూడిన Kubernetes టెస్ట్‌బెడ్, లేదా VM ఇమేజ్‌లను బూట్ చేసే CI రన్నర్‌లు.

వాస్తవానికి ఏమి నెస్ట్ అవుతోంది

మూడు పొరలు:

  • L0 — ప్రొవైడర్ యొక్క హైపర్‌వైజర్, హార్డ్‌వేర్‌పై ఉంది. దీనికి మీకు ప్రాప్తి లేదు.
  • L1 — మీ VPS. L0 దృష్టికోణంలో ఇది కేవలం ఒక గెస్ట్.
  • L2 — మీ VPS లోపల మీరు నడపాలనుకుంటున్న VM.

హార్డ్‌వేర్ వర్చువలైజేషన్ అనేది Intelలో VT-x (vmx ఫ్లాగ్) తో పాటు EPT, AMDలో AMD-V / SVM (svm) తో పాటు RVI/NPT. ఒక హైపర్‌వైజర్ ఆ ఇన్‌స్ట్రక్షన్‌లను గెస్ట్ మోడ్‌లోకి ప్రవేశించడానికి, CPU ఒకేసారి రెండు పేజ్ టేబుల్‌లను చదవడానికి ఉపయోగిస్తుంది.

రెండూ కూడా రీ-ఎంట్రెంట్‌గా ఉండటానికి రూపొందించబడలేదు, కాబట్టి నెస్టింగ్ ఎమ్యులేట్ చేయబడుతుంది: L1 ఒక VMX ఇన్‌స్ట్రక్షన్‌ను అమలు చేసినప్పుడు అది L0కి ట్రాప్ అవుతుంది, అది L1 తరపున L2 కోసం షాడో స్ట్రక్చర్‌లను నిర్వహిస్తుంది. KVM దీన్ని బాగా చేస్తుంది, కానీ ప్రతి ఎగ్జిట్‌పై అదనపు పనిని L0 చేస్తూనే ఉంటుంది — అందుకే ప్రొవైడర్ దీన్ని ఎంచుకునేలా ఉండాలి.

వేగవంతమైన L2 కోసం ఈ రెండు షరతులు రెండూ కలిసి ఉండాలి:

  1. L0 యొక్క KVM మాడ్యూల్ nested=1 తో లోడ్ చేయబడి ఉంది.
  2. L0 మీ VPSకి ఆ ఫ్లాగ్ కలిగి ఉన్న CPU మోడల్‌ను ఇస్తుంది — libvirtలో <cpu mode='host-passthrough'/>, Proxmoxలో cpu: host, raw QEMUలో -cpu host. ఒక సాధారణ ఎమ్యులేటెడ్ మోడల్ (qemu64, kvm64) నెస్టింగ్ గ్లోబల్‌గా ఆన్‌లో ఉన్నప్పటికీ vmx ను దాచుతుంది.

ఒక నిమిషంలో మీ VPS ని తనిఖీ చేయండి

# 1. Are you in a VM, and under what?
systemd-detect-virt          # kvm, vmware, xen, microsoft, or "none" on metal

# 2. Does the CPU expose the extensions to you?
grep -o -E 'vmx|svm' /proc/cpuinfo | sort -u
lscpu | grep -i -E 'virtual|hypervisor'

# 3. The definitive check
sudo apt update && sudo apt install -y cpu-checker
kvm-ok

# 4. The device node the whole stack depends on
ls -l /dev/kvm

ఉపయోగించదగిన ఇన్‌స్టెన్స్ vmx లేదా svm ప్రింట్ చేస్తుంది, kvm-ok అని KVM acceleration can be used చెబుతుంది, మరియు /dev/kvm అనేది root:kvm మోడ్ 660 గా ఉంటుంది. ఫ్లాగ్ ఉంది కానీ డివైస్ నోడ్ లేకపోతే, మాన్యువల్‌గా మాడ్యూల్ లోడ్ చేసి కర్నల్ లాగ్ చదవండి:

sudo modprobe kvm_intel     # or kvm_amd
sudo dmesg | tail -n 20

ఒక ఫైల్ నిరంతరం ఉదహరించబడుతుంది మరియు విస్తృతంగా తప్పుగా అర్థం చేసుకోబడుతుంది:

cat /sys/module/kvm_intel/parameters/nested   # Y or N

మీ VPS లో అది మీ KVM మాడ్యూల్ యొక్క సెట్టింగ్, మరియు L2 గెస్ట్ మూడవ స్థాయిని నెస్ట్ చేయగలదా అనేదాన్ని అది నియంత్రిస్తుంది. L0 మీ కోసం నెస్టింగ్‌ను ప్రారంభించిందా లేదా అనే దాని గురించి అది ఏమీ చెప్పదు — దానికి /proc/cpuinfo మరియు kvm-ok సమాధానమిస్తాయి. nested పారామీటర్ అనేది మీరు పూర్తిగా సొంతం చేసుకున్న మెషీన్‌లో సెట్ చేసే కంట్రోల్:

echo 'options kvm_intel nested=1' | sudo tee /etc/modprobe.d/kvm-nested.conf
sudo modprobe -r kvm_intel && sudo modprobe kvm_intel

VM నడుస్తున్నప్పుడు మాడ్యూల్ రిమూవల్ తిరస్కరించబడుతుంది, కాబట్టి ముందుగా గెస్ట్‌లను మూసివేయండి.

చాలా VPS హోస్ట్‌లు దీన్ని ఆఫ్ చేసి ఉంచడానికి కారణాలు

  • లైవ్ మైగ్రేషన్. మీకు vmx అందించడం అంటే ఆ ఫ్లాగ్‌తో కూడిన CPU మోడల్‌ను బహిర్గతం చేయడమే. ఆ CPU ఫీచర్‌లపై ఆధారపడిన అతిథి వర్చువల్ మెషీన్‌ను, ఆ ఫీచర్‌ు లేని CPU ఉన్న మెషీన్‌కు సురక్షితంగా మైగ్రేట్ చేయలేరు. కస్టమర్‌లను మైగ్రేట్ చేయడం ద్వారా నోడ్‌లను ఖాళీ చేసే హోస్ట్, నెస్టింగ్‌ను ప్రారంభించగానే దాన్ని వదులుకుంటుంది.
  • దాడి ఉపరితలం. నెస్టెడ్ VMX/SVM పాత్‌లు కర్నల్ వర్చువలైజేషన్ పొరలోని అత్యంత క్లిష్టమైన కోడ్‌లో ఉన్నాయి. దీనికి అనుగుణంగా CVE చరిత్ర కూడా ఉంది.
  • L0 అనేది KVM కాకపోవచ్చు. systemd-detect-virt అనేది vmware, xen లేదా microsoft ప్రింట్ చేస్తే, నెస్టింగ్ నియమాలు ఆ స్టాక్‌కు చెందినవే తప్ప KVM నియమాలు కావు.

మీ ఇన్‌స్టెన్స్‌లో ఫ్లాగ్ లేదా? సపోర్ట్‌ను అడగండి (కొన్ని దాన్ని VM కి ప్రత్యేకంగా ప్రారంభిస్తాయి), నెస్టింగ్‌ను డాక్యుమెంట్ చేసే ప్లాన్‌ను ఎంచుకోండి, లేదా ప్రత్యేక సర్వర్‌కు మారండి. మిగిలిన విషయాలు, ఫ్లాగ్‌ను చూపించే మెషీన్‌లో మీకు root యాక్సెస్ ఉందని భావిస్తాయి.

libvirtతో ఒక L2 గెస్ట్‌ను నడపడం

sudo apt install -y qemu-system-x86 libvirt-daemon-system virtinst ovmf
sudo systemctl enable --now libvirtd
sudo usermod -aG libvirt,kvm "$USER"   # log out and back in

virt-install \
  --name guest1 \
  --memory 2048 \
  --vcpus 2 \
  --cpu host-passthrough \
  --disk path=/var/lib/libvirt/images/guest1.qcow2,size=20,format=qcow2,bus=virtio \
  --network network=default,model=virtio \
  --os-variant debian13 \
  --location https://deb.debian.org/debian/dists/trixie/main/installer-amd64/ \
  --graphics none \
  --console pty,target_type=serial \
  --extra-args 'console=ttyS0,115200n8'

గ్రాఫికల్ సెషన్ అవసరం లేదు. సీరియల్ ఇన్‌స్టాలేషన్ కొంతసేపు నడుస్తుంది, కాబట్టి దాన్ని ఒక పర్సిస్టెంట్ షెల్ లోపల ప్రారంభించండి: VPSలో క్లాడ్ కోడ్ సెషన్‌లను సజీవంగా ఉంచే అదే tmux వర్క్‌ఫ్లో, డ్రాప్ అయిన SSH కనెక్షన్ మధ్య ఒక virt-install కన్సోల్‌ను అటాచ్ చేసి ఉంచుతుంది. --os-variant debian13 తిరస్కరించబడితే, మీ osinfo-db ఆ విడుదలకు ముందుదే — osinfo-query os నడపండి మరియు ఉనికిలో ఉన్న ఒక పేరును ఎంచుకోండి. --cpu host-passthrough అనేది vmx ను L2 లోపలికి ఫార్వర్డ్ చేస్తుంది, ఇది L2 తిరిగి వర్చువలైజ్ చేయాల్సి వస్తే మాత్రమే అవసరం. virsh autostart guest1 తో గెస్ట్‌ను బూట్-సేఫ్ గా చేయండి.

డిస్క్ మరియు NIC పై ఉన్న virtio బస్ అలంకారం కాదు: ఎమ్యులేటెడ్ IDE మరియు e1000 పరికరాలు virtio క్యూల కంటే చాలా ఎక్కువసార్లు హైపర్‌వైజర్ లోకి ట్రాప్ అవుతాయి, మరియు నెస్టింగ్ కింద ప్రతి ట్రాప్ రెట్టింపు ధర చెల్లిస్తుంది.

నెట్‌వర్కింగ్: ట్యుటోరియల్స్ వదిలివేసే భాగం

మీ VPSలో ఒక పబ్లిక్ IP ఉంది. ఇది తెలియని MAC చిరునామాలను ఫిల్టర్ చేసే ఫ్యాబ్రిక్ వెనుక ఉంది. దీని వల్ల రెండు పర్యవసనలు వస్తాయి.

L2 అతిథులను పబ్లిక్ నెట్‌వర్క్‌పై బ్రిడ్జింగ్ చేయడం సాధారణంగా పని చేయదు. పబ్లిక్ NICపై br0 ఉంచండి. అతిథికి దాని స్వంత MAC ఇవ్వండి. ARP బయటకు వెళ్తుంది, కానీ దేనికీ స్పందన ఉండదు — ప్రొవైడర్ స్విచ్, మీకు లీజు ఇవ్వని MAC నుండి వచ్చే ఫ్రేమ్‌లను డ్రాప్ చేస్తుంది. ఇదే మీ లక్షణం అయితే, బ్రిడ్జ్‌ను డీబగ్ చేయడం ఆపండి; ఇది అసలు యంత్రాంగం.

దానికి బదులుగా NAT నెట్‌వర్క్‌ను ఉపయోగించండి. libvirt లో default అందిస్తుంది: virbr0, 192.168.122.0/24, dnsmasq లీజులు, అవుట్‌బౌండ్ వెంటనే పనిచేస్తుంది. ఇన్‌బౌండ్ కోసం, L1పై TLS టెర్మినేట్ చేసి లోపలకు ప్రాక్సీ చేయండి — దిగువ సర్టిఫికేట్ పాత్‌లు Nginxపై Certbotతో ఒక Let's Encrypt సర్టిఫికేట్‌ను జారీ చేయడం నుండి వస్తాయి:

server {
    listen 443 ssl;
    server_name lab.example.com;

    ssl_certificate     /etc/letsencrypt/live/lab.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/lab.example.com/privkey.pem;

    location / {
        proxy_pass http://192.168.122.50:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

అతిథికి ముందుగా స్టాటిక్ లీజు ఇవ్వండి (virsh net-edit default). దాని వలన ఆ proxy_pass‌లోని చిరునామా స్థిరంగా ఉంటుంది.

మేనేజ్‌మెంట్ ఇంటర్‌ఫేస్‌లు ఇంటర్నెట్‌కు దూరంగా ఉంచండి: 5900పై VNC మరియు 8006పై Proxmox వెబ్ UI లూప్‌బ్యాక్‌పై ఉండాలి. వాటిని SSH టన్నెల్ (ssh -N -L 8006:127.0.0.1:8006 you@your-vps) ద్వారా లేదా VPSలోకి ఒక స్వయం-హోస్ట్ చేసిన WireGuard VPN ద్వారా చేరుకోండి. ఇది మొత్తం 192.168.122.0/24 అతిథి పరిధిని ఒక ప్రైవేట్ హాప్ దూరంలో ఉంచుతుంది. ఫైర్‌వాల్‌ను ఇరుకుగా ఉంచండి — sudo ufw allow 22,80,443/tcp, మరేమీ కాదు. ufw ఎనేబుల్ చేసిన వెంటనే అతిథులు అవుట్‌బౌండ్ కనెక్టివిటీని కోల్పోతే, సాధారణ కారణం /etc/default/ufw‌లో DEFAULT_FORWARD_POLICY="DROP" — దాన్ని ACCEPT‌కు సెట్ చేసి ufw రీలోడ్ చేయండి.

VPSలో Proxmox

Proxmox VE 9 అంతర్గతంగా Debian 13, కాబట్టి pve-no-subscription రిపోజిటరీ మరియు proxmox-ve ప్యాకేజీని జోడించడం ద్వారా అది Debian VPSపై ఇన్‌స్టాల్ అవుతుంది. రిపోజిటరీ మరియు కీరింగ్ లైన్‌లను Proxmox యొక్క ప్రస్తుత అధికారిక డాక్యుమెంటేషన్ నుండి తీసుకోండి. పాత బ్లాగ్ పోస్ట్ నుండి కాపీ చేసిన URL ఇన్‌స్టాలేషన్‌ను విఫలం చేస్తుంది.

ప్యాకేజీలు కష్టమైన భాగం కాదు. Proxmox ఆశిస్తుంది పైన పేర్కొన్న MAC-ఫిల్టరింగ్ అవరోధంలోకి నేరుగా వెళ్ళే విధంగా vmbr0 ఒక భౌతిక NICకి బ్రిడ్జ్ చేయబడాలి. VPSలో పనిచేసే నిర్మాణం ఏమిటంటే, ఎలాంటి భౌతిక పోర్ట్ అనుసంధానం లేని NAT చేయబడిన లేదా రూట్ చేయబడిన vmbr0, ప్రైవేట్ పరిధిలో గెస్ట్‌లు, మరియు పబ్లిక్ యాక్సెస్ కోసం హోస్ట్‌పై DNAT నియమాలు లేదా రివర్స్ ప్రాక్సీ. పబ్లిక్-ఫేసింగ్ సర్వీసులు VMల కంటే కంటైనర్లు అయినచో, ఒకే Docker Compose ఫైల్ నుండి బహుళ యాప్‌లను ముందుంచే Traefik స్వయంచాలక సర్టిఫికేట్‌లతో అదే రూటింగ్ పనిని పొందుపరుస్తుంది. ముందుగా /etc/network/interfaces స్నాప్‌షాట్ తీసుకోండి: సరికాని బ్రిడ్జ్ నిర్వచనం మిమ్మల్ని మెషీన్ నుండి లాక్ అవుట్ చేస్తుంది, దానికి మీకు కన్సోల్ అందుబాటులో లేకపోవచ్చు.

పనితీరు, నిజాయితీగా చెప్పినట్లు

నెస్టెడ్ వర్చువలైజేషన్ సింగిల్-లెవల్ కంటే నెమ్మది. ఖర్చు అన్ని చోట్లా కాకుండా ఒక నిర్దిష్ట మెకానిజం వద్దే పడుతుంది: మెమరీ యాక్సెస్ వద్ద కాదు, ఎగ్జిట్ల వద్ద ఖర్చు పడుతుంది. EPT/NPT ఉన్నప్పుడు, L0 అనేది L2 కోసం షాడో పేజ్ టేబుల్‌లను నిర్వహిస్తుంది. సాధారణ మెమరీ రీడ్‌లు హార్డ్‌వేర్ వేగంతోనే నడుస్తాయి. ఖర్చు పెట్టడం అనేది గెస్ట్ మోడ్‌ను విడిచిపెట్టే ప్రతి ఆపరేషన్‌కు జరుగుతుంది — I/O, టైమర్ ఇంటరప్ట్‌లు, MMIO, ఇంటర్-ప్రాసెసర్ ఇంటరప్ట్‌లు — ఎందుకంటే L2 ఎగ్జిట్‌ను L0 నిర్వహిస్తుంది. అది L1 ద్వారా తిరిగి ప్రతిబింబించబడవచ్చు. ఇప్పటికే RAMలో ఉన్న డేటాపై CPU-ఆధారిత పని దాదాపు స్థానికంగా కనిపిస్తుంది. సిస్‌కాల్‌లు, ప్యాకెట్‌లు, డిస్క్ I/O ఆధిపత్యం చెలాయించే పని అన్ని పొరలను అనుభవిస్తుంది.

కాబట్టి: అన్ని చోట్లా virtio పరికరాలను ఉపయోగించండి. మరియు మీ qcow2 ఫైల్ అనేది ప్రొవైడర్ ఇప్పటికే వర్చువలైజ్ చేసిన డిస్క్‌పై ఉంటుంది — రెండు థిన్-ప్రొవిజనింగ్ పొరలు పేర్చబడతాయి. అక్కడ cache=none అనేది గెస్ట్ డిస్క్‌పై ఒకే బ్లాక్‌లు ఒకేసారి రెండు పేజ్ క్యాచ్‌లలో ఉండకుండా నిరోధిస్తుంది. ఇక్కడ ఎలాంటి బెంచ్‌మార్క్ సంఖ్యలు లేవు: మీ స్వంత ఇన్‌స్టెన్స్‌పై మీ స్వంత వర్క్‌లోడ్‌ను కొలవండి.

వైఫల్య రకాలు, మరియు మీరు చూసే స్ట్రింగ్‌లు

INFO: /dev/kvm does not exist / KVM acceleration can NOT be used kvm-ok నుండి. మాడ్యూల్ లోడ్ కాలేదు, లేదా ఫ్లాగ్ బహిర్గతం కాలేదు. ముందుగా /proc/cpuinfo తనిఖీ చేయండి.

kvm: disabled by bios dmesg లో. బేర్ మెటల్‌పై, ఫర్మ్‌వేర్‌లో VT-x/SVM టోగుల్‌ను మార్చండి. VPS లోపల దీనర్థం L0 మీకు ఎక్స్‌టెన్షన్‌లను అందించడం లేదు, మరియు గెస్ట్‌లో మీరు టైప్ చేసేది దాన్ని మార్చదు.

modprobe: ERROR: could not insert 'kvm_intel': Operation not supported. మీ కెర్నల్ చూసే CPU లో vmx లేదు — మళ్లీ, అది L0 నిర్ణయం.

Could not access KVM kernel module: Permission denied. అనుమతుల సమస్య, హార్డ్‌వేర్ కాదు. ls -l /dev/kvm లో గ్రూప్ kvm, మోడ్ 660 కనిపించాలి; ఆ గ్రూప్‌కు మిమ్మల్ని జోడించుకోండి మరియు కొత్త లాగిన్ షెల్‌ను ప్రారంభించండి, ఎందుకంటే ఇప్పటికే నడుస్తున్న సెషన్‌కు గ్రూప్ సభ్యత్వం వర్తించదు.

kvm: Device or resource busy QEMU ప్రారంభించినప్పుడు. మరొక హైపర్‌వైజర్ మాడ్యూల్ CPU ను పట్టుకుని ఉంది: lsmod నడపండి, kvm_intel పక్కన vboxdrv లేదా VMware మాడ్యూల్‌ల కోసం చూడండి, మరియు మీకు అక్కర్లేని దాన్ని అన్‌లోడ్ చేయండి.

/var/run/libvirt/libvirt-sock: No such file or directory virsh నుండి. డెమోన్ డౌన్‌లో ఉంది: sudo systemctl enable --now libvirtd.

Proxmox: KVM virtualisation configured, but not available. అందించలేని హోస్ట్‌పై ఒక గెస్ట్ KVM యాక్సిలరేషన్‌ను టిక్ చేసి ఉంది. నెస్టింగ్‌ను పరిష్కరించండి, లేదా దాన్ని అన్‌టిక్ చేసి ఎమ్యులేషన్‌ను అంగీకరించండి.

Android ఎమ్యులేటర్: x86_64 emulation currently requires hardware acceleration! మళ్లీ /dev/kvm — సాధారణంగా గ్రూప్ సందర్భం.

అసలు ఎర్రర్ లేదు, మరియు ప్రతిదీ చాలా నెమ్మదిగా ఉంది. యాక్సిలరేటర్ ఫ్లాగ్ లేకుండా QEMU దాని సాఫ్ట్‌వేర్ ఎమ్యులేటర్ అయిన TCG కు వెనక్కి వెళ్తుంది. అది సరైనదే మరియు అది నెమ్మదిగా ఉంటుంది — సెకన్లలో కొలిచే బూట్ నిమిషాల్లో కొలుస్తుంది. -accel kvm ను స్పష్టంగా పాస్ చేయండి, తద్వారా QEMU నిశ్శబ్దంగా ఎమ్యులేట్ చేయడం మానేసి ఎర్రర్‌తో ఆగిపోతుంది.

ఒక గెస్ట్ నడుస్తుండగా మాయమవుతుంది. Out of memory: Killed process ... qemu-system-x86_64 కోసం dmesg లో చూడండి. L2 గెస్ట్ అనేది L1 పై ఒక ప్రాసెస్, మరియు OOM కిల్లర్ దాన్ని మరేదైనా ప్రాసెస్‌లాగానే పరిగణిస్తుంది. L2 RAM అనేది L1 యొక్క స్థిర కేటాయింపు నుండి వస్తుంది — హోస్ట్ నుండి ఎంత మాత్రం తీసుకోదు.

దీన్ని నడపడం: బ్యాకప్‌లు, అప్‌గ్రేడ్‌లు, పరిమితులు

బ్యాకప్‌లు. నడుస్తున్న గెస్ట్ యొక్క qcow2 ను కాపీ చేయడం వల్ల మీకు పాడైన ఇమేజ్ లభిస్తుంది. దానికి బదులుగా virsh shutdown guest1 చేసి కాపీ చేయండి, లేదా బాహ్య స్నాప్‌షాట్ తీసుకోండి (virsh snapshot-create-as guest1 snap1 --disk-only --atomic) తద్వారా మీరు ఇప్పుడు స్థిరంగా ఉన్న బేస్‌ను కాపీ చేసేటప్పుడు రైట్‌లు ఓవర్‌లేకి మళ్లుతాయి, తర్వాత దాన్ని virsh blockcommit తో తిరిగి విలీనం చేయండి. కాపీలను VPS నుండి బయటకు పంపండి — అదే డిస్క్‌లో తీసుకున్న స్నాప్‌షాట్ ఏమీ రక్షించదు.

అప్‌గ్రేడ్‌లు. apt full-upgrade కొత్త kvm_intel/kvm_amd మాడ్యూల్‌లను ఇన్‌స్టాల్ చేస్తుంది, అయితే మీరు రీబూట్ చేసే వరకు నడుస్తున్న కెర్నల్ పాత మాడ్యూల్‌లనే ఉపయోగిస్తూ ఉంటుంది. మునుపటి కెర్నల్‌ను ఇన్‌స్టాల్ చేసి ఉంచుకోండి, ప్రతి కెర్నల్ మార్పు తర్వాత kvm-ok ను మళ్లీ అమలు చేయండి: vmx లేకుండా తిరిగి వచ్చే హోస్ట్, పని చేయడానికి ఒక బూట్ ఎంట్రీ దూరంలో ఉంటుంది.

ఇది ఎక్కడ స్కేలింగ్ ఆగిపోతుంది. ఒకే పబ్లిక్ IP అంటే ప్రతి L2 సర్వీస్ ప్రపంచానికి L1 పై ప్రాక్సీ లేదా DNAT రూల్ ద్వారా చేరుకుంటుంది. లైవ్ మైగ్రేషన్ ఎంపికలో లేదు. CPU పోటీ ఉన్నప్పుడు నెస్టెడ్ ఎగ్జిట్ పాత్ మొదట దాని ప్రభావాన్ని పడుతుంది. పలు గెస్ట్‌లు ఉన్న హైపర్‌వైజర్ అంటే మీరు ఇప్పటికే ఖర్చు చేసిన RAM ఉన్న మెషీన్ — నెస్టెడ్ VMలు స్థిర కేటాయింపు నుండి బయటపడటానికి ఓవర్‌కమిట్ చేయలేవు. ల్యాబ్ దానికి మించి పెరిగినప్పుడు, పరిష్కారం మరింత ఎత్తైన నెస్టెడ్ స్టాక్ కాదు; అది ఒక ప్రత్యేక బాక్స్, అందులో మీరు L0 గా ఉంటారు మరియు ఇవి ఏవీ వర్తించవు.

FAQ

Docker ను VPS లో నడపడానికి నాకు నెస్టెడ్ వర్చువలైజేషన్ అవసరమా?

లేదు. కంటైనర్లు మీ VPS కెర్నల్‌ను పంచుకుంటాయి మరియు /dev/kvm ను ఎప్పుడూ తెరవవు. కాబట్టి vmx లేదా svm ఫ్లాగ్ లేని సాధారణ ఇన్‌స్టెన్స్ Docker మరియు Docker Compose ను సమస్య లేకుండా నడుపుతుంది. మీకు రెండవ కెర్నల్ అవసరమైనప్పుడు మాత్రమే నెస్టింగ్ పనికొస్తుంది: Proxmox ల్యాబ్, Windows గెస్ట్, Firecracker మైక్రోVMలు, Android ఎమ్యులేటర్, లేదా VM ఇమేజ్‌లను బూట్ చేసే CI రన్నర్‌లు.

నా VPS నెస్టెడ్ వర్చువలైజేషన్‌ను సపోర్ట్ చేస్తుందో లేదో నేను ఎలా తనిఖీ చేస్తాను?

grep -o -E 'vmx|svm' /proc/cpuinfo | sort -u ను రన్ చేయండి, తర్వాత cpu-checker ప్యాకేజీ నుండి kvm-ok ను రన్ చేయండి. ఉపయోగించదగిన ఇన్‌స్టెన్స్ vmx (Intel) లేదా svm (AMD) ప్రింట్ చేస్తుంది, kvm-ok అనేది KVM acceleration can be used ను రిపోర్ట్ చేస్తుంది, మరియు /dev/kvm గ్రూప్ kvm మరియు మోడ్ 660 తో ఉంటుంది. ఈ ప్రశ్నకు /sys/module/kvm_intel/parameters/nested ను విస్మరించండి — ఆ ఫైల్ మీ స్వంత KVM మాడ్యూల్‌ను వివరిస్తుంది, ప్రొవైడర్ హైపర్‌వైజర్ మీకు అందించినది కాదు.

చాలా VPS ప్రొవైడర్‌లు నెస్టెడ్ వర్చువలైజేషన్‌ను ఎందుకు డిసేబుల్ చేస్తారు?

vmx ను బహిర్గతం చేయడం అంటే గెస్ట్‌కు ఆ ఫ్లాగ్ ఉన్న CPU మోడల్‌ను అందించడం. ఆ CPU ఫీచర్లపై ఆధారపడిన గెస్ట్‌ను ఆ ఫీచర్లు లేని CPU ఉన్న మెషీన్‌కు లైవ్-మైగ్రేట్ చేయడం సాధ్యం కాదు. కస్టమర్‌లను తరలించడం ద్వారా నోడ్‌లను ఖాళీ చేసే ప్రొవైడర్ దీన్ని కోల్పోతాడు. నెస్టెడ్ VMX/SVM కోడ్ పాత్‌లకు సంబంధించి దీర్ఘకాలిక CVE చరిత్ర కూడా ఉంది. కొన్ని హోస్ట్‌లు అభ్యర్థన మేరకు ప్రతి VMకి దీన్ని ఇప్పటికీ ప్రారంభిస్తాయి, మరికొన్ని నెస్టింగ్‌ను ప్లాన్ ఫీచర్‌గా డాక్యుమెంట్ చేస్తాయి.

నా నెస్టెడ్ VMకి పబ్లిక్ బ్రిడ్జ్‌లో నెట్‌వర్క్ లేదు. సమస్య ఏమిటి?

ప్రొవైడర్ స్విచ్ తాను లీజ్ ఇవ్వని MAC చిరునామా నుండి వచ్చే ఫ్రేమ్‌లను డ్రాప్ చేస్తుంది. కాబట్టి పబ్లిక్ NICకి బ్రిడ్జ్ చేయబడిన L2 గెస్ట్ ARP పంపుతుంది మరియు బదులు ఏమీ వినదు. br0 ను డీబగ్ చేయడం ఆపండి — libvirt యొక్క NAT default నెట్‌వర్క్‌ను ఉపయోగించండి (virbr0, 192.168.122.0/24), గెస్ట్‌కు స్టాటిక్ లీజ్ ఇవ్వండి, మరియు పబ్లిక్‌గా ఉన్న దాన్ని VPS లోనే రివర్స్ ప్రాక్సీ లేదా DNAT రూల్ ద్వారా పబ్లిష్ చేయండి.

నెస్టెడ్ VM ఎంత నెమ్మదిగా ఉంటుంది?

ఖర్చు మెమరీ యాక్సెస్‌పై కాకుండా, VM ఎగ్జిట్‌లపై పడుతుంది. EPT/NPT యాక్టివ్‌గా ఉన్నప్పుడు, L2 లోపల సాధారణ రీడ్‌లు మరియు రైట్‌లు హార్డ్‌వేర్ వేగంతో నడుస్తాయి, అయితే I/O, టైమర్ ఇంటరప్ట్‌లు, MMIO మరియు IPIలను L0 నిర్వహిస్తుంది మరియు అవి L1 ద్వారా బౌన్స్ అవ్వొచ్చు. RAMలో ఇప్పటికే ఉన్న డేటాపై CPU-ఆధారిత పని స్థానికంగా ఉన్నట్లు కనిపిస్తుంది; సిస్‌కాల్, ప్యాకెట్ మరియు డిస్క్-భారీ వర్క్‌లోడ్‌లు ప్రతి పొరను అనుభవిస్తాయి. అన్ని చోట్లా virtio పరికరాలను ఉపయోగించండి మరియు గెస్ట్ డిస్క్‌లపై cache=none ఉపయోగించండి, తర్వాత మీ స్వంత వర్క్‌లోడ్‌ను కొలవండి.

#nested-virtualization#kvm#proxmox#vps#qemu#libvirt