پرش به محتوا

مدیریت ماشین‌های مجازی ESXi از خط فرمان با vim-cmd و vmkfstools

فهرست ماشین‌ها را ببینید، آن‌ها را روشن و خاموش کنید، snapshot بگیرید، دیسک را با vmkfstools کپی کنید و ماشین را ثبت یا از فهرست خارج کنید.

VMware ESXi 8سطح: متوسطبه‌روزرسانی: ۱۷ آبان ۱۴۰۵

وقتی رابط وب در دسترس نیست، یا می‌خواهید کاری را روی چند ماشین اسکریپت کنید، vim-cmd همان کارهای Host Client را از SSH انجام می‌دهد.

۱. فهرست و وضعیت

shell
vim-cmd vmsvc/getallvms
vim-cmd vmsvc/power.getstate 12
vim-cmd vmsvc/get.summary 12 | grep -E 'name|powerState|ipAddress|toolsStatus'

عدد اول هر سطر خروجی getallvms شناسه‌ی ماشین (Vmid) است و بقیه‌ی دستورها با همین شناسه کار می‌کنند.

۲. روشن و خاموش کردن

shell
vim-cmd vmsvc/power.on 12
vim-cmd vmsvc/power.shutdown 12   # graceful, needs VMware Tools
vim-cmd vmsvc/power.off 12        # hard power off
vim-cmd vmsvc/power.reboot 12

خاموش کردن مرتب همه‌ی ماشین‌های روشن پیش از نگهداری میزبان:

shell
for id in $(vim-cmd vmsvc/getallvms | awk 'NR>1 {print $1}'); do
  vim-cmd vmsvc/power.getstate "$id" | grep -q 'Powered on' && vim-cmd vmsvc/power.shutdown "$id"
done

۳. snapshot

shell
# snapshot.create <vmid> <name> <description> <includeMemory> <quiesce>
vim-cmd vmsvc/snapshot.create 12 before-patch "before monthly patch" 0 1
vim-cmd vmsvc/snapshot.get 12
vim-cmd vmsvc/snapshot.removeall 12

snapshot جایگزین بکاپ نیست. snapshot قدیمی فایل delta را بزرگ می‌کند و کارایی دیسک را پایین می‌آورد. بعد از پایان کار حذفش کنید.

۴. کپی دیسک و ساخت ماشین از قالب

shell
cd /vmfs/volumes/datastore1
mkdir web02
vmkfstools -i template-rocky9/template-rocky9.vmdk web02/web02.vmdk -d thin
cp template-rocky9/template-rocky9.vmx web02/web02.vmx
sed -i 's/template-rocky9/web02/g' web02/web02.vmx
sed -i '/^ethernet0.generatedAddress/d; /^uuid.bios/d; /^uuid.location/d' web02/web02.vmx
vim-cmd solo/registervm /vmfs/volumes/datastore1/web02/web02.vmx

برای کپی دیسک فقط از vmkfstools استفاده کنید، نه cp. با حذف خطوط MAC و UUID، ESXi برای ماشین جدید مقدار تازه می‌سازد. در اولین روشن شدن اگر پرسید «moved or copied؟» گزینه‌ی I copied it را انتخاب کنید.

۵. خارج کردن از فهرست

shell
vim-cmd vmsvc/unregister 12

این دستور فایل‌ها را پاک نمی‌کند. ماشین فقط از فهرست میزبان خارج می‌شود و با registervm دوباره برمی‌گردد.