| virt-install(1) | Virtualization Support | virt-install(1) |
نام (NAME)
virt-install - راهاندازی و ایجاد ماشینهای مجازی جدید
خلاصه دستور (SYNOPSIS)
virt-install [OPTION]...
توضیحات (DESCRIPTION)
virt-install یک ابزار خط فرمانی برای ساخت ماشینهای مهمان جدید KVM، Xen یا کانتینرهای لینوکس با استفاده از کتابخانه مدیریت هایپروایزر libvirt است. برای شروع سریع، بخش مثالها (EXAMPLES) را در انتهای این سند مشاهده کنید.
ابزار virt-install از نصب گرافیکی با استفاده از (به عنوان مثال) VNC یا SPICE و همچنین نصب در حالت متنی از طریق کنسول سریال پشتیبانی میکند. ماشین مهمان را میتوان به گونهای پیکربندی کرد که از یک یا چند دیسک مجازی، رابط شبکه، دستگاه صوتی، و دستگاههای فیزیکی USB یا PCI و موارد دیگر استفاده کند.
رسانه نصب میتواند یک دیسک محلی ISO یا CDROM، یا یک درخت نصب توزیع (install tree) میزبانیشده از راه دور بر بستر HTTP، FTP یا در یک دایرکتوری محلی باشد. در حالت درخت نصب، virt-install فایلهای حداقلی لازم برای آغاز فرایند نصب را دریافت کرده و به مهمان اجازه میدهد باقی توزیع سیستمعامل را در صورت نیاز دریافت کند. راهاندازی از طریق بوت شبکه (PXE) و وارد کردن (import) یک ایمیج دیسک موجود (و در نتیجه رد کردن مرحله نصب) نیز پشتیبانی میشوند.
با مشخص کردن آرگومانهای مناسب در خط فرمان، virt-install قادر است کاملاً بدون نظارت (unattended) اجرا شود، به طوری که ماشین مهمان نیز فرایند راهاندازی خودکار ('kickstarting') را انجام دهد. این قابلیت امکان خودکارسازی آسان نصب ماشینهای مهمان را فراهم میکند. این کار میتواند به صورت دستی یا بسیار سادهتر با گزینه --unattended انجام شود.
بسیاری از آرگومانها دارای زیرگزینههایی هستند که به صورت opt1=foo,opt2=bar و غیره مشخص میشوند. برای دیدن فهرست کاملی از زیرگزینههای مرتبط با هر آرگومان، --option=? را امتحان کنید؛ برای مثال: virt-install --disk=?
بیشتر گزینهها اجباری نیستند. اگر یک مقدار مناسب برای --osinfo مشخص یا شناسایی شود، تمام مقادیر پیشفرض تعیین شده و در خروجی ترمینال گزارش میشوند. در غیر این صورت، حداقل گزینههای مورد نیاز عبارتند از --memory، فضای ذخیرهسازی مهمان (--disk یا --filesystem)، و انتخاب یک روش نصب.
اتصال به LIBVIRT (CONNECTING TO LIBVIRT)
--connect
نحو (Syntax): --connect URI
اتصال به یک هایپروایزر غیرپیشفرض. اگر این گزینه مشخص نشود، libvirt تلاش خواهد کرد مناسبترین مورد پیشفرض را انتخاب کند.
برخی از گزینههای معتبر در اینجا عبارتند از:
- qemu:///system
- برای ایجاد مهمانهای KVM و QEMU جهت اجرا توسط نمونه libvirtd در سطح سیستم. این حالت پیشفرضی است که virt-manager استفاده میکند و خواسته اغلب کاربران KVM است.
- qemu:///session
- برای ایجاد مهمانهای KVM و QEMU برای libvirtd که تحت کاربر عادی اجرا میشود.
- xen:///
- برای اتصال به Xen.
- lxc:///
- برای ایجاد
کانتینرهای
لینوکس.
پارامترهای پیکربندی عمومی که برای همه انواع نصبهای مهمان اعمال میشوند.
-n, --name
نحو: -n, --name NAME
نام نمونه ماشین مجازی مهمان جدید. این نام باید در میان تمام مهمانهای شناختهشده برای هایپروایزر در این اتصال، از جمله مواردی که در حال حاضر فعال نیستند، یکتا باشد. برای تعریف مجدد یک مهمان موجود، قبل از اجرای virt-install از ابزار virsh(1) برای خاموش کردن آن ('virsh shutdown') و حذف آن ('virsh undefine') استفاده کنید.
--memory
نحو: --memory OPTIONS
حافظهای که باید به مهمان تخصیص داده شود، بر حسب مبیبایت (MiB). این گزینه جایگزین گزینه منسوخشده -r/--ram است. زیرگزینههایی مانند 'memory'، 'currentMemory'، 'maxMemory' و 'maxMemory.slots' در دسترس هستند که همگی به مقادیر همنام خود در XML نگاشت میشوند.
برای سازگاری با گذشته، مقدار 'memory' به عنصر <currentMemory> و maxmemory به عنصر <memory> نگاشت میشود.
برای پیکربندی ماژولهای حافظهای که میتوانند در حین کار جدا شوند (hotunplug)، توضیحات --memdev را ببینید.
برای مشاهده فهرستی از تمامی زیرگزینههای موجود، از --memory=? استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#memory-allocation
--memorybacking
نحو: --memorybacking OPTIONS
این گزینه بر نحوه پشتیبانی شدن صفحات حافظه مجازی توسط صفحات میزبان تأثیر میگذارد.
برای مشاهده فهرستی از تمامی زیرگزینههای موجود، از --memorybacking=? استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#memory-backing
--arch
نحو: --arch ARCH
درخواست یک معماری پردازنده غیربومی (non-native) برای ماشین مجازی مهمان. در صورت تعیین نشدن، از معماری پردازنده میزبان در مهمان استفاده خواهد شد.
--machine
نحو: --machine MACHINE
نوع ماشینی که باید شبیهسازی شود. معمولاً برای Xen یا KVM نیازی به تعیین این گزینه نیست، اما برای انتخاب نوع ماشین در معماریهای نامتعارفتر مفید است.
--metadata
نحو: --metadata OPT=VAL,[...]
تعیین مقادیر فراداده برای مهمان. گزینههای ممکن شامل name، uuid، title و description هستند. این گزینه جایگزین گزینههای منسوخشده -u/--uuid و --description است.
برای مشاهده فهرستی از تمامی زیرگزینههای موجود، از --metadata=? استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#general-metadata
--events
نحو: --events OPT=VAL,[...]
تعیین مقادیر رویدادها برای مهمان. گزینههای ممکن شامل on_poweroff، on_reboot و on_crash هستند.
برای مشاهده فهرستی از تمامی زیرگزینههای موجود، از --events=? استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#events-configuration
--resource
نحو: --resource OPT=VAL,[...]
تعیین افراز منابع (resource partitioning) برای مهمان.
برای مشاهده فهرستی از تمامی زیرگزینههای موجود، از --resource=? استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#resource-partitioning
--sysinfo
نحو: --sysinfo OPT=VAL,[...]
پیکربندی مقادیر sysinfo/SMBIOS که در دسترس سیستمعامل ماشین مجازی قرار میگیرند. مثالها:
- --sysinfo host
- نوع ویژهای که اطلاعات SMBIOS میزبان را در ماشین مجازی در دسترس قرار میدهد.
- --sysinfo emulate
- نوع ویژهای که در آن هایپروایزر اطلاعات SMBIOS را برای ماشین مجازی تولید میکند.
- --sysinfo bios.vendor=custom یا --sysinfo smbios,bios.vendor=custom
- نوع پیشفرض smbios است و به کاربران اجازه میدهد اطلاعات SMBIOS را بهصورت دستی مشخص کنند.
برای مشاهده فهرستی از تمامی زیرگزینههای موجود، از --sysinfo=? استفاده کنید.
جزئیات کامل در https://libvirt.org/formatdomain.html#operating-system-booting و https://libvirt.org/formatdomain.html#smbios-system-information برای عنصر XML با نام smbios..SS --xml
ساختار: --xml ARGS
اعمال ویرایشهای مستقیم بر روی XML تولیدشده با استفاده از نحو XPath. برای نمونه:
virt-install --xml ./@foo=bar --xml ./newelement/subelement=1
این کار XML تولیدشده را طوری تغییر میدهد که شامل موارد زیر باشد:
<domain foo='bar' ...>
...
<newelement>
<subelement>1</subelement>
</newelement>
</domain>
گزینه --xml دارای ۴ زیرگزینه است:
- --xml xpath.set=XPATH[=VALUE]
- رفتار پیشفرض در صورتی که هیچ زیرگزینهٔ صریحی تنظیم نشده باشد. از ساختار XPATH=VALUE استفاده میکند مگر اینکه با xpath.value جفت شود. برای چگونگی تفسیر مقدار به بخش زیر مراجعه کنید.
- --xml xpath.value=VALUE
- xpath.set فقط به
عنوان رشته
XPath تفسیر
میشود و از
xpath.value به
عنوان
مقدار
تنظیمی
استفاده
خواهد شد.
این گزینه
میتواند
به دور زدن
مشکلاتی که
ممکن است در
صورت وجود
علامت
مساوی '=' در
رشته رخ دهد
کمک کند.
اگر مقدار خالی باشد، به عنوان لغو مقداردهی آن گره خاص در نظر گرفته میشود.
- --xml xpath.create=XPATH
- گره را به عنوان یک عنصر خالی ایجاد میکند. برای عناصر بولی مانند <readonly/> لازم است.
- --xml xpath.delete=XPATH
- کل گره مشخصشده توسط xpath و تمام فرزندان آن را حذف میکند.
زیرآرگومانهای xpath
مشابه گزینه --xml، اکثر گزینههای سطح بالا دارای زیرگزینههای xpath.* هستند. برای مثال، --disk xpath1.set=./@foo=bar,xpath2.create=./newelement تغییراتی در XML به این شکل ایجاد میکند:
<disk foo="bar"> <newelements/> </disk>
این قابلیت برای تنظیم گزینههای XML به ازای هر دستگاه مفید است، در شرایطی که virt-install هنوز از آن گزینهها پشتیبانی نمیکند.
--qemu-commandline
ساختار: --qemu-commandline ARGS
ارسال مستقیم گزینهها به شبیهساز qemu. فقط برای درایور qemu در libvirt کار میکند. این گزینه میتواند یک رشته از آرگومانها را دریافت کند، برای مثال:
--qemu-commandline="-display gtk,gl=on"
متغیرهای محیطی با استفاده از 'env' مشخص میشوند، برای مثال:
--qemu-commandline=env=DISPLAY=:0.1
جزئیات کامل درباره این قابلیت libvirt: https://libvirt.org/drvqemu.html#pass-through-of-arbitrary-qemu-commands.SS --vcpus
ساختار: --vcpus OPTIONS
تعداد پردازندههای مجازی برای پیکربندی در سیستمعامل مهمان. اگر 'maxvcpus' مشخص شده باشد، مهمان قادر خواهد بود در حین اجرا تا سقف MAX پردازنده مجازی را بهصورت اتصال گرم (hotplug) اضافه کند، اما با VCPUS راهاندازی خواهد شد.
مکاننگاری پردازنده (CPU topology) را میتوان علاوه بر این با sockets، dies، cores و threads مشخص کرد. اگر مقادیر ذکر نشوند، موارد باقیمانده بهطور خودکار با اولویت دادن به cores نسبت به sockets و سپس threads پر خواهند شد. اولویت با هستهها (cores) است زیرا این امر با ویژگیهای تراشههای سختافزاری مدرن در دنیای واقعی مطابقت دارد و بنابراین با آنچه سیستمعامل مهمان انتظار مواجهه با آن را دارد سازگارتر است.
گزینه 'cpuset' مشخص میکند که مهمان میتواند از کدام پردازندههای فیزیکی استفاده کند. CPUSET فهرستی از اعداد است که با کاما از هم جدا شدهاند، و همچنین میتوان آن را در قالب بازهها یا مشخص کردن پردازندههایی جهت مستثنی کردن تعیین نمود. مثال:
0,2,3,5 : استفاده از پردازندههای 0، 2، 3 و 5 1-5,^3,8 : استفاده از پردازندههای 1، 2، 4، 5 و 8
اگر مقدار 'auto' ارسال شود، virt-install تلاش میکند در صورت دردسترس بودن، با استفاده از دادههای NUMA بهطور خودکار یک سنجاق کردن بهینه پردازنده (cpu pinning) را تعیین کند.
برای مشاهده فهرستی از تمامی زیرگزینههای دردسترس از --vcpus=? استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#cpu-allocation
--numatune
ساختار: --numatune OPTIONS
تنظیم خطمشی NUMA برای فرایند دامنه (domain process). نمونههای فراخوانی
--numatune 1,2,3,4-7 --numatune 1-3,5,memory.mode=preferred
گرههای numa را برای تخصیص حافظه از آنها مشخص میکند. این گزینه دارای ساختاری مشابه با گزینه --vcpus cpuset= است. حالت (mode) میتواند یکی از مقادیر 'interleave'، 'preferred' یا 'strict' (پیشفرض) باشد. برای کسب اطلاعات درباره هر حالت، 'man 8 numactl' را ببینید.
برای مشاهده فهرستی از تمامی زیرگزینههای دردسترس از --numatune=? استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#numa-node-tuning
--memtune
ساختار: --memtune OPTIONS
تنظیم خطمشی حافظه برای فرایند دامنه (domain process). نمونههای فراخوانی
--memtune 1000 --memtune hard_limit=100,soft_limit=60,swap_hard_limit=150,min_guarantee=80
برای مشاهده فهرستی از تمامی زیرگزینههای دردسترس از --memtune=? استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#memory-tuning
--blkiotune
ساختار: --blkiotune OPTIONS
تنظیم خطمشی blkio برای فرایند دامنه (domain process). نمونههای فراخوانی
--blkiotune 100 --blkiotune weight=100,device.path=/dev/sdc,device.weight=200
برای مشاهده فهرستی از تمامی زیرگزینههای دردسترس از --blkiotune=? استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#block-i-o-tuning.SS --cpu
نحو: --cpu MODEL[,+feature][,-feature][,match=MATCH][,vendor=VENDOR],...
پیکربندی مدل CPU و ویژگیهای پردازندهای که به مهمان ارائه میشوند. تنها مقدار الزامی MODEL است که یک مدل معتبر CPU شناختهشده برای libvirt میباشد.
مقادیر خطمشی ویژگی در libvirt عبارتند از force، require، optional، disable، یا forbid، یا با شکل خلاصه '+feature' و '-feature' که به ترتیب معادل 'force=feature' و 'disable=feature' هستند.
اگر مدل دقیق CPU مشخص شود، virt-install بهطور خودکار ویژگیهای CPU موجود روی میزبان را کپی میکند تا آسیبپذیریهای امنیتی اخیر کانال جانبی اجرای حدسی (speculative execution) پردازنده و Microarchitectural Store Buffer Data را کاهش دهد. با این حال، این امر تأثیراتی بر کارایی خواهد داشت و مهاجرت به میزبانهای فاقد وصلههای امنیتی را با مشکل مواجه میکند. برای کنترل این رفتار، پارامتر secure وجود دارد. مقادیر ممکن on و off هستند که on پیشفرض است. اکیداً توصیه میشود این گزینه را فعال نگه دارید و اطمینان حاصل کنید که روی تمام میزبانهای مجازیسازی، microcode، کرنل و نرمافزار مجازیسازی کاملاً بهروز نصب شده باشد.
چند مثال:
- --cpu core2duo,+x2apic,disable=vmx
- ارائه مدل CPU core2duo، فعالسازی اجباری x2apic، اما عدم ارائه vmx
- --cpu host-model
- ارائه پیکربندی CPUهای میزبان به مهمان. این کار مهمان را قادر میسازد تا از بسیاری از ویژگیهای پردازندههای میزبان بهرهمند شود (کارایی بهتر)، اما در صورت مهاجرت مهمان به میزبانی بدون CPU یکسان ممکن است مشکلاتی ایجاد کند.
- --cpu numa.cell0.memory=1234,numa.cell0.cpus=0-3,numa.cell1.memory=5678,numa.cell1.cpus=4-7
- نمونهای از تعیین دو سلول NUMA. این کار ساختار XML زیر را تولید خواهد کرد:
<cpu>
<numa>
<cell cpus="0-3" memory="1234"/>
<cell cpus="4-7" memory="5678"/>
</numa>
</cpu>
- --cpu host-passthrough,cache.mode=passthrough
- نمونهای از انتقال مستقیم (pass-through) اطلاعات حافظه پنهان (cache) پردازنده میزبان.
- --cpu maximum
- ارائه پرویژگیترین CPU ممکن. هنگام اجرای مهمان با معماری متفاوت (foreign architecture)، برای نمونه مهمان riscv64 روی میزبان x86_64 مفید است. هنگام استفاده از KVM برای اجرای مهمانی با معماری یکسان توصیه نمیشود.
برای دیدن فهرستی از تمام زیرگزینههای در دسترس، از --cpu=? استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#cpu-model-and-topology
--cputune
نحو: --cputune OPTIONS
تنظیم دقیق پارامترهای CPU برای مهمان.
پیکربندی اینکه VCPU دامنه به کدامیک از پردازندههای فیزیکی میزبان سنجاق (pin) شود. نمونه فراخوانی
--cputune vcpupin0.vcpu=0,vcpupin0.cpuset=0-3,vcpupin1.vcpu=1,vcpupin1.cpuset=4-7
برای مشاهده فهرستی از تمامی زیرگزینههای موجود، از --cputune=? استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#cpu-tuning
--security, --seclabel
نحو: --security, --seclabel type=TYPE[,label=LABEL][,relabel=yes|no],...
پیکربندی تنظیمات seclabel دامنه. مقدار type میتواند 'static' یا 'dynamic' باشد. پیکربندی 'static' نیازمند یک LABEL امنیتی است. مشخص کردن LABEL بدون TYPE بیانگر پیکربندی ایستا (static) است.
برای دیدن فهرستی از تمام زیرگزینههای موجود، از --security=? استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#security-label.SS --keywrap
ساختار: --keywrap OPTIONS
تعیین XML عنصر <keywrap> دامنه، که برای عملیات مدیریت کلید رمزنگاری S390 استفاده میشود.
از --keywrap=? برای مشاهده فهرست همه زیرگزینههای موجود استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#key-wrap
--iothreads
ساختار: --iothreads OPTIONS
تعیین XML عنصر <iothreads> و/یا <iothreadids> دامنه. برای نمونه، جهت پیکربندی <iothreads>4</iothreads>، از --iothreads 4 استفاده کنید.
از --iothreads=? برای مشاهده فهرست همه زیرگزینههای موجود استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#iothreads-allocation
--features
ساختار: --features FEAT=on|off,...
فعال (on) یا غیرفعال (off) کردن عناصر در XML بخش <features> مهمان. نمونهها شامل ویژگیهای acpi، apic، eoi، privnet و hyperv هستند. چند مثال:
- --features apic.eoi=on
- فعالسازی APIC PV EOI
- --features hyperv.vapic.state=on,hyperv.spinlocks.state=off
- فعالسازی VAPIC برای hyperv، اما غیرفعالسازی spinlocks
- --features kvm.hidden.state=on
- اجازه دادن به پنهانسازی امضای ناظر KVM از سیستم مهمان
- --features pvspinlock=on
- آگاهسازی مهمان از اینکه میزبان از قفلهای اسپین فرامجازی (paravirtual spinlocks) پشتیبانی میکند؛ برای مثال با نمایانسازی سازوکار pvticketlocks.
- --features gic.version=2
- این مورد فقط برای معماریهای ARM کاربرد دارد. مقادیر مجاز "host" یا شماره نسخه هستند.
- --features smm.state=on
- این حالت مدیریت سیستم (System Management Mode یا SMM) ناظر را فعال میکند. ممکن است برخی سفتافزارهای UEFI به وجود این ویژگی نیاز داشته باشند. (QEMU فقط با نوع ماشین q35 از SMM پشتیبانی میکند.)
از --features=? برای مشاهده فهرست همه زیرگزینههای موجود استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#hypervisor-features
--clock
ساختار: --clock offset=OFFSET,TIMER_OPT=VAL,...
پیکربندی XML بخش <clock> مهمان. برخی از گزینههای پشتیبانیشده:
- --clock offset=OFFSET
- تنظیم آفست ساعت، مانند 'utc' یا 'localtime'
- --clock TIMER_present=no
- غیرفعالسازی یک تایمر بولی (boolean). در اینجا TIMER میتواند hpet، kvmclock و غیره باشد.
- --clock TIMER_tickpolicy=VAL
- تنظیم مقدار tickpolicy برای یک تایمر. TIMER در اینجا میتواند rtc، pit و غیره باشد. مقدار VAL میتواند catchup، delay و غیره باشد. برای تمام مقادیر به مستندات libvirt مراجعه کنید.
از --clock=? برای مشاهده فهرست همه زیرگزینههای موجود استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#time-keeping
--pm
ساختار: --pm OPTIONS
پیکربندی ویژگیهای مدیریت توان (power management) مهمان. مثال:
--pm suspend_to_memi.enabled=on,suspend_to_disk.enabled=off
از --pm=? برای مشاهده فهرست همه زیرگزینههای موجود استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#power-management.SS --launchSecurity
ساختار: --launchSecurity TYPE[,OPTS]
فعالسازی امنیت راهاندازی برای ماشین مهمان، مانند AMD SEV. مثالهای فراخوانی:
# این دستور از خطمشی پیشفرض 0x03 استفاده خواهد کرد # هیچ dhCert ارائه نشده است، بنابراین دادهای با سفتافزار SEV تبادل نمیشود --launchSecurity sev # خطمشی صریح 0x01 - اشکالزدایی را غیرفعال کرده و اشتراک کلید مهمان را مجاز میکند --launchSecurity sev,policy=0x01 # ارائه blob نشست دریافتشده از سفتافزار SEV # ارائه dhCert برای باز کردن یک کانال ارتباطی امن با سفتافزار SEV --launchSecurity sev,session=BASE64SESSIONSTRING,dhCert=BASE64DHCERTSTRING
فناوری SEV پیامدهای بیشتری در استفاده از دستگاههای virtio دارد، بنابراین برای مشاهده فراخوانی کامل virt-install با --launchSecurity، به بخش «مثالها (EXAMPLES)» مراجعه کنید.
برای مشاهده فهرستی از همه زیرگزینههای در دسترس، از --launchSecurity=? استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#launch-security
گزینههای نصب (INSTALLATION OPTIONS)
-c, --cdrom
ساختار: --cdrom PATH
فایل ISO یا دستگاه CDROM برای استفاده بهعنوان رسانه نصب ماشین مجازی. پس از نصب، دستگاه CDROM مجازی متصل به ماشین مجازی باقی خواهد ماند، اما رسانه ISO یا مسیر میزبان خارج (eject) میشود.
-l, --location
ساختار: -l, --location OPTIONS
منبع نصب درخت توزیع. ابزار virt-install میتواند برخی از درختهای توزیع را شناسایی کرده و یک جفت kernel/initrd قابل راهاندازی را برای آغاز نصب واکشی کند.
گزینه --location مواردی مانند --extra-args را برای آرگومانهای هسته و همچنین استفاده از --initrd-inject امکانپذیر میکند. اگر میخواهید از این گزینهها همراه با رسانه CDROM استفاده کنید، میتوانید فایل ISO را نیز به --location ارسال کنید؛ این روش برای برخی از رسانههای CDROM (و نه همه آنها) کار میکند.
مقدار LOCATION میتواند یکی از شکلهای زیر را داشته باشد:
- https://host/path
- مکان یک سرور HTTP حاوی ایمیج توزیع قابل نصب.
- <ftp://host/path>
- مکان یک سرور FTP حاوی ایمیج توزیع قابل نصب.
- ISO
- استخراج مستقیم فایلها از مسیر ISO.
- DIRECTORY
- مسیر یک دایرکتوری محلی حاوی ایمیج توزیع قابل نصب. توجه داشته باشید که این دایرکتوری پس از راهاندازی اولیه توسط مهمان قابل دسترسی نخواهد بود، بنابراین نصاب سیستمعامل برای دسترسی به ادامه رسانه نصب به روش دیگری نیاز خواهد داشت.
چند نمونه URL مختص توزیعها:
- Fedora/Red Hat Based
- https://download.fedoraproject.org/pub/fedora/linux/releases/29/Server/x86_64/os
- Debian
- https://debian.osuosl.org/debian/dists/stable/main/installer-amd64
- Ubuntu
- https://us.archive.ubuntu.com/ubuntu/dists/wily/main/installer-amd64
- Suse
- https://download.opensuse.org/pub/opensuse/distribution/leap/42.3/repo/oss
علاوه بر این، --location میتواند زیرگزینههای 'kernel' و 'initrd' را بپذیرد. اینها مسیرهایی نسبی به URL یا ISO مکان مشخصشده هستند که امکان انتخاب فایلهای خاص را برای kernel/initrd در درخت نصب فراهم میکنند. این ویژگی زمانی مفید است که virt-install/libosinfo نداند هسته را در --location مشخصشده کجا پیدا کند.
برای مثال، اگر فایل ISO ناشناختهای برای libosinfo به نام my-unknown.iso دارید که هسته آن در 'kernel/fookernel' و initrd آن در 'kernel/fooinitrd' قرار دارد، میتوانید این کار را با دستور زیر انجام دهید:
--location my-unknown.iso,kernel=kernel/fookernel,initrd=kernel/fooinitrd
نصب از طریق PXE. این گزینه صرفاً به ماشین مجازی میگوید که برای اولین بوت از طریق شبکه راهاندازی شود.
--import
صرفنظر کردن از فرایند نصب سیستمعامل، و ساخت یک مهمان بر پایه یک ایمیج دیسک موجود. دستگاهی که برای بوت استفاده میشود، اولین دستگاه مشخصشده از طریق --disk یا --filesystem است.
-x, --extra-args
سینتکس: -x, --extra-args KERNELARGS
آرگومانهای اضافی خط فرمان کرنل برای ارسال به نصاب هنگام انجام نصب مهمان از --location. یک کاربرد رایج، مشخص کردن یک فایل kickstart انکوندا برای نصبهای خودکار است، مانند: --extra-args "ks=https://myserver/my.ks"
--initrd-inject
سینتکس: --initrd-inject PATH
افزودن PATH به ریشه initrd دریافتشده با --location. این گزینه میتواند برای اجرای یک نصب خودکار بدون نیاز به میزبانی فایل kickstart روی شبکه استفاده شود: --initrd-inject=/path/to/my.ks --extra-args "ks=file:/my.ks"
--install
این یک نقطه ورود گستردهتر برای انواع مختلف عملیاتهای نصب است. این دستور چندین زیرآرگومان دارد، مشابه --disk و گزینههای نظیر آن. این گزینه منحصراً برای عملیاتهای نصب ماشین مجازی بوده و اساساً اولین بوت را پیکربندی میکند.
سادهترین روش استفاده، مثلاً برای نصب fedora29 بدین صورت است:
--install fedora29
و virt-install نشانی URL مربوط به --location را از libosinfo دریافت کرده و مقادیر پیشفرض را از آنجا مقداردهی میکند.
زیرگزینههای موجود:
- os=
- این همان گزینه نصب سیستمعامل است که در بالا توضیح داده شد. روش صریح برای مشخص کردن آن --install os=fedora29 است. در صورتی که گزینهای مشخص نشود، os= مقدار پیشفرض خواهد بود.
- kernel=, initrd=
- مشخص کردن
یک جفت kernel و initrd
برای
استفاده به
عنوان
رسانه نصب.
این
فایلها
قبل از بوت
کردن ماشین
مجازی در یک
مکان موقت
کپی
میشوند،
بنابراین
میتوان
آنها را با
--initrd-inject ترکیب
کرد و رسانه
مبدأ شما
دستنخورده
باقی
میماند. در
صورت نیاز،
رسانه به یک
اتصال راه
دور
بارگذاری
خواهد شد.
نمونه استفاده با مسیرهای فایلسیستم محلی: --install kernel=/path/to/kernel,initrd=/path/to/initrd
نمونه استفاده با مسیرهای شبکه. ابتدا kernel/initrd بهصورت محلی دانلود شده و سپس به عنوان مسیرهای فایلسیستم محلی به ماشین مجازی ارسال میشوند: --install kernel=https://127.0.0.1/tree/kernel,initrd=https://127.0.0.1/tree/initrd
توجه داشته باشید، این موارد صرفاً برای بوت در زمان نصب هستند. اگر میخواهید کرنل مورد استفاده برای بوت دائمی ماشین مجازی را تنظیم کنید، از گزینه --boot استفاده کنید.
- kernel_args=, kernel_args_overwrite=yes|no
- مشخص کردن آرگومانهای کرنل در زمان نصب (XML مربوط به <cmdline> در libvirt). این موارد را میتوان با گزینههایی نظیر kernel/initrd یا رسانه --location ترکیب کرد. بهطور پیشفرض، kernel_args دقیقاً مانند --extra-args عمل میکند و به آرگومانهایی که virt-install بهطور پیشفرض برای بیشتر نصبهای --location تنظیم میکند، الحاق (append) خواهد شد. اگر میخواهید مقدار پیشفرض virt-install را لغو و بازنویسی کنید، علاوه بر این kernel_args_overwrite=yes را مشخص نمایید.
- bootdev=
- دستگاه بوت
برای مرحله
نصب (hd، cdrom، floppy، network)
را مشخص
میکند. این
گزینه با XML
مربوط به
<os><boot dev=X> در libvirt
نگاشت
میشود.
اگر میخواهید از یک cdrom یا شبکه نصب کنید، احتمالاً سادهتر است و سازگاری بهتری با نسخههای پیشین دارد که صرفاً از --cdrom یا --pxe استفاده کنید، اما این گزینه در صورت نیاز کنترل دقیقتری را روی فرایند نصب فراهم میکند.
- no_install=yes|no
- به virt-install اعلام
میکند که
در عمل هیچ
نصبی در حال
انجام نیست
و شما فقط
میخواهید
ماشین
مجازی را
ایجاد کنید.
گزینه --import
صرفاً یک
نام مستعار
برای این
مورد است،
همانند
مشخص کردن
--boot بدون هیچ
گزینه نصب
دیگری.
گزینه
منسوخشده
--live نیز
معادل '--cdrom $ISO --install
no_install=yes' است.
نصب مجدد یک VM موجود. DOMAIN میتواند نام، UUID یا شماره ID یک VM باشد. virt-install پرونده XML دامنه را از libvirt دریافت کرده، تغییرات پیکربندی نصبِ مشخصشده را اعمال میکند، VM را برای فرایند نصب بوت کرده و سپس تقریباً به همان XML اولیه بازمیگرداند.
تنها گزینههای مرتبط با نصب پردازش میشوند؛ تمام گزینههای دیگرِ پیکربندی VM مانند --name، --disk و غیره بهطور کامل نادیده گرفته میشوند.
اگر --reinstall به همراه --cdrom استفاده شود، در صورت در دسترس بودن یک CDROM متصل به VM، از همان استفاده خواهد شد؛ در غیر این صورت یک دستگاه CDROM دائمی اضافه میشود.
--unattended
نحو: --unattended [OPTIONS]
انجام یک نصب بدون نظارت (unattended) با استفاده از پشتیبانی اسکریپت نصب در libosinfo. این قابلیت در اصل پایگاهدادهای از اسکریپتهای نصب خودکار برای توزیعهای گوناگون است: Red Hat kickstarts، اسکریپتنویسی نصاب Debian، نصبهای بدون نظارت Windows، و احتمالاً موارد دیگر. سادهترین روش فراخوانی، ترکیب آن با --install است، مانند:
--install fedora29 --unattended
یک نصب Windows بدین صورت خواهد بود:
--cdrom /path/to/my/windows.iso --unattended
زیرگزینهها عبارتاند از:
- profile=
- انتخاب اینکه از کدام نمایه (profile) بدون نظارت libosinfo استفاده شود. بیشتر توزیعها دارای نمایههای 'desktop' و 'jeos' هستند. در صورت عدم تعیین، virt-install بهطور پیشفرض از 'desktop' استفاده خواهد کرد.
- admin-password-file=
- فایلی که برای تنظیم گذرواژه admin/root سیستمعامل VM استفاده میشود. این گزینه میتواند بهصورت "admin-password-file=/path/to/password-file" یا بهصورت "admin-password-file=/dev/fd/n" استفاده شود که n توصیفگر فایل (file descriptor) پرونده گذرواژه است. توجه داشته باشید که فقط خط اول فایل، شامل هرگونه نویسه فاصله (whitespace) و بدون احتساب خط جدید (new-line) در نظر گرفته خواهد شد.
- user-login=
- نام کاربری برای ورود به VM. در صورت عدم تعیین، virt-install بهطور پیشفرض از نام کاربری فعلی میزبان شما استفاده میکند. توجه داشته باشید که هنگام اجرای virt-install بهعنوان "root"، تعیین این گزینه الزامی است.
- user-password-file=
- فایلی که برای تنظیم گذرواژه کاربر VM استفاده میشود. این گزینه میتواند بهصورت "user-password-file=/path/to/password-file" یا بهصورت "user-password-file=/dev/fd/n" استفاده شود که n توصیفگر فایل پرونده گذرواژه است. نام کاربری، یا همان user-login مشخصشده است یا نام کاربری فعلی میزبان شما. توجه داشته باشید که فقط خط اول فایل، شامل هرگونه نویسه فاصله و بدون احتساب خط جدید در نظر گرفته خواهد شد.
- product-key=
- تنظیم یک کلید محصول (product key) ویندوز
--cloud-init
ارسال متادیتای cloud-init به VM. یک فایل ISO از نوع NoCloud مربوط به cloud-init تولید شده و بهعنوان یک دستگاه CDROM به VM متصل میشود. این دستگاه تنها برای بوت اول متصل میگردد. این گزینه بهویژه برای ایمیجهای ابری توزیعها که بهطور پیشفرض حسابهای کاربری ورود آنها قفل است مفید است؛ --cloud-init راهکاری برای مقداردهی اولیه این حسابهای کاربری مانند تنظیم گذرواژه root فراهم میکند.
سادهترین حالت فراخوانی صرفاً استفاده ساده از --cloud-init بدون هیچ زیرگزینهای است؛ این حالت معادل --cloud-init root-password-generate=on,disable=on میباشد. برای آگاهی از نحوه کار، توضیحات آن زیرگزینهها را ببینید.
از --cloud-init=? برای دیدن فهرست تمام زیرگزینههای در دسترس استفاده کنید.
زیرگزینهها عبارتاند از:
- root-password-generate=on
- تولید یک گذرواژه root جدید برای VM. در صورت استفاده، virt-install گذرواژه تولیدشده را در کنسول چاپ کرده و ۱۰ ثانیه مکث میکند تا به کاربر فرصت مشاهده و رونوشت برداشتن از آن را بدهد.
- disable=on
- غیرفعالسازی cloud-init در VM برای بوتهای بعدی. بدون این گزینه، ممکن است cloud-init در هر بار بوت، احراز هویت را بازنشانی کند.
- root-password-file=
- فایلی که برای تنظیم گذرواژه root در VM استفاده میشود. این گزینه میتواند بهصورت "root-password-file=/path/to/password-file" یا بهصورت "root-password-file=/dev/fd/n" استفاده شود که n توصیفگر فایل پرونده گذرواژه است. توجه داشته باشید که فقط خط اول فایل، شامل هرگونه نویسه فاصله و بدون احتساب خط جدید در نظر گرفته خواهد شد.
- meta-data=
- مشخص کردن یک فایل meta-data مربوط به cloud-init برای افزودن مستقیم به iso. سایر گزینههای پیکربندی meta-data در خط فرمان --cloud-init نادیده گرفته میشوند. میتواند مسیر یک فایل محلی یا URL باشد.
- user-data=
- مشخص کردن یک فایل user-data مربوط به cloud-init برای افزودن مستقیم به iso. سایر گزینههای پیکربندی user-data در خط فرمان --cloud-init نادیده گرفته میشوند. میتواند مسیر یک فایل محلی یا URL باشد.
- root-ssh-key=
- مشخص کردن یک کلید عمومی برای تزریق به مهمان، جهت فراهم کردن دسترسی ssh به حساب کاربری root. مثال: root-ssh-key=/home/user/.ssh/id_rsa.pub
- clouduser-ssh-key
- مشخص کردن یک کلید عمومی برای تزریق به مهمان، جهت فراهم کردن دسترسی ssh به حساب کاربری پیشفرض cloud-init. نام این حساب در هر ایمیج ابری توزیعها متفاوت است. برخی از موارد متداول در اینجا مستند شدهاند: https://docs.openstack.org/image-guide/obtain-images.html
- network-config=
- مشخص کردن
یک فایل network-config
مربوط به cloud-init
برای
افزودن
مستقیم به iso.
میتواند
مسیر یک
فایل محلی
یا URL باشد.
نحو: --boot BOOTOPTS
بهصورت اختیاری پیکربندی راهاندازی ماشین مجازی پس از نصب را مشخص میکند. این گزینه امکان تعیین ترتیب دستگاههای راهاندازی، راهاندازی دائمی از kernel/initrd همراه با آرگومانهای اختیاری هسته، و فعالسازی منوی راهاندازی BIOS را فراهم میکند (نیازمند libvirt نسخهٔ 0.8.3 یا بالاتر است).
گزینهٔ --boot میتواند علاوه بر سایر گزینههای نصب (مانند --location، --cdrom و غیره) یا بهتنهایی مشخص شود. در حالت اخیر، رفتار آن مشابه گزینهٔ نصب --import است: هیچ مرحلهٔ «نصبی» وجود ندارد، مهمان فقط همانطور که مشخص شده ایجاد و راهاندازی میشود.
چند مثال:
- --boot cdrom,fd,hd,network
- اولویت دستگاههای راهاندازی را به ترتیب نخست cdrom، نخستین فلاپی، نخستین دیسک سخت و راهاندازی شبکهٔ PXE تعیین میکند. نکته: مهمانهای s390x تنها از یک دستگاه راهاندازی پشتیبانی میکنند، بنابراین همهچیز به جز نوع دستگاه اول نادیده گرفته خواهد شد.
- --boot kernel=KERNEL,initrd=INITRD,kernel_args="console=/dev/ttyS0"
- کاری میکند که مهمان بهطور دائم از یک جفت kernel/initrd محلی، همراه با گزینههای هستهٔ مشخصشده راهاندازی شود.
- --boot kernel=KERNEL,initrd=INITRD,dtb=DTB
- کاری میکند که مهمان بهطور دائم از یک جفت kernel/initrd محلی همراه با یک باینری درخت دستگاه (DTB) خارجی راهاندازی شود. DTB میتواند برای برخی پیکربندیهای غیر x86 مانند ARM یا PPC لازم باشد.
- --boot loader=BIOSPATH
- استفاده از BIOSPATH بهعنوان BIOS ماشین مجازی.
- --boot bootmenu.enable=on,bios.useserial=on
- فعالسازی منوی راهاندازی bios، و فعالسازی ارسال خروجی متنی bios از طریق کنسول سریال.
- --boot init=INITPATH
- مسیر به باینریای که مهمان کانتینری آن را بهعنوان init اجرا خواهد کرد. اگر یک --filesystem ریشه مشخص شده باشد، virt-install بهطور پیشفرض از /sbin/init استفاده خواهد کرد، در غیر این صورت مقدار پیشفرض /bin/sh خواهد بود.
- --boot uefi, --boot uefi=on
- ماشین مجازی را برای راهاندازی از UEFI پیکربندی میکند. برای اینکه virt-install پارامترهای صحیح UEFI را تشخیص دهد، libvirt باید باینریهای شناختهشدهٔ UEFI را از طریق XML مربوط به domcapabilities اعلان کند، بنابراین این قابلیت احتمالاً تنها در صورت استفاده از بستههای توزیع بهدرستی پیکربندیشده کار خواهد کرد. این روش، راهاندازی توصیهشدهٔ UEFI است.
- --boot uefi=off
- در صورتی که ماشین مجازی معمولاً بهطور پیشفرض از UEFI استفاده میکند، از آن استفاده نشود.
- --boot uefi,firmware.feature0.name=secure-boot,firmware.feature0.enabled=yes,firmware.feature1.name=enrolled-keys,firmware.feature1.enabled=yes
- ماشین مجازی را برای راهاندازی از UEFI با فعال بودن پشتیبانی از Secure Boot پیکربندی میکند. تنها سیستمعاملهای امضاشده قادر به راهاندازی با این پیکربندی خواهند بود.
- --boot uefi,firmware.feature0.name=secure-boot,firmware.feature0.enabled=no
- ماشین
مجازی را
برای
راهاندازی
از UEFI با
غیرفعال
بودن
پشتیبانی
از Secure Boot
پیکربندی
میکند. این
پیکربندی
امکان
اجرای هر دو
نوع
سیستمعاملهای
امضاشده و
امضانشده
را فراهم
میسازد.
اطلاعات بیشتر دربارهٔ قابلیتهای سفتافزاری secure-boot و enrolled-keys و نحوهٔ استفاده از آنها برای اثرگذاری بر انتخاب سفتافزار در نشانی زیر در دسترس است: https://libvirt.org/kbase/secureboot.html
- --boot loader=/.../OVMF_CODE.fd,loader.readonly=yes,loader.type=pflash,nvram.template=/.../OVMF_VARS.fd,loader_secure=no
- مشخص میکند که ماشین مجازی از باینری سفارشی OVMF بهعنوان سفتافزار راهاندازی، نگاشتهشده بهصورت تراشهٔ فلش مجازی، استفاده کند. علاوه بر این، از libvirt درخواست میکند تا varstore اختصاصی UEFI ماشین مجازی را از الگوی varstore سفارشی "/.../OVMF_VARS.fd" ایجاد کند. این راهاندازی توصیه نمیشود، و تنها باید زمانی استفاده شود که --boot uefi از باینریهای UEFI شما اطلاعی نداشته باشد.
برای مشاهدهٔ فهرستی از تمام زیرگزینههای موجود از --boot=? استفاده کنید. جزئیات کامل در: https://libvirt.org/formatdomain.html#operating-system-booting
--idmap
نحو: --idmap OPTIONS
اگر در پیکربندی مهمان یک نگاشت UID یا GID تعریف شده باشد، فضای نام 'user' برای اعمال آنها فعال خواهد شد. یک نگاشت مناسب پیکربندیشده برای UID/GID، پیشنیازی برای ایمنسازی کانتینرها در صورت نبود محدودسازی sVirt است.
میتوان --idmap را برای فعالسازی فضای نام کاربر برای کانتینرهای LXC مشخص کرد. مثال:
--idmap uid.start=0,uid.target=1000,uid.count=10,gid.start=0,gid.target=1000,gid.count=10
برای دیدن فهرستی از تمام زیرگزینههای موجود از --idmap=? استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#container-boot.SH "گزینههای سیستمعامل مهمان (GUEST OS OPTIONS)"
--osinfo, --os-variant
نحو: --osinfo [OSNAME|OPT1=VAL1,...]
پیکربندی مهمان را برای یک سیستمعامل خاص بهینهسازی میکند. در بیشتر موارد، یک سیستمعامل باید مشخص شده یا از طریق رسانهٔ نصب تشخیص داده شود تا ویژگیهای حیاتی برای کارایی مانند virtio فعال شوند.
سادهترین شیوهٔ استفاده --osinfo OSNAME یا --os-variant OSNAME است، برای نمونه --osinfo fedora32. زیرگزینههای پشتیبانیشده عبارتند از:
- name=, short-id=
- نام یا شناسهٔ کوتاه (short-id) سیستمعامل از libosinfo. مثالها: fedora32، win10
- id=
- شناسهٔ کامل libosinfo به سبک URL. برای نمونه، name=win10 همانند id=http://microsoft.com/win/10 است.
- detect=on|off
- اینکه آیا virt-install باید برای تشخیص سیستمعامل از رسانهٔ نصب مشخصشده تلاش کند یا خیر. در حال حاضر تشخیص فقط برای نصبهای از طریق URL و CDROM انجام میشود و ۱۰۰٪ قابلاطمینان نیست.
- require=on|off
- اگر on باشد، در صورتی که هیچ مقداری برای سیستمعامل تنظیم یا تشخیص داده نشود، virt-install با خطا متوقف میشود.
چند مثال کاربردی:
- --osinfo detect=on,require=on
- این به virt-install میگوید که برای تشخیص از رسانهٔ نصب تلاش کند، اما اگر موفق نشد صراحتاً با شکست متوقف شود. این کار تضمین میکند که فراخوانیهای virt-install شما به یک پیکربندی با کارایی ضعیف عقبنشینی نکنند.
- --osinfo detect=on,name=OSNAME
- تلاش برای تشخیص سیستمعامل از رسانهٔ نصب، اما در صورت عدم موفقیت، استفاده از OSNAME به عنوان جایگزین پشتیبان (fallback).
اگر هر مقدار دستی برای --osinfo مشخص شود، حالت پیشفرض این است که تمام تنظیمات دیگر خاموش یا تعییننشده باشند.
بهطور پیشفرض، virt-install همیشه --osinfo detect=on را برای رسانههای نصب مناسب امتحان میکند. اگر هیچ سیستمعاملی تشخیص داده نشود، در اغلب موارد متداول با خطا متوقف خواهد شد. این خطای مهلک در سال ۲۰۲۲ افزوده شد. میتوانید با استفاده از مثال جایگزین بالا یا با غیرفعال کردن گزینهٔ require این مشکل را دور بزنید. اگر فقط میخواهید هرچه سریعتر به رفتار قدیمی غیرمهلک بازگردید، متغیر محیطی VIRTINSTALL_OSINFO_DISABLE_REQUIRE=1 را تنظیم کنید.
برای دریافت فهرست گونههای پذیرفتهشدهٔ سیستمعامل، از دستور virt-install --osinfo list استفاده کنید. برای خروجیهای بیشتر osinfo-query os را ببینید.
نکته: --osinfo و --os-variant نامهای مستعار یکدیگر هستند. --osinfo شیوهٔ نامگذاری ترجیحی به سبک جدید است.
گزینههای فضای ذخیرهسازی (STORAGE OPTIONS)
--disk
نحو: --disk OPTIONS
رسانهای را برای استفاده به عنوان فضای ذخیرهسازی مهمان، همراه با گزینههای گوناگون مشخص میکند. قالب کلی یک رشتهٔ دیسک به این صورت است:
--disk opt1=val1,opt2=val2,...
سادهترین فراخوانی برای ایجاد یک تصویر دیسک جدید ۱۰ گیگابایتی و دستگاه دیسک مرتبط:
--disk size=10
دستور virt-install یک نام مسیر ایجاد میکند و آن را در مکان پیشفرض تصاویر هایپروایزر قرار میدهد. برای مشخص کردن رسانه، دستور میتواند به این صورت باشد:
--disk /some/storage/path[,opt1=val1]...
یا صراحتاً یکی از آرگومانهای زیر را مشخص کند:
- path
- مسیری به یک
رسانهٔ
ذخیرهسازی
برای
استفاده،
خواه موجود
باشد یا نه.
رسانهٔ
موجود
میتواند
یک فایل یا
دستگاه
بلوکی باشد.
مشخص کردن یک مسیر ناموجود به معنی تلاش برای ایجاد فضای ذخیرهسازی جدید است و نیاز به تعیین مقدار 'size' خواهد داشت. حتی برای میزبانهای دوردست، virt-install تلاش میکند از APIهای ذخیرهسازی libvirt برای ایجاد خودکار مسیر دادهشده استفاده کند.
اگر هایپروایزر پشتیبانی کند، path میتواند یک URL شبکه نیز باشد، مانند https://example.com/some-disk.img . برای مسیرهای شبکه، هایپروایزر مستقیماً به فضای ذخیرهسازی دسترسی پیدا میکند و هیچ چیزی به صورت محلی بارگیری نمیشود.
- pool
- نام یک pool ذخیرهسازی موجود در libvirt برای ایجاد فضای ذخیرهسازی جدید روی آن. نیازمند مشخص کردن مقدار 'size' است.
- vol
- یک حجم (volume) ذخیرهسازی موجود در libvirt برای استفاده. این مورد به صورت 'poolname/volname' مشخص میشود.
گزینههایی که هنگام ایجاد فضای ذخیرهسازی اعمال میشوند:
- size
- اندازه (به GiB) برای استفاده در صورت ایجاد فضای ذخیرهسازی جدید
- sparse
- اینکه آیا
از تخصیص
کامل فضای
ذخیرهسازی
جدید
صرفنظر
شود یا خیر.
مقدار آن 'yes'
یا 'no' است.
پیشفرض 'yes'
است (تخصیص
کامل انجام
ندهد)، مگر
اینکه توسط
نوع فضای
ذخیرهسازی
زیربنایی
پشتیبانی
نشود.
زمان اولیهای که صرف تخصیص کامل دیسک مجازی مهمان میشود (sparse=no)، معمولاً با زمان سریعتر نصب در داخل مهمان جبران خواهد شد. بنابراین استفاده از این گزینه برای تضمین کارایی بالا به طور مداوم و جلوگیری از خطاهای ورودی/خروجی (I/O) در مهمان در صورت پر شدن سامانه پرونده میزبان توصیه میشود.
- format
- قالب تصویر
دیسک. برای
حجمهای
فایلی، این
مقدار
میتواند
'raw'، 'qcow2'، 'vmdk' و
غیره باشد.
انواع
قالبهای
ممکن را در
https://libvirt.org/storage.html
ببینید. این
مقدار اغلب
به مقدار
driver_type نیز
نگاشت
میشود.
اگر هنگام ایجاد تصاویر فایلی مشخص نشود، پیشفرض آن 'qcow2' خواهد بود.
در صورت ایجاد فضای ذخیرهسازی، این قالبِ تصویر جدید خواهد بود. اگر از یک تصویر موجود استفاده شود، این گزینه بر تشخیص خودکار قالب توسط libvirt اولویت مییابد.
- backing_store
- مسیر دیسکی که به عنوان backing store برای تصویر تازه ایجادشده استفاده میشود.
- backing_format
- قالب تصویر دیسک مربوط به backing_store
چند مثال از زیرگزینههای پیکربندی دستگاه:
- device
- نوع دستگاه دیسک. مقادیر نمونه عبارتند از 'cdrom'، 'disk'، 'lun' یا 'floppy'. پیشفرض 'disk' است.
- boot.order
- نصب مهمان با چند دیسک برای بوت شدن صحیح پس از نصب به این پارامتر نیاز خواهد داشت. پارامتر boot.order مقادیر 1,2,3,... را میپذیرد. دستگاههای با مقدار کمتر اولویت بالاتری دارند. این گزینه برای سایر انواع دستگاههای با قابلیت بوت نیز اعمال میشود.
- target.bus یا bus
- نوع گذرگاه (bus) دیسک. مقادیر نمونه عبارتند از 'ide'، 'sata'، 'scsi'، 'usb'، 'virtio' یا 'xen'. پیشفرض به هایپروایزر بستگی دارد، زیرا همهٔ هایپروایزرها از همهٔ انواع گذرگاه پشتیبانی نمیکنند.
- readonly
- تنظیم درایو به عنوان فقطخواندنی (مقادیر 'on' یا 'off' را میپذیرد)
- تنظیم درایو به عنوان اشتراکگذاریپذیر (مقادیر 'on' یا 'off' را میپذیرد)
- cache
- حالت حافظهٔ موقت (cache) که باید استفاده شود. pagecache میزبان حافظهٔ موقت را تأمین میکند. مقدار cache میتواند 'none'، 'writethrough'، 'directsync'، 'unsafe' یا 'writeback' باشد. حالت 'writethrough' کَشکردن خواندن را فراهم میکند. 'writeback' کَشکردن خواندن و نوشتن را فراهم میسازد. 'directsync' حافظهٔ pagecache میزبان را دور میزند. 'unsafe' ممکن است همهٔ محتوا را کَش کرده و درخواستهای flush مهمان را نادیده بگیرد..TP driver.discard مشخص میکند که آیا درخواستهای discard (شناختهشده با عنوان "trim" یا "unmap") نادیده گرفته شوند یا به سیستمفایل ارسال گردند. مقدار میتواند "unmap" (اجازه به ارسال درخواست discard) یا "ignore" (نادیده گرفتن درخواست discard) باشد. از نسخهٔ 1.0.6 به بعد (تنها برای QEMU و KVM).
- driver.name
- نام درایوری که هایپروایزر باید هنگام دسترسی به فضای ذخیرهسازی مشخصشده استفاده کند. معمولاً نیازی به تنظیم توسط کاربر ندارد.
- driver.type
- قالب/نوع درایوری که هایپروایزر باید هنگام دسترسی به فضای ذخیرهسازی مشخصشده استفاده کند. معمولاً نیازی به تنظیم توسط کاربر ندارد.
- driver.io
- بکاند ورودی/خروجی (IO) دیسک. میتواند یکی از مقادیر "threads"، "native" یا "io_uring" باشد.
- driver.error_policy
- نحوهٔ واکنش سیستمعامل مهمان هنگام مواجهه با خطای نوشتن. میتواند یکی از مقادیر "stop"، "ignore" یا "enospace" باشد.
- serial
- شماره سریال دستگاه دیسک شبیهسازیشده. این مقدار در سیستمهای مهمان لینوکسی برای تنظیم پیوندهای نمادین /dev/disk/by-id استفاده میشود. یک نمونه شماره سریال میتواند این باشد: WD-WMAP9A966149
- source.startupPolicy
- تعیین میکند که در صورت عدم دسترسی به فایل منبع، چه رفتاری با دیسک صورت گیرد.
- snapshot
- رفتار پیشفرض دیسک را در حین ایجاد اسنپشاتهای دیسک تعیین میکند.
برای مشاهدهٔ برخی کاربردها، بخش مثالها را ببینید. این گزینه جایگزین گزینههای منسوخشدهٔ -f/--file، -s/--file-size، --nonsparse و --nodisks است.
برای دیدن فهرستی از تمامی زیرگزینههای در دسترس، از --disk=? استفاده کنید. جزئیات کامل در: https://libvirt.org/formatdomain.html#hard-drives-floppy-disks-cdroms
--filesystem
دایرکتوری مشخصی از سیستم میزبان را برای اشتراکگذاری در سیستم مهمان معین میکند. سادهترین حالت فراخوانی عبارت است از:
--filesystem /source/on/host,/target/point/in/guest
این حالت برای نسخههای اخیر QEMU و سیستمعاملهای مهمان لینوکسی یا کانتینرهای LXC کار خواهد کرد. در QEMU، نقطهٔ هدف صرفاً یک راهنمای اتصال (mount hint) در sysfs است و بهصورت خودکار متصل (mount) نخواهد شد.
چند نمونه از زیرگزینهها:
- type
- نوع دایرکتوری منبع. مقادیر معتبر عبارتند از 'mount' (پیشفرض) یا 'template' برای الگوهای OpenVZ.
- accessmode یا mode
- حالت دسترسی به دایرکتوری منبع از سیستمعامل مهمان. تنها همراه با QEMU و type=mount استفاده میشود. حالتهای معتبر عبارتند از 'mapped' (پیشفرض)، 'passthrough' یا 'squash'. برای اطلاعات بیشتر، مستندات libvirt domain XML را ببینید.
- source
- دایرکتوری روی میزبان جهت اشتراکگذاری.
- target
- محل اتصال (mount) برای استفاده در مهمان.
برای مشاهدهٔ فهرستی از تمامی زیرگزینههای در دسترس از --filesystem=? استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#filesystems
گزینههای شبکه (NETWORKING OPTIONS)
-w, --network
ساختار: -w, --network OPTIONS
اتصال سیستم مهمان به شبکهٔ میزبان. نمونههایی برای مشخص کردن نوع شبکه:
- bridge=BRIDGE
- اتصال به یک دستگاه پل (bridge) در میزبان با نام BRIDGE. اگر میزبان پیکربندی شبکهٔ ایستا دارد و مهمان به اتصال کامل ورودی و خروجی به/از شبکهٔ محلی (LAN) نیاز دارد، از این گزینه استفاده کنید. همچنین اگر قرار است مهاجرت زنده (live migration) برای این مهمان به کار رود، از این گزینه استفاده کنید.
- network=NAME
- اتصال به یک شبکهٔ مجازی در میزبان به نام NAME. شبکههای مجازی را میتوان با استفاده از ابزار خط فرمان virsh فهرست، ایجاد یا حذف کرد. در یک نصب پیشفرض و تغییرنیافته از libvirt، معمولاً یک شبکهٔ مجازی با نام default وجود دارد. اگر میزبان دارای شبکهٔ پویا است (مانند NetworkManager) یا از شبکهٔ بیسیم استفاده میکند، از یک شبکهٔ مجازی استفاده نمایید. ترافیک مهمان از طریق هر اتصالی که فعال باشد به شبکهٔ محلی (LAN) اصطلاحاً NAT خواهد شد.
- type=direct,source=IFACE[,source.mode=MODE]
- اتصال مستقیم به رابط کاربری میزبان IFACE با استفاده از macvtap.
- user
- اتصال به LAN با استفاده از SLIRP. تنها زمانی از این گزینه استفاده کنید که مهمان QEMU را بهعنوان یک کاربر بدون امتیاز اجرا میکنید. این حالت شکل بسیار محدودی از NAT را فراهم میکند.
- none
- به virt-install اعلام میکند که هیچ رابط شبکهٔ پیشفرضی اضافه نکند.
اگر --network نادیده گرفته شود، یک کارت شبکه (NIC) واحد در مهمان ایجاد خواهد شد. اگر دستگاه bridge در میزبان همراه با یک رابط فیزیکی متصل وجود داشته باشد، از آن برای برقراری ارتباط استفاده میشود. در غیر این صورت، از شبکهٔ مجازی موسوم به default استفاده خواهد شد. این گزینه را میتوان چندین بار برای پیکربندی بیش از یک کارت شبکه مشخص کرد.
چند نمونه از زیرگزینهها:
- model.type یا model
- مدل دستگاه شبکه آنطور که توسط سیستم مهمان دیده میشود. مقدار میتواند هر مدل کارت شبکهای باشد که توسط هایپروایزر پشتیبانی میشود، مانند: 'e1000'، 'rtl8139'، 'virtio' و...
- mac.address یا mac
- آدرس MAC ثابت برای مهمان؛ در صورتی که این پارامتر نادیده گرفته شود یا مقدار RANDOM تعیین گردد، یک آدرس مناسب بهصورت تصادفی تولید خواهد شد. در ماشینهای مجازی Xen الزامی است که ۳ جفت نخست آدرس MAC توالی '00:16:3e' باشد، در حالی که در ماشینهای مجازی QEMU یا KVM باید '52:54:00' باشد.
- filterref.filter
- کنترل فایروال و پالایش شبکه در libvirt. مقدار میتواند هر nwfilter تعریفشده توسط زیرفرمانهای 'nwfilter' در virsh باشد. فیلترهای موجود را میتوان با اجرای دستور 'virsh nwfilter-list' فهرست کرد، مانند: 'clean-traffic'، 'no-mac-spoofing' و...
- گزینههای virtualport.*
- پیکربندی
نمایهٔ
درگاه
مجازی
دستگاه (virtual port profile).
این گزینه
برای
پیکربندیهای
802.Qbg، 802.Qbh، midonet و openvswitch
به کار
میرود.
برای مشاهدهٔ فهرستی از تمامی زیرگزینههای در دسترس از --network=? استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#network-interfaces
این گزینه جایگزین گزینههای منسوخشدهٔ -m/--mac، -b/--bridge و --nonetworks است.
- hostdev=HOSTDEV
- دستگاه nodedev
ارجاعشده
را
بهعنوان
منبع برای
type=hostdev
استفاده
میکند،
همانطور
که در اینجا
شرح داده
شده است:
https://libvirt.org/formatdomain.html#pci-passthrough
برای آگاهی از ساختار HOSTDEV، مستندات --hostdev را ببینید.
- portForward=[ADDRESS:]HOSTPORT[:GUESTPORT][/PROTO]
- گزینهای
سادهتر
برای مشخص
کردن
فوروارد
پورت (port forwarding) در
شبکههای
--network passt. ساختار
آن تقریباً
با ساختار
podman run -p یکسان
است. HOSTPORT
میتواند
بهصورت یک
محدوده
مانند 7000-8000
نمایش داده
شود، اما GUESTPORT
فقط
میتواند
یک پورت
منفرد باشد.
اگر GUESTPORT
ارائه
نشود،
پورتهای
میزبان و
مهمان
یکسان فرض
میشوند.
مثالها:
--network passt,portForward=8080:80 \ --network passt,portForward0=7000-8000/udp,portForward1=127.0.0.1:2222:22 \
اگر هیچ گزینهٔ گرافیکی مشخص نشده باشد، در صورتی که متغیر محیطی DISPLAY تنظیم شده باشد، virt-install تلاش میکند گرافیک مناسب را انتخاب کند، در غیر این صورت از '--graphics none' استفاده میشود.
--graphics
نحو: --graphics TYPE,opt1=arg1,opt2=arg2,...
پیکربندی نمایش گرافیکی را مشخص میکند. این گزینه هیچ سختافزار مجازیای را پیکربندی نمیکند، بلکه تنها نحوهٔ دسترسی به نمایشگر گرافیکی مهمان را معین میسازد. به طور معمول کاربر نیازی به مشخص کردن این گزینه ندارد؛ virt-install تلاش میکند تا یک پیشفرض کارآمد را انتخاب کرده و یک اتصال مناسب برقرار کند.
قالب کلی یک رشتهٔ گرافیکی به صورت زیر است:
--graphics TYPE,opt1=arg1,opt2=arg2,...
برای نمونه:
--graphics vnc,password=foobar
برخی از مقادیر پشتیبانیشده برای TYPE:
- vnc
- یک کنسول مجازی در مهمان راهاندازی کرده و آن را به عنوان یک کارساز VNC در میزبان صادر میکند. مگر اینکه پارامتر port نیز ارائه شده باشد، کارساز VNC روی نخستین شمارهٔ درگاه آزاد از 5900 به بالا اجرا خواهد شد. نمایشگر واقعی VNC تخصیصیافته را میتوان با استفاده از دستور vncdisplay در virsh به دست آورد (یا میتوان از virt-viewer(1) استفاده کرد که این جزئیات را برای استفاده مدیریت میکند).
- spice
- کنسول
مهمان را با
استفاده از
پروتکل Spice
صادر
میکند.
پروتکل Spice
قابلیتهای
پیشرفتهای
مانند
جریان
دادهٔ صوتی
و
دستگاههای
USB و همچنین
عملکرد
گرافیکی
بهبودیافته
را فراهم
میکند.
استفاده از نوع گرافیکی spice به گونهای عمل میکند که گویی این آرگومانها داده شدهاند:
--video qxl --channel spicevmc
- none
- هیچ کنسول گرافیکی برای مهمان تخصیص داده نخواهد شد. مهمانها به احتمال زیاد نیاز خواهند داشت که یک کنسول متنی روی نخستین درگاه سریال پیکربندی داشته باشند (این کار میتواند از طریق گزینهٔ --extra-args انجام شود). از دستور 'virsh console NAME' میتوان برای اتصال به دستگاه سریال استفاده کرد.
برخی از زیرگزینههای پشتیبانیشده:
- port
- درخواست یک شماره درگاه دائمی و با تخصیص ایستا برای کنسول مهمان. این زیرگزینه توسط 'vnc' و 'spice' استفاده میشود.
- tlsPort
- مشخص کردن tlsPort مربوط به spice.
- websocket
- درخواست یک
درگاه WebSocket
مربوط به VNC
برای کنسول
مهمان.
اگر -1 مشخص شود، درگاه WebSocket به صورت خودکار تخصیص مییابد.
این زیرگزینه توسط 'vnc' و 'spice' استفاده میشود.
- listen
- نشانی برای
گوش فرا
دادن به
اتصالات VNC/Spice.
مقدار
پیشفرض
معمولاً 127.0.0.1
(تنها localhost)
است، اما
برخی از
ناظران
مجازیسازی
اجازه
میدهند
این مورد به
صورت
سراسری
تغییر کند
(برای
نمونه،
مقدار
پیشفرض
راهانداز
qemu در /etc/libvirt/qemu.conf
قابل تغییر
است). برای
مجاز کردن
دسترسی از
ماشینهای
دیگر، از 0.0.0.0
استفاده
کنید.
از 'none' استفاده کنید تا مشخص شود کارساز نمایش نباید روی هیچ درگاهی گوش فرا دهد. کارساز نمایش تنها به صورت محلی از طریق سوکت یونیکس libvirt در دسترس خواهد بود (برای نمونه، virt-viewer با --attach).
از 'socket' استفاده کنید تا ماشین مجازی روی یک مسیر سوکت یونیکس ایجادشده توسط libvirt در سیستمفایل میزبان گوش فرا دهد.
این زیرگزینه توسط 'vnc' و 'spice' استفاده میشود.
- password
- درخواست گذرواژه برای کنسول، که در زمان اتصال الزامی است. مراقب باشید، این اطلاعات ممکن است در فایلهای گزارش virt-install ثبت شوند، بنابراین از یک گذرواژهٔ مهم استفاده نکنید. این زیرگزینه توسط 'vnc' و 'spice' استفاده میشود.
- gl.enable
- مشخص میکند که آیا از رندرینگ شتابیافتهٔ OpenGL استفاده شود یا خیر. مقدار آن 'yes' یا 'no' است. این زیرگزینه توسط 'spice' استفاده میشود.
- gl.rendernode
- مسیر گره رندر DRM مورد استفاده. این زیرگزینه زمانی به کار میرود که 'gl' فعال باشد.
برای دیدن فهرستی از تمامی زیرگزینههای در دسترس، از --graphics=? استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#graphical-framebuffers
این گزینه گزینههای زیر را منسوخ میکند: --vnc, --vncport, --vnclisten, -k/--keymap, --sdl, --nographics.SS --autoconsole
نحو: --autoconsole OPTIONS
پیکربندی کنسول تعاملیای که virt-install برای ماشین مجازی اجرا میکند. این گزینه اجباری نیست؛ رفتار پیشفرض تطبیقی بوده و به نحوه پیکربندی ماشین مجازی بستگی دارد. اما میتوانید از این گزینه برای تغییر دادن انتخاب پیشفرض استفاده کنید.
- --autoconsole graphical
- استفاده از virt-viewer(1) گرافیکی بهعنوان کنسول تعاملی
- --autoconsole text
- استفاده از حالت متنی virsh console بهعنوان کنسول تعاملی.
- --autoconsole none
- این گزینه معادل --noautoconsole است
- --noautoconsole
- عدم تلاش خودکار برای اتصال به کنسول مهمان. معادل --autoconsole none است
توجه داشته باشید در صورت مشخص کردن این گزینه، virt-install بهسرعت خارج میشود. اگر دستور شما خواستار نصب چندمرحلهای باشد، مانند --cdrom یا --location، پس از تکمیل فاز نصب، ماشین مجازی خاموش خواهد شد، صرفنظر از اینکه بازراهاندازی در ماشین مجازی درخواست شده باشد یا خیر. اگر میخواهید ماشین مجازی بازراهاندازی شود، virt-install باید در حال اجرا باقی بماند. میتوانید از '--wait' برای زنده نگه داشتن virt-install حتی با مشخص کردن --noautoconsole استفاده کنید.
گزینههای مجازیسازی (VIRTUALIZATION OPTIONS)
گزینههایی برای لغو و جایگزینی انتخابهای پیشفرض نوع مجازیسازی.
-v, --hvm
درخواست استفاده از مجازیسازی کامل (full virtualization)، در صورتی که هر دو نوع شبهمجازیسازی (para) و مجازیسازی کامل روی میزبان موجود باشند. این پارامتر ممکن است هنگام اتصال به یک هایپروایزر Xen بر روی ماشینی که فاقد پشتیبانی از مجازیسازی سختافزاری است در دسترس نباشد. در صورت اتصال به یک هایپروایزر مبتنی بر QEMU، این پارامتر بهطور ضمنی اعمال میشود.
-p, --paravirt
این مهمان باید یک مهمان شبهمجازیشده (paravirtualized) باشد. اگر میزبان از هر دو نوع شبهمجازیسازی و مجازیسازی کامل پشتیبانی کند و نه این پارامتر و نه --hvm مشخص نشده باشند، این حالت فرض خواهد شد.
--container
این مهمان باید مهمانی از نوع کانتینر باشد. این گزینه تنها در صورتی لازم است که هایپروایزر از انواع دیگر مهمان نیز پشتیبانی کند (به عنوان مثال، این گزینه رفتار پیشفرض برای LXC و OpenVZ است، اما برای جامعیت ارائه شده است).
--virt-type
هایپروایزری که نصب بر روی آن انجام میشود. گزینههای نمونه عبارتند از kvm، qemu، یا xen. گزینههای موجود از طریق 'virsh capabilities' در تگهای <domain> فهرست شدهاند.
این گزینه جایگزین و منسوخکننده گزینه --accelerate است که اکنون رفتار پیشفرض محسوب میشود. برای نصب یک مهمان QEMU خام (ساده)، از '--virt-type qemu' استفاده کنید.
گزینههای دستگاه (DEVICE OPTIONS)
تمام دستگاهها دارای مجموعهای از گزینههای address.* برای پیکربندی مشخصات آدرس دستگاه بر روی کنترلکننده والد یا گذرگاه (bus) خود هستند. برای جزئیات به https://libvirt.org/formatdomain.html#device-addresses مراجعه کنید.
--controller
نحو: --controller OPTIONS
اتصال یک دستگاه کنترلکننده به مهمان.
چند نمونه از نحوه فراخوانی:
- --controller usb2
- افزودن پیکربندی کامل یک کنترلکننده USB2
- --controller usb3
- افزودن یک کنترلکننده USB3
- --controller type=usb,model=none
- غیرفعال کردن کامل USB
- --controller type=scsi,model=virtio-scsi
- افزودن یک کنترلکننده VirtIO SCSI
- --controller num_pcie_root_ports=NUM
- کنترل تعداد دستگاههای کنترلکننده پیشفرض pcie-root-port که بهطور پیشفرض به ماشین مجازی جدید افزوده میشوند، در صورتی که ماشین مجازی بهطور پیشفرض از PCIe استفاده کند.
از --controller=? برای مشاهده فهرستی از تمام زیرگزینههای موجود استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#controllers.SS --input
ساختار: --input OPTIONS
یک دستگاه ورودی را به سیستممهمان متصل میکند. نمونه انواع دستگاههای ورودی mouse، tablet یا keyboard هستند.
از --input=? برای دیدن فهرست همه زیرگزینههای موجود استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#input-devices
--hostdev, --host-device
ساختار: --hostdev, --host-device OPTIONS
یک دستگاه فیزیکی میزبان را به سیستممهمان متصل میکند. چند نمونه مقدار برای HOSTDEV:
- --hostdev pci_0000_00_1b_0
- نام دستگاه گره از طریق libvirt، همانطور که توسط 'virsh nodedev-list' نمایش داده میشود
- --hostdev 001.003
- دستگاه USB بر اساس گذرگاه (bus) و دستگاه (device) (از طریق lsusb).
- --hostdev 0x1234:0x5678
- دستگاه USB بر اساس سازنده (vendor) و شناسه محصول (product) (از طریق lsusb).
- --hostdev 1f.01.02
- دستگاه PCI (از طریق lspci).
- --hostdev wlan0,type=net
- دستگاه شبکه (در کانتینر LXC).
- --hostdev /dev/net/tun,type=misc
- دستگاه نویسهای (در کانتینر LXC).
- --hostdev /dev/sdf,type=storage
- دستگاه بلوکی (در کانتینر LXC).
از --hostdev=? برای دیدن فهرست همه زیرگزینههای موجود استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#host-device-assignment
--sound
ساختار: --sound MODEL
یک دستگاه صوتی مجازی را به سیستممهمان متصل میکند. MODEL مدل کارت صدای شبیهسازیشده را مشخص میکند. مقادیر ممکن ich6، ich9، ac97، es1370، sb16، pcspk یا default هستند. مقدار 'default' تلاش میکند بهترین مدلی را که سیستمعامل مشخصشده پشتیبانی میکند انتخاب نماید.
این گزینه جایگزین گزینه قدیمی --soundhw شده و آن را منسوخ میکند. از --sound=? برای دیدن فهرست همه زیرگزینههای موجود استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#sound-devices
--audio
پیکربندی خروجی صوتی میزبان برای سختافزار --sound در سیستممهمان.
از --audio=? برای دیدن فهرست همه زیرگزینههای موجود استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#audio-backends
--watchdog
ساختار: --watchdog MODEL[,action=ACTION]
یک دستگاه سختافزاری watchdog (تایمر نگهبان) مجازی را به سیستممهمان متصل میکند. این قابلیت به یک دیمن و راهانداز دستگاه درون سیستممهمان نیاز دارد. زمانی که به نظر برسد ماشین مجازی متوقف یا قفل شده است، watchdog سیگنالی ارسال میکند. ACTION مشخص میکند که libvirt هنگام فعال شدن watchdog چه واکنشی نشان دهد. مقادیر عبارتند از:
پارامتر MODEL مدل دستگاه شبیهسازیشده است: i6300esb (پیشفرض) یا ib700. چند نمونه:
- --watchdog default
- استفاده از تنظیمات توصیهشده
- --watchdog i6300esb,action=poweroff
- استفاده از i6300esb با اقدام 'poweroff'
از --watchdog=? برای دیدن فهرست همه زیرگزینههای موجود استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#watchdog-devices.SS --serial
نحو: --serial OPTIONS
یک دستگاه سریال را با گزینههای گوناگون جهت اتصال به ماشین مهمان مشخص میکند. قالب کلی یک رشته سریال به صورت زیر است:
--serial type,opt1=val1,opt2=val2,...
دستگاههای --serial و --parallel همگی دارای گزینههای یکسانی هستند، مگر اینکه خلاف آن قید شده باشد. برخی از انواع بازهدایت دستگاه نویسهای (character device) عبارتند از:
- --serial pty
- ترمینال مجازی (Pseudo TTY). شناسه pty اختصاصیافته در توضیحات XML مهمانِ در حال اجرا فهرست خواهد شد.
- --serial dev,path=HOSTPATH
- دستگاه میزبان. برای دستگاههای سریال، این مقدار میتواند /dev/ttyS0 باشد. برای دستگاههای موازی، میتواند /dev/parport0 باشد.
- --serial file,path=FILENAME
- نوشتن خروجی در FILENAME.
- --serial tcp,host=HOST:PORT,source.mode=MODE,protocol.type=PROTOCOL
- کنسول شبکه
TCP. مقدار MODE
میتواند 'bind'
(انتظار
برای
اتصالات
روی HOST:PORT) یا 'connect'
(ارسال
خروجی به HOST:PORT)
باشد، حالت
پیشفرض 'bind'
است. مقدار
پیشفرض HOST
برابر با '127.0.0.1'
است، اما
تعیین PORT
الزامی است.
مقدار PROTOCOL
میتواند 'raw'
یا 'telnet' باشد
(پیشفرض 'raw').
در صورت
استفاده از
'telnet'، درگاه
مانند یک
کارگزار یا
کلاینت telnet
رفتار
میکند. چند
مثال:
انتظار برای اتصال روی هر نشانی، درگاه 4567:
--serial tcp,host=0.0.0.0:4567
اتصال به localhost، درگاه 1234:
--serial tcp,host=:1234,source.mode=connect
انتظار برای اتصال telnet روی localhost، درگاه 2222. کاربر میتواند سپس با اجرای دستور 'telnet localhost 2222' به صورت تعاملی به این کنسول متصل شود:
--serial tcp,host=:2222,source.mode=bind,source.protocol=telnet
- --serial udp,host=CONNECT_HOST:PORT,bind_host=BIND_HOST:BIND_PORT
- کنسول شبکه
UDP. مقدار HOST:PORT
مقصدی است
که خروجی به
آن فرستاده
میشود
(پیشفرض HOST
برابر با '127.0.0.1'
است، PORT
الزامی
است). مقدار
BIND_HOST:BIND_PORT نشانی
محلی
اختیاری
برای مقید
شدن (bind) است
(پیشفرض BIND_HOST
برابر با 127.0.0.1
است، اما
تنها زمانی
تنظیم
میشود که
BIND_PORT مشخص شده
باشد). چند
مثال:
ارسال خروجی به درگاه پیشفرض syslog (ممکن است نیاز به ویرایش متناسب فایل /etc/rsyslog.conf باشد):
--serial udp,host=:514
ارسال خروجی به میزبان راه دور 192.168.10.20، درگاه 4444 (این خروجی را میتوان در میزبان راه دور با استفاده از دستور 'nc -u -l 4444' خواند):
--serial udp,host=192.168.10.20:4444
- --serial unix,path=UNIXPATH,mode=MODE
- سوکت یونیکس، unix(7) را ببینید. گزینه MODE رفتار و پیشفرضهای مشابهی با --serial tcp,mode=MODE دارد.
از --serial=? برای مشاهده فهرستی از تمام زیرگزینههای در دسترس استفاده کنید. جزئیات کامل در: https://libvirt.org/formatdomain.html#consoles-serial-parallel-channel-devices
--parallel
نحو: --parallel OPTIONS
یک دستگاه موازی (parallel) را مشخص میکند. قالب و گزینهها تا حد زیادی با serial یکسان هستند.
از --parallel=? برای مشاهده فهرستی از تمام زیرگزینههای در دسترس استفاده کنید. جزئیات کامل در: https://libvirt.org/formatdomain.html#parallel-port.SS --channel
دستگاه کانال ارتباطی را برای اتصال ماشین میهمان و میزبان مشخص میکند. این گزینه از گزینههای مشابه --serial و --parallel برای مشخص کردن انتهای میزبان/منبع (host/source) کانال استفاده میکند. گزینههای اضافی 'target' برای مشخص کردن نحوه دیدهشدن کانال توسط ماشین میهمان به کار میروند.
برخی از انواع تغییر مسیر دستگاه نویسهای عبارتند از:
- --channel SOURCE,target.type=guestfwd,target.address=HOST:PORT
- کانال ارتباطی با استفاده از پشته شبکه حالت کاربر QEMU. میهمان میتواند با استفاده از ترکیب مشخصشده HOST:PORT به کانال متصل شود.
- --channel SOURCE,target.type=virtio[,target.name=NAME]
- کانال ارتباطی با استفاده از سریال virtio (نیازمند نسخه 2.6.34 یا بالاتر در میزبان و میهمان). هر نمونه از یک خط virtio --channel در میهمان به صورت /dev/vport0p1، /dev/vport0p2 و غیره در دسترس قرار میگیرد. NAME فرادادهای اختیاری است و میتواند هر رشتهای باشد، مانند org.linux-kvm.virtioport1. در صورت تعیین، در میهمان در مسیر /sys/class/virtio-ports/vport0p1/NAME در دسترس خواهد بود.
- --channel spicevmc,target.type=virtio[,target.name=NAME]
- کانال ارتباطی برای عامل spice در QEMU، با استفاده از سریال virtio (نیازمند نسخه 2.6.34 یا بالاتر در میزبان و میهمان). NAME فرادادهای اختیاری است و میتواند هر رشتهای باشد، مانند مقدار پیشفرض com.redhat.spice.0 که نحوه دیدهشدن کانال توسط میهمان را مشخص میکند.
- --channel qemu-vdagent,target.type=virtio[,target.name=NAME]
- کانال ارتباطی برای عامل vd در QEMU، با استفاده از سریال virtio (نیازمند نسخه 2.6.34 یا بالاتر در میزبان و میهمان). این قابلیت کپی/پیست را با میهمانان VNC امکانپذیر میکند. توجه داشته باشید که یکپارچهسازی تختهگیره (clipboard) میهمان از طریق spice-vdagent پیادهسازی شده است که حتی زمانی که میهمان از گرافیک spice استفاده نمیکند نیز باید در حال اجرا باشد. NAME فرادادهای اختیاری است که نحوه دیدهشدن کانال توسط میهمان را مشخص میکند، و باید روی مقدار پیشفرض com.redhat.spice.0 باقی بماند مگر اینکه بدانید چه میکنید.
برای دیدن فهرستی از تمام زیرگزینههای موجود از --channel=? استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#channel
--console
یک کنسول متنی را بین میهمان و میزبان متصل میکند. ترکیبهای خاصی از میهمان و ناظر ماشین مجازی (hypervisor) میتوانند به طور خودکار یک getty را در میهمان تنظیم کنند، به طوری که ورود متنی بدون نیاز به پیکربندی اولیه فراهم شود (target_type=xen برای میهمانان شبهمجازیسازی xen، و احتمالاً target_type=virtio در آینده).
مثال:
- --console pty,target.type=virtio
- اتصال یک کنسول virtio به میهمان که به یک PTY روی میزبان تغییر مسیر داده میشود. برای میهمانان پشتیبانیشده، این مورد /dev/hvc0 را در میهمان در دسترس قرار میدهد. برای اطلاعات بیشتر https://fedoraproject.org/wiki/Features/VirtioSerial را ببینید. کنسول virtio نیازمند libvirt نسخه 0.8.3 یا بالاتر است.
برای دیدن فهرستی از تمام زیرگزینههای موجود از --console=? استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#console
--video
نحو: --video OPTIONS
مشخص میکند کدام مدل دستگاه ویدیو به میهمان متصل خواهد شد. مقادیر معتبر برای VIDEO وابسته به هایپروایزر است، اما برخی گزینهها برای kvmهای اخیر عبارتند از cirrus، vga، qxl، virtio، یا vmvga (vmware). برای دیدن فهرستی از تمام زیرگزینههای موجود از --video=? استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#video-devices
--smartcard
نحو: --smartcard MODE[,OPTIONS]
پیکربندی یک دستگاه کارت هوشمند (smartcard) مجازی.
نمونه مقادیر MODE عبارتند از host، host-certificates، یا passthrough. زیرگزینههای نمونه عبارتند از:
- type
- نوع دستگاه نویسهای برای اتصال روی میزبان. این گزینه فقط برای حالت passthrough کاربرد دارد.
یک نمونه فراخوانی:
- --smartcard passthrough,type=spicevmc
- استفاده از کانال smartcard یک دستگاه گرافیکی SPICE برای انتقال اطلاعات کارت هوشمند به میهمان
برای دیدن فهرستی از تمام زیرگزینههای موجود از --smartcard=? استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#smartcard-devices.SS --redirdev
نحو: --redirdev BUS[,OPTIONS]
افزودن یک دستگاه تغییرمسیریافته (redirected). نمونههایی از گزینههای فرعی:
نمونههای فراخوانی:
- --redirdev usb,type=tcp,server=localhost:4000
- افزودن یک دستگاه USB تغییرمسیریافته که توسط سرور TCP روی 'localhost' در درگاه ۴۰۰۰ ارائه میشود.
- --redirdev usb,type=spicevmc
- افزودن یک دستگاه USB تغییرمسیریافته از طریق کانال اختصاصی Spice.
برای مشاهده فهرستی از همه گزینههای فرعی موجود، از --redirdev=? استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#redirected-devices
--memballoon
نحو: --memballoon MODEL[,OPTIONS]
اتصال یک دستگاه بالون حافظه (memballoon) مجازی به سیستمعامل مهمان. اگر نیاز است دستگاه memballoon بهطور صریح غیرفعال شود، از MODEL='none' استفاده میشود.
آرگومان MODEL نوع دستگاه memballoon ارائهشده است. این مقدار میتواند 'virtio'، 'xen' یا 'none' باشد. چند مثال:
- --memballoon virtio
- ایجاد صریح یک دستگاه memballoon از نوع 'virtio'
- --memballoon none
- غیرفعال کردن دستگاه memballoon
برای مشاهده فهرستی از همه گزینههای فرعی موجود، از --memballoon=? استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#memory-balloon-device
--tpm
نحو: --tpm TYPE[,OPTIONS]
پیکربندی یک دستگاه TPM مجازی. مثالها:
- --tpm /dev/tpm
- گزینهای آسان برای ارسال مستقیم (passthrough) دستگاه TPM میزبان.
- --tpm emulator
- درخواست یک دستگاه TPM شبیهسازیشده (emulated).
- --tpm default
- درخواست از virt-install برای اعمال یک مقدار پیشفرض نوین و توصیهشده.
- --tpm none
- درخواست از virt-install برای غیرفعال کردن دستگاه TPM.
برای مشاهده فهرستی از همه گزینههای فرعی موجود، از --tpm=? استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#tpm-device
--rng
نحو: --rng TYPE[,OPTIONS]
پیکربندی یک دستگاه مجازی تولید اعداد تصادفی (RNG).
نمونههایی از مقادیر TYPE شامل random، egd یا builtin است.
نمونههای فراخوانی:
- --rng /dev/urandom
- استفاده از دستگاه /dev/urandom برای دریافت دادههای آنتروپی؛ این حالت بهطور ضمنی از مدل "random" استفاده میکند.
- --rng builtin
- استفاده از دستگاه RNG داخلی (builtin) برای دریافت دادههای آنتروپی.
- --rng egd,backend.source.host=localhost,backend.source.service=8000,backend.type=tcp
- اتصال به localhost در درگاه TCP شماره ۸۰۰۰ برای دریافت دادههای آنتروپی.
برای مشاهده فهرستی از همه گزینههای فرعی موجود، از --rng=? استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#random-number-generator-device.SS --panic
شیوه نگارش: --panic MODEL[,OPTS]
متصل کردن یک دستگاه اعلان وحشت (panic notifier) به مهمان. برای تنظیمات توصیهشده، استفاده کنید از: --panic default
برای دیدن فهرستی از تمام زیرگزینههای در دسترس، از --panic=? استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#panic-device
--shmem
شیوه نگارش: --shmem NAME[,OPTS]
متصل کردن یک دستگاه حافظه مشترک به مهمان. نام نباید شامل / باشد و نباید مختص به دایرکتوریهای . یا .. باشد.
برای دیدن فهرستی از تمام زیرگزینههای در دسترس، از --shmem=? استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#shared-memory-device
--memdev
شیوه نگارش: --memdev OPTS
افزودن یک ماژول حافظه به مهمان با امکان جداسازی در حالت فعال (hotunplug). برای افزودن یک memdev لازم است hotplugmemory و NUMA را برای مهمان پیکربندی کنید.
برای دیدن فهرستی از تمام زیرگزینههای در دسترس، از --memdev=? استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#memory-devices
--vsock
شیوه نگارش: --vsock OPTS
پیکربندی یک رابط vsock میزبان/مهمان. یک پیکربندی معمول چنین است:
--vsock cid.auto=yes
برای دیدن فهرستی از تمام زیرگزینههای در دسترس، از --vsock=? استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#vsock
--iommu
شیوه نگارش: --iommu MODEL[,OPTS]
افزودن یک دستگاه IOMMU به مهمان.
برای دیدن فهرستی از تمام گزینههای در دسترس، از --iommu=? استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#iommu-devices
--pstore
شیوه نگارش: --pstore OPT=VAL,[...]
افزودن یک دستگاه pstore به مهمان جهت ذخیره لاگهای oops/panic پیش از فروپاشی (crash).
برای دیدن فهرستی از تمام گزینههای در دسترس، از --pstore=? استفاده کنید. جزئیات کامل در https://libvirt.org/formatdomain.html#pstore
گزینههای گوناگون (MISCELLANEOUS OPTIONS)
-h, --help
نمایش پیام راهنما و خروج
--version
نمایش شماره نسخه برنامه و خروج
--autostart
تنظیم پرچم شروع خودکار (autostart) برای یک دامنه. این کار باعث میشود دامنه هنگام راهاندازی (boot) سیستم میزبان اجرا شود.
--transient
اگر خواهان یک ماشین مجازی (VM) گذرای libvirt هستید، از --import یا --boot و --transient استفاده کنید. این ماشینهای مجازی فقط تا زمانی وجود دارند که دامنه خاموش شود یا سرور میزبان بازراهاندازی گردد. libvirt پس از هر یک از این رویدادها، پیکربندی XML ماشین مجازی را فراموش میکند. توجه داشته باشید که دیسکهای ماشین مجازی حذف نخواهند شد. ببینید: https://wiki.libvirt.org/page/VM_lifecycle#Transient_guest_domains_vs_Persistent_guest_domains
--destroy-on-exit
هنگامی که از پنجره کنسول ماشین مجازی خارج شوید، ماشین مجازی تخریب (خاموشکردن اجباری) میشود. اگر این گزینه را با --transient ترکیب کنید، باعث میشود دستور virt-install عملکردی مشابه qemu داشته باشد، جایی که با بسته شدن پنجره کنسول توسط کاربر، ماشین مجازی خاموش میشود..SS --print-xml
قالب دستوری: --print-xml [STEP]
چاپ XML تولیدشده برای ماشین مهمان، به جای تعریف کردن آن. بهطور پیشفرض این گزینه ساخت فضای ذخیرهسازی را انجام خواهد داد (میتوان با --dry-run آن را غیرفعال کرد). این گزینه مستلزم --quiet است.
اگر فرایند نصب ماشین مجازی چند مرحلهای باشد، بهطور پیشفرض تمام XMLهای تولیدشده چاپ خواهند شد. اگر میخواهید یک مرحلهٔ خاص چاپ شود، از --print-xml 2 (برای XML مرحلهٔ دوم) استفاده کنید.
--noreboot
جلوگیری از راهاندازی مجدد خودکار دامنه (domain) پس از اتمام فرایند نصب.
--wait
قالب دستوری: --wait WAIT
پیکربندی نحوهٔ انتظار virt-install برای تکمیل فرایند نصب. بدون این گزینه، virt-install منتظر بسته شدن کنسول میماند (که لزوماً نشاندهندهٔ خاموش شدن ماشین مهمان نیست)، یا در صورت استفاده از --noautoconsole، صرفاً نصب را آغاز کرده و خارج میشود.
استفاده از '--wait' بهتنهایی یا هر مقدار منفی باعث میشود virt-install بهصورت نامحدود منتظر بماند. هر عدد مثبت نشاندهندهٔ تعداد دقیقههایی است که virt-install منتظر خواهد ماند. در صورت پایان مهلت زمانی، virt-install صرفاً خارج شده و ماشین مجازی را در وضعیت فعلی خود رها میکند.
--dry-run
مراحل ساخت ماشین مهمان را به پیش میبرد، اما هیچ دستگاه ذخیرهسازی ایجاد نمیکند، پیکربندی دستگاههای میزبان را تغییر نمیدهد و مهمان را واقعاً به libvirt معرفی نمیکند. virt-install ممکن است همچنان رسانهٔ نصب را دریافت کند، چرا که این کار برای تشخیص صحیح سیستمعامل جهت نصب الزامی است.
--check
فعال یا غیرفعال کردن برخی بررسیهای اعتبارسنجی. به عنوان نمونه میتوان به هشدار دربارهٔ استفاده از دیسکی که پیشتر به ماشین مجازی دیگری اختصاص یافته است (--check path_in_use=on|off)، یا هشدار دربارهٔ احتمال اتمام فضا در حین تخصیص دیسک (--check disk_size=on|off) اشاره کرد. بیشتر بررسیها بهطور پیشفرض انجام میشوند.
-q, --quiet
فقط پیامهای خطای مهلک را چاپ میکند.
-d, --debug
چاپ اطلاعات اشکالزدایی در ترمینال هنگام اجرای فرایند نصب. اطلاعات اشکالزدایی حتی در صورت حذف این پارامتر نیز در ~/.cache/virt-manager/virt-install.log ذخیره میشوند.
مثالها (EXAMPLES)
سادهترین فراخوانی برای نصب تعاملی یک ماشین مجازی Fedora 29 KVM با مقادیر پیشفرض توصیهشده. برنامهٔ virt-viewer(1) برای تعامل گرافیکی با فرایند نصب ماشین مجازی اجرا خواهد شد
# sudo virt-install --install fedora29
مشابه نمونهٔ قبل، اما با استفاده از قابلیت نصب خودکار در libosinfo، که نصب fedora29 را بهصورت خودکار و بدون دخالت کاربر انجام میدهد:
# sudo virt-install --install fedora29 --unattended
نصب یک ماشین مجازی Windows 10 با استفاده از ۴۰ گیبیبایت فضای ذخیرهسازی در مکان پیشفرض و ۴۰۹۶ مبیبایت رم، و اطمینان از اتصال به نمونهٔ سیستمی libvirtd:
# virt-install \ --connect qemu:///system \ --name my-win10-vm \ --memory 4096 \ --disk size=40 \ --osinfo win10 \ --cdrom /path/to/my/win10.iso
نصب یک ماشین KVM با CentOS 7 از یک URL، با پیشفرضهای توصیهشدهٔ دستگاهها و فضای ذخیرهسازی پیشفرض مورد نیاز، اما با درخواست صریح گرافیک VNC به جای SPICE پیشفرض، و ۸ پردازندهٔ مجازی و ۸۱۹۲ مبیبایت حافظه:
# virt-install \
--connect qemu:///system \
--memory 8192 \
--vcpus 8 \
--graphics vnc \
--osinfo centos7.0 \
--location http://mirror.centos.org/centos-7/7/os/x86_64
ساخت یک ماشین مجازی بر پایهٔ یک ایمیج دیسک debian9 موجود:
# virt-install \
--import \
--memory 512 \
--disk /home/user/VMs/my-debian9.img \
--osinfo debian9
راهاندازی یک ماشین مجازی سریال QEMU ARM که نیازمند تعیین دستی هسته (کرنل) است.
# virt-install \
--name armtest \
--memory 1024 \
--arch armv7l --machine vexpress-a9 \
--disk /home/user/VMs/myarmdisk.img \
--boot kernel=/tmp/my-arm-kernel,initrd=/tmp/my-arm-initrd,dtb=/tmp/my-arm-dtb,kernel_args="console=ttyAMA0 rw root=/dev/mmcblk0p3" \
--graphics none
راهاندازی یک ماشین مجازی با امنیت راهاندازی SEV با ۴ گیگابایت RAM، ۴ گیگابایت + ۲۵۶ مبیبایت برای hard_limit، همراه با چند دستگاه virtio:
نکته: پرچم IOMMU باید با driver.iommu برای دستگاههای virtio فعال شود. استفاده از --memtune در حال حاضر به دلیل محدودیتهای SEV الزامی است؛ برای توضیحات دقیق به مستندات libvirt مراجعه کنید.
# virt-install \
--name foo \
--memory 4096 \
--boot uefi \
--machine q35 \
--memtune hard_limit=4563402 \
--disk size=15,target.bus=scsi \
--import \
--controller type=scsi,model=virtio-scsi,driver.iommu=on \
--controller type=virtio-serial,driver.iommu=on \
--network network=default,model=virtio,driver.iommu=on \
--rng /dev/random,driver.iommu=on \
--memballoon driver.iommu=on \
--launchSecurity sev
لطفاً به https://virt-manager.org/bugs مراجعه کنید.
کپیرایت و تکثیر (COPYRIGHT)
حق نشر (C) متعلق به Red Hat, Inc و مشارکتکنندگان مختلف است. این یک نرمافزار آزاد است. شما میتوانید رونوشتهای آن را تحت شرایط GNU General Public License https://www.gnu.org/licenses/gpl.html بازتوزیع کنید. تا حدی که قانون اجازه میدهد، هیچ ضمانتی وجود ندارد.
همچنین ببینید (SEE ALSO)
virsh(1)، virt-clone(1)، virt-manager(1)، وبسایت پروژه https://virt-manager.org