نحوه ساخت و مدیریت ماشین های مجازی با استفاده از Proxmox CLI: راهنمای گام به گام

اخیراً برای یک پروژه نیاز به راه اندازی یک سری ماشین مجازی (VM) در Proxmox داشتم. یکی از ماشین های مجازی برای پردازش داده های سطح بالا در نظر گرفته شده بود و من در ابتدا در مورد الزامات دقیق آن مطمئن نبودم. برای پرداختن به این موضوع، تصمیم گرفتم تا پیکربندی های مختلف را آزمایش کنم تا زمانی که تنظیمات بهینه را پیدا کنم. در حالی که رابط وب Proxmox عالی است، من به یک راه سریعتر و انعطاف پذیرتر برای ایجاد تغییرات تدریجی بدون پیمایش در چندین مرحله در رابط کاربری گرافیکی نیاز داشتم. به عنوان فردی که بیشتر وقت خود را در خط فرمان با استفاده از Proxmox می گذراند qm
رابط خط فرمان شبیه یک تناسب طبیعی بود.
- ساخت ماشین مجازی با Proxmox CLI
-
استفاده از Proxmox CLI
- حذف VM های موجود
- ساخت پایه VM
- پیکربندی فضای ذخیره سازی
- پیکربندی شبکه
- چرا از رابط وب استفاده نمی کنید؟
- چرا از کلون یا قالب استفاده نمی کنید؟
- تطبیق اسکریپت برای پروژه شما
استفاده از Proxmox CLI
Proxmox فراهم می کند qm
دستوری برای مدیریت ماشین های مجازی مستقیماً از خط فرمان، ارائه عملکرد قابل مقایسه با رابط وب و در برخی موارد حتی انعطاف پذیری بیشتر. می توانید به مقام رسمی مراجعه کنید qm
صفحه مرد برای جزئیات جامع. برای اینکه گردش کارم کارآمدتر و قابل استفاده مجدد باشد، با تنظیم چند متغیر در یک اسکریپت شروع کردم. این متغیرها شامل اطلاعاتی در مورد شناسه ماشین مجازی، نام، مکان های ذخیره سازی، اندازه دیسک، حافظه و پیکربندی CPU بود. این قطعه فیلمنامه است:
#!/bin/bash
## Basic VM Info
VMID=990
NAME="ThisVM"
## Linux to Install
ISO_STORAGE="ISOs" # Replace with your ISO storage name
ISO_FILE="OracleLinux-R9-U4-x86_64-dvd.iso" # Replace with your ISO filename
## Hard Drive Size
DISK_STORAGE="vm_storage" # Replace with your disk storage name
SYSTEM_DISK="300G"
DATA_DISK="500G"
## Memory Size
MEMORY=32
MEMORY_SIZE=$(( MEMORY * 1024 ))
## Processors
CORES=7
SOCKETS=2
## Network
VLAN_TAG=20
INTERFACE="vmbr0"
حذف VM های موجود
اگر ماشین مجازی از قبل وجود داشته است، قبل از ادامه مطمئن شدم که آن را حذف کرده ام. این به من اجازه داد تا تنظیمات را تغییر دهم و اسکریپت را بدون مشکل اجرا کنم. البته، اگر قصد استفاده از این کد را دارید، مطمئن شوید که VM یا پشتیبانگیری شده است یا دیگر مورد نیاز نیست.
## If existing, remove
if qm list | awk '{print $1}' | grep -q "^$VMID$"; then
qm stop $VMID
qm destroy $VMID
fi
ایجاد پایه VM
با پاک شدن تنظیمات، به سمت ایجاد VM پایه با استفاده از آن رفتم qm create
و پیکربندی منابع آن در اینجا قطعه ای برای تنظیم حافظه، CPU و فعال کردن NUMA (دسترسی به حافظه غیر یکنواخت) آمده است:
## Create VM
qm create $VMID --name $NAME
## Setup Memory and CPUs
qm set $VMID --memory ${MEMORY_SIZE}
qm set $VMID --balloon ${MEMORY_SIZE}
qm set $VMID --cpu cputype=host
qm set $VMID --cores ${CORES} --sockets ${SOCKETS} --numa 1
توجه: پشتیبانی NUMA به بهینهسازی دسترسی به حافظه در سرورهای چند CPU مدرن با تراز کردن مناطق حافظه با پردازندههای خاص کمک میکند. این می تواند به ویژه برای بارهای کاری با عملکرد بالا مهم باشد.
پیکربندی فضای ذخیره سازی
بعد، ISO بوت و درایوهای ذخیره سازی VM را تنظیم کردم. برای این پروژه، من یک دیسک ثانویه به طور خاص برای ذخیره سازی داده ها اضافه کردم:
## Install ISO and Hard Drives
qm set $VMID --cdrom $ISO_STORAGE:iso/$ISO_FILE
### OS Drive
pvesm alloc vm_storage $VMID vm-${VMID}-disk-0 300G
qm set $VMID --scsi0 vm_storage:vm-${VMID}-disk-0,iothread=1,cache=writeback
### Data Drive
pvesm alloc vm_storage $VMID vm-${VMID}-disk-1 500G
qm set $VMID --scsihw virtio-scsi-single
qm set $VMID --scsi1 vm_storage:vm-${VMID}-disk-1,iothread=1
### Boot Order
qm set $VMID --boot order='ide2;scsi0'
پیکربندی شبکه
برای شبکه، پروژه به یک کارت شبکه واحد روی VLAN 20 نیاز داشت. در اینجا پیکربندی استفاده کردم:
## Network
qm set $VMID --net0 virtio,bridge=${INTERFACE},tag=${VLAN_TAG},queues=4
کد کامل اینجا
چرا از رابط وب استفاده نمی کنید؟
در حالی که هیچ مشکلی با رابط وب Proxmox وجود ندارد، برای این پروژه، من به انعطافپذیری نیاز داشتم تا سریعاً سرهمبندی و بازسازی کنم. نوشتن فیلمنامه به من این امکان را داد که تنظیمات را به طور مکرر تنظیم کنم و این اطمینان را ایجاد کرد که بازسازیهای آینده سازگار و ساده باشند.
چرا از کلون یا قالب استفاده نمی کنید؟
شبیه سازی یا استفاده از یک قالب VM مطمئناً یک روش معتبر برای ایجاد ماشین های مجازی مشابه در آینده خواهد بود. با این حال، به عنوان فردی که از کدنویسی و آزمایش کردن لذت می برد، دریافت اسکریپت نویسی این فرآیند هم مفید و هم کاربردی است. همچنین به من کنترل کاملی بر تمام جنبه های پیکربندی VM داد.
چگونه می توانید این اسکریپت را برای پروژه خود تطبیق دهید؟ چه در حال خودکارسازی استقرار VM باشید و چه فقط پیکربندیها را آزمایش کنید، استفاده از Proxmox CLI میتواند باعث صرفهجویی در زمان و سادهسازی گردش کار شما شود.