۱۷. مجازیسازی¶
لایهٔ مجازیسازی دو چیز را پنهان میکند: منابع واقعی (overcommit، steal) و ریسک عملیات (یک destroy معادل کشیدن برق است). این فصل KVM/libvirt، Proxmox و VMware را از دید لینوکس پوشش میدهد.
راهنمای سریع¶
| فرمان | کاربرد | ریسک |
|---|---|---|
virsh list --all / dominfo / domstate / dumpxml |
مشاهده (KVM) | بدون تغییر |
qm list / qm config ID / pct list (Proxmox) |
مشاهده | بدون تغییر |
systemd-detect-virt / lscpu |
این سرور مجازی است؟ | بدون تغییر |
virsh start / shutdown / reboot |
عملیات VM | تغییر |
virsh snapshot-create-as |
snapshot | تغییر |
virsh destroy |
قطع اجباری (قطع برق) | مخرب |
virsh undefine --remove-all-storage |
حذف VM و دیسک | مخرب |
KVM / libvirt¶
virsh list --all
virsh dominfo VM_NAME
virsh domstate VM_NAME
virsh domiflist VM_NAME
virsh domblklist VM_NAME
virsh dumpxml VM_NAME | less
virsh console VM_NAME
virsh domblkstat VM_NAME vda
virsh autostart VM_NAME # شروع خودکار با میزبان
virsh list --autostart
برای خروج از کنسول متنی libvirt معمولاً Ctrl+] (Ctrl+]) استفاده میشود. قبل از هر کار، مطمئن شوید روی میزبان درست هستید و نام VM را با virsh list --all تأیید کنید.
منابع میزبان¶
lscpu | grep -iE 'virtualization|model name'
ls -l /dev/kvm
virt-host-validate
free -h
lsblk
virsh nodeinfo
virsh pool-list --all
virsh vol-list POOL
virsh net-list --all
df -hT /var/lib/libvirt/images
overcommit و thin disk
دیسکهای qcow2 thin یا RAM overcommit شده یعنی مجموع «اختصاصیافته» میتواند از ظرفیت واقعی بیشتر باشد. پر شدن datastore/pool، همهٔ VM ها را متوقف میکند. فضای واقعی را مانیتور کنید، نه فقط فضای اختصاصیافته.
عملیات ماشین مجازی¶
shutdown به ACPI/guest agent نیاز دارد و ممکن است نتیجه ندهد؛ داخل مهمان وضعیت را ببینید. خاموشکردن اجباری یا destroy معادل قطع برق است و میتواند به فایلسیستم یا دیتابیس مهمان آسیب بزند؛ فقط در شرایط اضطراری و پس از بررسی استفاده کنید. virsh undefine VM --remove-all-storage VM و دیسکهایش را پاک میکند.
snapshot¶
virsh snapshot-list VM_NAME
virsh snapshot-create-as VM_NAME pre-upgrade --description "قبل از ارتقا"
virsh snapshot-revert VM_NAME pre-upgrade
virsh snapshot-delete VM_NAME pre-upgrade
qemu-img info --backing-chain /var/lib/libvirt/images/vm.qcow2
snapshot بکاپ نیست: روی همان ذخیرهساز است، زنجیرهٔ طولانی کارایی را میکشد و حذفنشده فضا میخورد. قبل از تغییر پرریسک بگیرید و بعد از تأیید حذف کنید.
Proxmox VE¶
pveversion -v | head -3
qm list # VM ها (KVM)
qm status 101
qm config 101
pct list # کانتینرهای LXC
pvesm status # ذخیرهسازها و فضای آزاد
pvecm status # کلاستر و quorum
sudo qm shutdown 101 # تمیز؛ qm stop = قطع اجباری
sudo qm unlock 101 # قفل گیرکردهٔ ناشی از عملیات نیمهکاره (فقط پس از اطمینان که کاری در جریان نیست)
journalctl -u pvedaemon -u pveproxy --since today
vzdump 101 --storage backup-store --mode snapshot --compress zstd # بکاپ
وضعیت quorum را قبل از خاموشکردن یک نود بررسی کنید؛ از دست دادن quorum فایلسیستم کلاستر را فقطخواندنی میکند.
VMware ESXi / vCenter¶
از سیستم لینوکس میتوان وضعیت دسترسی شبکه و DNS را بررسی کرد:
nc -vz VCENTER_HOST 443
curl -kI https://VCENTER_HOST/ # -k فقط برای تست دسترسی؛ نه اتصال واقعی
getent hosts VCENTER_HOST
در محیط VMware از ابزارها و APIهای رسمی همان نسخه (vSphere Client، govc، esxcli) برای مدیریت VM، datastore، snapshot و host استفاده کنید. snapshot جایگزین پشتیبانگیری مستقل نیست و نگهداری طولانی آن میتواند مصرف datastore را افزایش دهد (و consolidate را سنگین کند).
از داخل مهمان¶
systemd-detect-virt # kvm / vmware / microsoft ...
lscpu | grep -i hypervisor
systemctl status qemu-guest-agent --no-pager # یا open-vm-tools
vmstat 1 5 # ستون st (steal)
timedatectl # ساعت مهمان همگام با NTP؟
stبالا = میزبان مشغول است؛ مشکل داخل مهمان نیست.- guest agent برای shutdown تمیز و snapshot سازگار لازم است.
- بعد از بزرگکردن دیسک در hypervisor، داخل مهمان باید پارتیشن/LVM/فایلسیستم را هم بزرگ کنید (دیسک).
- ساعت مهمان: NTP داخل مهمان یا همگامسازی hypervisor را یکی کنید، نه هر دو.
خطاهای رایج¶
| نشانه | علت احتمالی | روش بررسی |
|---|---|---|
| VM بالا نمیآید: «no space» | pool/datastore پر | df ، virsh pool-list ، pvesm status |
Cannot access storage file |
مجوز/مسیر/AppArmor | ls -l ، journalctl -u libvirtd |
shutdown اثر ندارد |
بدون agent/ACPI | داخل مهمان؛ guest agent |
| VM کند ولی داخلش بیکار | steal / overcommit میزبان | vmstat (st) ، میزبان top |
| دیسک VM بعد از snapshot کند | زنجیرهٔ طولانی | qemu-img info --backing-chain |
Proxmox: cluster not ready - no quorum |
نود کم / شبکه | pvecm status |
qm قفل گیرکرده |
عملیات قطع شده | qm unlock (بعد از بررسی) |
نکات امنیتی و عملیاتی¶
- دسترسی به hypervisor = دسترسی به همهٔ مهمانها؛ آن را مثل بالاترین سطح حفاظت کنید (شبکهٔ مدیریت جدا، MFA).
- بکاپ مستقل از snapshot (vzdump/ابزار بکاپ)، با تست بازیابی.
- قبل از بهروزرسانی میزبان: تخلیهٔ VM ها یا مهاجرت، پنجرهٔ تغییر.
خلاصهٔ اجرایی¶
- فضا (واقعی) pool/datastore را مانیتور کنید؛ thin = خطر.
shutdown← صبر ← فقط در اضطرارdestroy/stop.- snapshot موقت است، بکاپ نیست؛ حذفش کنید.
- steal (
st) را قبل از دنبالکردن مشکل داخل مهمان بخوانید.