نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی. پرتال اطلاعاتی
  • خانه
  • اهن
  • سرور ماشین مجازی در اوبونتو. از مجازی سازی با استفاده از KVM نترسید

سرور ماشین مجازی در اوبونتو. از مجازی سازی با استفاده از KVM نترسید

در اوبونتو، استفاده از هایپروایزر (مدیر ماشین های مجازی) KVM و کتابخانه libvirt به عنوان ابزاری برای مدیریت آن. Libvirt شامل مجموعه ای از نرم افزارهای API و برنامه های کاربردی سفارشیمدیریت ماشین های مجازی(VM) virt-manager ( رابط کاربری گرافیکی، رابط کاربری گرافیکی) یا virsh ( خط فرمان، CLI). به عنوان مدیران جایگزین، می توانید از convirt (GUI) یا convirt2 (واسط وب) استفاده کنید.

در حال حاضر، تنها هایپروایزر KVM به طور رسمی در اوبونتو پشتیبانی می شود. این هایپروایزر بخشی از کد هسته عملیاتی است سیستم های لینوکس. برخلاف Xen، KVM از paravirtualization پشتیبانی نمی کند، به این معنی که برای استفاده از آن، CPU شما باید از فناوری های VT پشتیبانی کند. با اجرای دستور در ترمینال می توانید بررسی کنید که آیا پردازنده شما از این فناوری پشتیبانی می کند یا خیر:

اگر در نتیجه پیام زیر را دریافت کردید:

اطلاعات: /dev/kvm وجود دارد می توان از شتاب KVM استفاده کرد

این بدان معناست که KVM بدون مشکل کار خواهد کرد.

اگر در خروجی پیام زیر را دریافت کردید:

CPU شما از پسوندهای KVM پشتیبانی نمی کند شتاب KVM نمی تواند استفاده شود

سپس شما هنوز هم می توانید از ماشین مجازی استفاده کنید، اما سرعت آن بسیار کندتر خواهد بود.

    سیستم های 64 بیتی را به عنوان مهمان نصب کنید

    بیش از 2 گیگابایت رم به سیستم های مهمان اختصاص دهید

نصب و راه اندازی

Sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils

این یک نصب روی سرور بدون X است، یعنی شامل یک رابط گرافیکی نیست. با دستور می توانید آن را نصب کنید

Sudo apt-get install virt-manager

پس از این، آیتم "مدیر ماشین مجازی" در منو ظاهر می شود و با احتمال زیاد، همه چیز کار می کند. اگر هنوز مشکلی وجود دارد، باید دستورالعمل‌های موجود در ویکی انگلیسی را بخوانید.

ایجاد سیستم مهمان

روش ایجاد یک سیستم مهمان با استفاده از رابط کاربری گرافیکی بسیار ساده است.

و اینجا حالت متنیرا می توان توصیف کرد.

qcow2

هنگام ایجاد یک سیستم با استفاده از رابط گرافیکی به عنوان یک هارد دیسک، از شما خواسته می شود که یک فایل تصویری موجود را انتخاب کنید یا دستگاه را مسدود کنید، یا ایجاد کنید. فایل جدیدبا داده های خام (RAW). با این حال، این به دور از تنها است فرمت موجودفایل ها. از بین تمام انواع دیسک های ذکر شده در man qemu-img، منعطف ترین و مدرن ترین آنها qcow2 است. از عکس های فوری، رمزگذاری و فشرده سازی پشتیبانی می کند. قبل از ایجاد یک مهمان جدید باید ایجاد شود.

Qemu-img create -o preallocation=metadata -f qcow2 qcow2.img 20G

به گفته همان مرد qemu-img، تخصیص پیش‌داده (-o preallocation=metadata) دیسک را در ابتدا کمی بزرگ‌تر می‌کند، اما فراهم می‌کند عملکرد بهتردر آن لحظاتی که تصویر نیاز به رشد دارد. در واقع، در در این مورداین گزینه به شما امکان می دهد از یک اشکال ناخوشایند جلوگیری کنید. تصویر ایجاد شده استدر ابتدا کمتر از یک مگابایت فضا اشغال می کند و در صورت نیاز به اندازه مشخص شده رشد می کند. سیستم مهمان باید بلافاصله این فینال را ببیند اندازه مشخص شدهبا این حال، در مرحله نصب او می تواند ببیند اندازه واقعیفایل. طبیعتاً از نصب روی هارد 200 کیلوبایتی خودداری می کند. این اشکال مختص اوبونتو نیست، حداقل در RHEL ظاهر می شود.

علاوه بر نوع تصویر، متعاقباً می توانید روش اتصال آن را انتخاب کنید - IDE، SCSI یا Virtio Disk. عملکرد به این انتخاب بستگی دارد زیر سیستم دیسک. پاسخ صحیح قطعی وجود ندارد؛ شما باید بر اساس وظیفه ای که به سیستم مهمان محول می شود انتخاب کنید. اگر سیستم مهمانایجاد شده است "to look at"، سپس هر روشی انجام خواهد داد. به طور کلی، معمولاً I/O است تنگناماشین مجازی، بنابراین هنگام ایجاد یک سیستم با بارگذاری بالا، این موضوع باید تا حد امکان مسئولانه گرفته شود.

من این یادداشت را برای نشان دادن می نویسم نصب مرحله به مرحلهو راه اندازی یک ماشین مجازی مبتنی بر KVM در لینوکس. من قبلاً در مورد مجازی سازی نوشتم ، جایی که از فوق العاده استفاده کردم.

الان با مشکل اجاره مواجه شدم. سرور خوببا حجم زیاد حافظه دسترسی تصادفیو حجمی هارد دیسک. اما من نمی‌خواهم پروژه‌ها را مستقیماً روی دستگاه میزبان اجرا کنم، بنابراین آنها را به سرورهای مجازی کوچک جداگانه‌ای که دارای کانتینرهای لینوکس یا داکر هستند، جدا می‌کنم (در مقاله دیگری در مورد آنها صحبت خواهم کرد).

همه هاست های ابری مدرن بر اساس یک اصل کار می کنند، یعنی. میزبان روشن است غده خوبدسته ای از سرورهای مجازی را ایجاد می کند که ما آنها را VPS/VDS می نامیم و آنها را بین کاربران توزیع می کند یا این فرآیند را خودکار می کند (سلام، DigitalOcean).

KVM (ماشین مجازی مبتنی بر هسته) نرم افزاری برای لینوکس است که از سخت افزار پردازنده های سازگار با x86 برای کار با فناوری مجازی سازی Intel VT/AMD SVM استفاده می کند.

نصب KVM

من تمام نقشه های ایجاد یک ماشین مجازی را در سیستم عامل اوبونتو 16.04.1 LTS انجام خواهم داد. برای بررسی اینکه آیا فرآیندهای شما از مجازی سازی سخت افزار پشتیبانی می کنند یا خیر مبتنی بر اینتل VT/AMD SVM، اجرا کنید:

Grep -E "(vmx|svm)" /proc/cpuinfo

اگر ترمینال خالی نباشد، همه چیز مرتب است و KVM قابل نصب است. اوبونتو رسما فقط از هایپروایزر KVM (شامل با هسته های لینوکس) و استفاده از کتابخانه libvirt را به عنوان ابزاری برای مدیریت آن توصیه می کند، کاری که در ادامه انجام خواهیم داد.

همچنین می توانید پشتیبانی از مجازی سازی سخت افزار در اوبونتو را با استفاده از دستور زیر بررسی کنید:

در صورت موفقیت، چیزی شبیه به این را مشاهده خواهید کرد:

اطلاعات: /dev/kvm وجود دارد می توان از شتاب KVM استفاده کرد

نصب بسته ها برای کار با KVM:

Sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils

اگر دسترسی دارید پوسته گرافیکیسیستم، می توانید مدیر رابط کاربری گرافیکی libvirt را نصب کنید:

Sudo apt-get install virt-manager

استفاده از virt-manager بسیار ساده است (سخت تر از VirtualBox نیست)، بنابراین در این مقاله در مورد گزینه کنسول برای نصب و پیکربندی سرور مجازی صحبت خواهیم کرد.

نصب و پیکربندی سرور مجازی

در نسخه کنسول نصب، پیکربندی و مدیریت سیستم، یک ابزار ضروری ابزار virsh (افزونه ای برای کتابخانه libvirt) است. او دارد تعداد زیادی ازگزینه ها و پارامترها، توصیف همراه با جزئیاترا می توان به صورت زیر بدست آورد:

مرد زیبا

یا با استاندارد "کمک" تماس بگیرید:

Virsh کمک کنید

من همیشه پایبندم قوانین زیرهنگام کار با سرورهای مجازی:

  1. من تصاویر سیستم عامل iso را در پوشه /var/lib/libvirt/boot ذخیره می کنم
  2. من تصاویر ماشین مجازی را در فهرست /var/lib/libvirt/images ذخیره می کنم
  3. من به صراحت به هر ماشین مجازی جدید آدرس IP ثابت خود را از طریق آن اختصاص می دهم سرور DHCPهایپروایزر

بیایید نصب اولین ماشین مجازی (سرور 64 بیتی اوبونتو 16.04 LTS) را شروع کنیم:

سی دی /var/lib/libvirt/boot sudo wget http://releases.ubuntu.com/16.04/ubuntu-16.04.1-desktop-amd64.iso

پس از دانلود تصویر، نصب را شروع کنید:

Sudo virt-install \ --virt-type=kvm \ --name ubuntu1604\ --ram 1024 \ --vcpus=1 \ --os-variant=ubuntu16.04 \ --hvm \ --cdrom=/var/ lib/libvirt/boot/ubuntu-16.04.1-server-amd64.iso \ --network network=default,model=virtio \ --graphics vnc \ --disk path=/var/lib/libvirt/images/ubuntu1604. img,size=20,bus=virtio

ترجمه همه این پارامترها به " زبان انسان"، معلوم شد که ما در حال ایجاد یک ماشین مجازی با سیستم عامل اوبونتو 16.04، 1024 مگابایت رم، 1 پردازنده، یک کارت شبکه استاندارد (ماشین مجازی به دلیل NAT به اینترنت دسترسی خواهد داشت)، 20 گیگابایت HDD.

ارزش توجه به پارامتر را دارد --os-variant، به هایپروایزر می گوید که تنظیمات باید با کدام سیستم عامل سازگار شود.
فهرست کنید گزینه های موجودسیستم عامل را می توان با اجرای دستور زیر بدست آورد:

Osinfo-query os

اگر چنین ابزاری در سیستم شما نیست، نصب کنید:

Sudo apt-get install libosinfo-bin

پس از شروع نصب، پیام زیر در کنسول ظاهر می شود:

نصب دامنه همچنان در حال انجام است. برای تکمیل مراحل نصب، می توانید دوباره به کنسول متصل شوید.

این یک وضعیت عادی است، ما نصب را از طریق VNC ادامه خواهیم داد.
بیایید ببینیم کدام پورت در ماشین مجازی ما (مثلاً در ترمینال بعدی) افزایش یافته است:

Virsh dumpxml ubuntu1604... ...

پورت 5900، روشن آدرس محلی 127.0.0.1. برای اتصال به VNC باید از Port Forwarding از طریق ssh استفاده کنید. قبل از انجام این کار، مطمئن شوید که ارسال tcp در دیمون ssh فعال است. برای انجام این کار، به تنظیمات sshd بروید:

Cat /etc/ssh/sshd_config | grep AllowTcpForwarding

اگر چیزی پیدا نشد یا دیدید:

AllowTcpForwarding no

سپس پیکربندی را در آن ویرایش می کنیم

AllowTcpForwarding بله

و sshd را ریبوت کنید.

راه اندازی پورت فورواردینگ

ما دستور را در ماشین محلی اجرا می کنیم:

Ssh -fN -l ورود -L 127.0.0.1:5900:localhost:5900 server_ip

در اینجا ما ssh را پیکربندی کرده ایم پورت حمل و نقلبا بندر محلی 5900 به پورت سرور 5900. اکنون می توانید با استفاده از هر مشتری VNC به VNC متصل شوید. من UltraVNC را به دلیل سادگی و راحتی آن ترجیح می دهم.

پس از اتصال موفقیت آمیز، صفحه نمایش داده می شود پنجره استانداردسلام برای شروع نصب اوبونتو:

پس از اتمام نصب و راه اندازی مجدد معمول، پنجره ورود ظاهر می شود. پس از ورود به سیستم، آدرس IP ماشین مجازی تازه ایجاد شده را تعیین می کنیم تا بعداً آن را ثابت کنیم:

Ifconfig

ما به یاد می آوریم و به دستگاه میزبان می رویم. ما آدرس مک کارت شبکه ماشین مجازی را بیرون می آوریم:

Virsh dumpxml ubuntu1604 | grep "آدرس مک"

بیایید آدرس مک خود را به خاطر بسپاریم:

ویرایش تنظیمات شبکههایپروایزر:

Sudo virsh net-edit default

ما به دنبال DHCP می گردیم و این را اضافه می کنیم:

باید چیزی شبیه این باشد:

برای اینکه تنظیمات اعمال شوند، باید سرور DHCP Hypervisor را مجددا راه اندازی کنید:

Sudo virsh net-destroy پیش فرض sudo virsh net-start سرویس sudo پیش فرض libvirt-bin راه اندازی مجدد

پس از این، ما ماشین مجازی را راه اندازی مجدد می کنیم، اکنون همیشه آدرس IP به آن اختصاص داده شده است - 192.168.122.131.

راه های دیگری برای تنظیم IP ثابت برای ماشین مجازی وجود دارد، به عنوان مثال، با ویرایش مستقیم تنظیمات شبکه در داخل سیستم مهمان، اما در اینجا هر چیزی که دلتان بخواهد است. من فقط گزینه ای را که ترجیح می دهم استفاده کنم را نشان دادم.

برای اتصال به ترمینال ماشین مجازی، اجرا کنید:

Ssh 192.168.122.131

ماشین آماده نبرد است.

Virsh: لیست دستورات

برای دیدن دویدن هاست های مجازی(همه موارد موجود را می توان با افزودن --all به دست آورد):

لیست سودو ویرش

می توانید هاست را مجددا راه اندازی کنید:

Sudo virsh $VM_NAME را راه اندازی مجدد کرد

توقف ماشین مجازی:

توقف Sudo virsh $VM_NAME

اجرای توقف:

Sudo virsh $VM_NAME را نابود می کند

Sudo virsh $VM_NAME را شروع می کند

غیر فعال کردن:

Sudo virsh خاموش شدن $VM_NAME

افزودن به autorun:

Sudo virsh $VM_NAME را به صورت خودکار راه اندازی می کند

اغلب اوقات لازم است یک سیستم شبیه سازی شود تا در آینده از آن به عنوان چارچوبی برای سایر سیستم عامل های مجازی استفاده شود؛ برای این کار از ابزار virt-clone استفاده می شود.

Virt-clone -- help

این یک ماشین مجازی موجود را شبیه سازی می کند و داده های حساس به میزبان، به عنوان مثال، آدرس مک را تغییر می دهد. رمزهای عبور، فایل ها و سایر اطلاعات خاص کاربر در کلون ثابت می مانند. اگر آدرس IP در ماشین مجازی کلون شده به صورت دستی ثبت شده باشد، ممکن است مشکلات دسترسی SSH به کلون به دلیل تداخل ایجاد شود (2 میزبان با IP یکسان).

علاوه بر نصب ماشین مجازی از طریق VNC، امکان استفاده از X11Forwarding از طریق ابزار virt-manager نیز وجود دارد. برای مثال در ویندوز می توانید از Xming و PuTTY برای این کار استفاده کنید.

KVM یا Kernel Virtual Module یک ماژول مجازی سازی برای هسته لینوکس است که به شما امکان می دهد کامپیوتر خود را به یک Hypervisor برای مدیریت ماشین های مجازی تبدیل کنید. این ماژول در سطح هسته عمل می کند و از فناوری های شتاب سخت افزاری مانند Intel VT و AMD SVM پشتیبانی می کند.

به خودی خود نرم افزار KVM در فضای کاربر چیزی را مجازی نمی کند. در عوض، از فایل /dev/kvm برای پیکربندی فضاهای آدرس مجازی برای مهمان در هسته استفاده می‌کند. هر یک ماشین مهمانکارت گرافیک، شبکه و کارت صدا, HDDو تجهیزات دیگر

همچنین سیستم مهمان به اجزای واقعی دسترسی نخواهد داشت سیستم عامل. ماشین مجازی در یک فضای کاملا ایزوله اجرا می شود. شما می توانید از kvm هم در یک سیستم رابط کاربری گرافیکی و هم در سرورها استفاده کنید. در این مقاله به نحوه نصب kvm اوبونتو 16.04 خواهیم پرداخت

قبل از شروع به نصب KVM، باید بررسی کنید که آیا پردازنده شما پشتیبانی می کند یا خیر شتاب سخت افزاریمجازی سازی از Intel-VT یا AMD-V. برای این کار دستور زیر را اجرا کنید:

egrep -c "(vmx|svm)" /proc/cpuinfo

اگر نتیجه 0 را برگرداند، پردازنده شما از مجازی سازی سخت افزار پشتیبانی نمی کند، اگر 1 یا بیشتر باشد، می توانید از KVM در دستگاه خود استفاده کنید.

اکنون می توانیم به نصب KVM ادامه دهیم، مجموعه ای از برنامه ها را می توان مستقیماً از مخازن رسمی دریافت کرد:

sudo apt نصب qemu-kvm libvirt-bin bridge-utils virt-manager cpu-checker

ما نه تنها ابزار kvm، بلکه کتابخانه libvirt و همچنین مدیر ماشین مجازی را نیز نصب کردیم. پس از اتمام نصب، باید کاربر خود را به گروه libvirtd اضافه کنید، زیرا فقط کاربران root و این گروه می توانند از ماشین های مجازی KVM استفاده کنند:

sudo gpasswd -a USER libvirtd

پس از اجرای این دستور، از سیستم خارج شوید و دوباره وارد شوید. بعد، بیایید بررسی کنیم که آیا همه چیز به درستی نصب شده است یا خیر. برای این کار از دستور kvm-ok استفاده کنید:

اطلاعات: /dev/kvm وجود دارد
می توان از شتاب KVM استفاده کرد

اگر همه چیز به درستی انجام شده باشد، همان پیام را خواهید دید.

استفاده از KVM در اوبونتو 16.04

شما کار نصب kvm در اوبونتو را انجام داده اید، اما هنوز نمی توانید از این محیط مجازی سازی استفاده کنید اما هنوز باید پیکربندی شود. در ادامه، نحوه پیکربندی kvm اوبونتو را بررسی خواهیم کرد. ابتدا باید شبکه خود را راه اندازی کنید. ما باید یک پل ایجاد کنیم که ماشین مجازی با آن به شبکه کامپیوتر متصل شود.

راه اندازی پل در NetworkManager

این را می توان به روش های مختلفی انجام داد، به عنوان مثال، می توانید از برنامه پیکربندی شبکه NetworkManager استفاده کنید.

روی نماد NetworkManager در پنل کلیک کنید، سپس انتخاب کنید تغییر اتصالات، سپس روی دکمه کلیک کنید اضافه کردن:

سپس نوع اتصال را انتخاب کنید پلو فشار دهید ايجاد كردن:

در پنجره باز شده روی دکمه کلیک کنید اضافه کردن،برای پیوند دادن پل ما به اتصال اینترنت:

از لیست، را انتخاب کنید شبکه محلی کابلیو فشار دهید ايجاد كردن:

در پنجره بعدی، در فیلد انتخاب کنید دستگاه، رابط شبکه، که پل ما باید با آن وصل شود:

در حال حاضر در لیست اتصالات شبکهپل خود را خواهید دید تنها چیزی که باقی می ماند راه اندازی مجدد شبکه برای اعمال کامل تغییرات است، برای انجام این کار، اجرا کنید:

راه اندازی پل دستی

اگر قبلاً این کار را نکرده‌اید، ابتدا باید مجموعه برنامه‌های کاربردی bridge-utils را نصب کنید:

sudo apt install bridge-utils

سپس با استفاده از برنامه brctl می توانیم پل مورد نیاز خود را ایجاد کنیم. برای این کار از دستورات زیر استفاده کنید:

sudo brctl addbr bridge0
$ sudo ip addr show
$ sudo addif bridge0 eth0

دستور اول دستگاه پل br0 را اضافه می کند، با دستور دوم باید تعیین کنید که کدام رابط شبکه اتصال اصلی به آن است. شبکه خارجی، در مورد من eth0 است. و با دستور آخر bridge br0 را به eth0 وصل می کنیم.

اکنون باید چند خط به تنظیمات شبکه اضافه کنید تا پس از راه اندازی سیستم همه چیز به طور خودکار راه اندازی شود. برای انجام این کار، فایل /etc/network/interfaces را باز کنید و خطوط زیر را در آنجا اضافه کنید:

sudo gedit /etc/network/interfaces

حلقه بک
خودکار لو بریج0
iface lo inet loopback
iface bridge0 inet dhcp
bridge_ports eth0

وقتی تنظیمات اضافه شد، شبکه را راه اندازی مجدد کنید:

sudo systemctl راه اندازی مجدد شبکه

اکنون نصب و پیکربندی KVM به طور کامل به پایان رسیده است و می توانید اولین ماشین مجازی خود را ایجاد کنید. پس از این، می توانید پل های موجود را با استفاده از دستور مشاهده کنید:

ایجاد ماشین های مجازی KVM

تنظیمات KVM اوبونتوتکمیل شد و اکنون می توانیم به سمت استفاده از آن برویم. ابتدا بیایید به لیست ماشین های مجازی موجود نگاه کنیم:

لیست virsh -c qemu:///system

خالی است. می توانید یک ماشین مجازی از طریق ترمینال یا در رابط گرافیکی ایجاد کنید. برای ایجاد از طریق ترمینال، از دستور virt-install استفاده کنید. ابتدا به پوشه libvirt برویم:

سی دی /var/lib/libvirt/boot/

برای نصب های CentOSدستور به شکل زیر خواهد بود:

sudo virt-install\
--virt-type=kvm \
--نام centos7\
--ram 2048\
--vcpus=2 \
--os-variant=rhel7 \
--hvm\
--cdrom=/var/lib/libvirt/boot/CentOS-7-x86_64-DVD-1511.iso \
--network=bridge=br0,model=virtio \
--graphics vnc\
--disk path=/var/lib/libvirt/images/centos7.qcow2,size=40,bus=virtio,format=qcow2

بیایید نگاهی دقیق تر به معنای پارامترهای این دستور بیندازیم:

  • از نوع virt- نوع مجازی سازی، در مورد ما kvm؛
  • نام- نام ماشین جدید;
  • رم- مقدار حافظه در مگابایت؛
  • vcpus- تعداد هسته های پردازنده؛
  • OS-Variant- نوع سیستم عامل؛
  • سی دی رام - تصویر نصبسیستم های؛
  • شبکه پل- پل شبکه ای که قبلاً پیکربندی کردیم.
  • گرافیک- راهی برای دسترسی به رابط گرافیکی؛
  • مسیر دیسک- نشانی جدید سختدیسک برای این ماشین مجازی؛

پس از اتمام نصب ماشین مجازی، می توانید پارامترهای اتصال VNC را با استفاده از دستور زیر پیدا کنید:

sudo virsh vncdisplay centos7

اکنون می توانید داده های دریافتی را در کلاینت VNC خود وارد کرده و حتی از راه دور به ماشین مجازی متصل شوید. برای دبیان دستور کمی متفاوت خواهد بود، اما همه چیز مشابه به نظر می رسد:

برای دیدن تصاویر به پوشه بروید:

سی دی /var/lib/libvirt/boot/

در صورت لزوم می توانید تصویر نصب را از اینترنت دانلود کنید:

sudo wget https://mirrors.kernel.org/debian-cd/current/amd64/iso-dvd/debian-8.5.0-amd64-DVD-1.iso

سپس بیایید یک ماشین مجازی ایجاد کنیم:

sudo virt-install\
--virt-type=kvm \
--name=debina8 \
--ram=2048\
--vcpus=2 \
--os-variant=debian8 \
--hvm\
--cdrom=/var/lib/libvirt/boot/debian-8.5.0-amd64-DVD-1.iso \
--network=bridge=bridge0,model=virtio \
--graphics vnc\
--disk path=/var/lib/libvirt/images/debian8.qcow2,size=40,bus=virtio,format=qcow2

حالا بیایید دوباره به لیست ماشین های موجود نگاه کنیم:

لیست virsh -c qemu:///system

برای راه اندازی ماشین مجازی می توانید از دستور زیر استفاده کنید:

نام ماشین شروع sudo virsh

برای متوقف کردن:

نام ماشین خاموش کننده sudo virsh

برای تغییر حالت خواب:

sudo virsh suspend name machine

برای راه اندازی مجدد:

نام ماشین راه اندازی مجدد sudo virsh

sudo virsh reset name machine

برای حذف کاملماشین مجازی:

sudo virsh تخریب ماشین نام

ایجاد ماشین های مجازی در رابط کاربری گرافیکی\

اگر به رابط کاربری گرافیکی دسترسی دارید، نیازی به استفاده از ترمینال نیست، می توانید از رابط کاربری گرافیکی مدیریت مجازی کامل استفاده کنید ماشین های مجازیمدیر. برنامه را می توان از منوی اصلی راه اندازی کرد:

برای ایجاد یک ماشین جدید، روی نماد با نماد مانیتور کلیک کنید. بعد باید انتخاب کنید تصویر ISOسیستم شما همچنین می توانید از یک درایو CD/DVD واقعی استفاده کنید:

در صفحه بعدی، مقدار حافظه موجود در ماشین مجازی و همچنین تعداد هسته های پردازنده را انتخاب کنید:

در این صفحه باید اندازه ای را انتخاب کنید هارد دیسک، که در دستگاه شما موجود خواهد بود:

بر آخرین مرحلهبه عنوان یک جادوگر، باید بررسی کنید که تنظیمات دستگاه درست است و همچنین نام آن را وارد کنید. همچنین باید پل شبکه ای را که دستگاه از طریق آن به شبکه متصل می شود را مشخص کنید:

پس از این، دستگاه برای استفاده آماده می شود و در لیست ظاهر می شود. می توانید آن را با استفاده از مثلث سبز در نوار ابزار مدیر اجرا کنید.

نتیجه گیری

در این مقاله به نحوه نصب KVM Ubuntu 16.04 پرداختیم، نحوه آماده سازی کامل این محیط برای کار و همچنین نحوه ایجاد ماشین های مجازی و استفاده از آنها را بررسی کردیم. اگر سوالی دارید، در نظرات بپرسید!

برای نتیجه گیری، یک سخنرانی از Yandex در مورد اینکه مجازی سازی در لینوکس چیست:

شخصاً برای من راحت‌تر است که به KVM (ماشین مجازی مبتنی بر هسته) به عنوان سطحی از انتزاع نسبت به فناوری‌های مجازی‌سازی سخت‌افزاری VT-x و AMD-V اینتل فکر کنم. ما دستگاهی با پردازنده ای می گیریم که یکی از این فناوری ها را پشتیبانی می کند و روی آن شرط بندی می کنیم ماشین لینوکس، در لینوکس ما KVM را نصب می کنیم، در نتیجه فرصت ایجاد ماشین های مجازی را داریم. این تقریباً نحوه عملکرد میزبانی ابری است، به عنوان مثال، خدمات وب آمازون. در کنار KVM، گاهی اوقات از Xen نیز استفاده می شود، اما بحث در مورد این فناوری خارج از حوصله این پست است. برخلاف فناوری های مجازی سازی کانتینر، به عنوان مثال، Docker، KVM به شما اجازه می دهد تا هر سیستم عاملی را به عنوان یک سیستم مهمان اجرا کنید، اما همچنین Oسربار بالاتر برای مجازی سازی

توجه داشته باشید:مراحل توضیح داده شده در زیر توسط من آزمایش شده است لینوکس اوبونتو 14.04، اما از نظر تئوری آنها از بسیاری جهات به اندازه سایر موارد صادق خواهند بود نسخه های اوبونتو، و دیگران توزیع های لینوکس. همه چیز باید هم روی دسکتاپ و هم روی سرور کار کند که از طریق SSH قابل دسترسی است.

نصب KVM

ما بررسی می کنیم که آیا Intel VT-x یا AMD-V توسط پردازنده ما پشتیبانی می شود:

grep -E "(vmx|svm)" /proc/cpuinfo

اگر چیزی داغ شد، به این معنی است که پشتیبانی می شود و می توانید ادامه دهید.

نصب KVM:

به روز رسانی sudo apt-get
sudo apt-get install qemu-kvm libvirt-bin virtinst bridge-utils

آنچه معمولاً در جایی ذخیره می شود:

  • /var/lib/libvirt/boot/ - تصاویر ISO برای نصب سیستم های مهمان.
  • /var/lib/libvirt/images/ - تصاویر دیسکهای سختسیستم های مهمان؛
  • /var/log/libvirt/ - در اینجا باید همه گزارش‌ها را جستجو کنید.
  • /etc/libvirt/ - دایرکتوری با فایل های پیکربندی؛

اکنون که KVM نصب شده است، بیایید اولین ماشین مجازی خود را ایجاد کنیم.

ساخت اولین ماشین مجازی

من FreeBSD را به عنوان سیستم مهمان انتخاب کردم. دانلود تصویر ISO سیستم:

سی دی /var/lib/libvirt/boot/
sudo wget http:// ftp.freebsd.org/ path/ to/ some-freebsd-disk.iso

ماشین های مجازی در بیشتر موارد با استفاده از ابزار virsh مدیریت می شوند:

sudo virsh -- کمک

قبل از راه اندازی ماشین مجازی، باید اطلاعات بیشتری را جمع آوری کنیم.

ما به لیست شبکه های موجود نگاه می کنیم:

sudo virsh net-list

مشاهده اطلاعات در مورد شبکه خاص(به عنوان پیش فرض)

sudo virsh net-info پیش فرض

بیایید به لیست بهینه سازی های موجود برای سیستم عامل های مهمان نگاه کنیم:

sudo virt-install --os-variant list

بنابراین، اکنون یک ماشین مجازی با 1 CPU، 1 گیگابایت رم و 32 گیگابایت فضای دیسک، متصل به شبکه پیش فرض ایجاد می کنیم:

sudo virt-install\
--virt-type =kvm\
--نام freebsd10\
--ram 1024\
--vcpus=1\
--os-variant =freebsd8 \
--hvm\
--cdrom =/ var/ lib/ libvirt/ boot/ FreeBSD-10.2 -RELEASE-amd64-disc1.iso \
--شبکه شبکه =پیش فرض،مدل =virtio \
--graphics vnc\
--مسیر دیسک =/ var/ lib/ libvirt/ images/ freebsd10.img,size =32,bus =virtio

میتوانی ببینی:

هشدار اتصال به کنسول گرافیکی امکان پذیر نیست: virt-viewer نه
نصب شده است. لطفا بسته "virt-viewer" را نصب کنید.

نصب دامنه همچنان در حال انجام است. می توانید دوباره به کنسول متصل شوید
برای تکمیل مراحل نصب

این طبیعی است، این طوری باید باشد.

سپس به خصوصیات ماشین مجازی در قالب XML نگاه کنید:

sudo virsh dumpxml freebsd10

در اینجا بیشترین هستند اطلاعات کامل. این شامل، برای مثال، یک آدرس MAC است که بعداً به آن نیاز خواهیم داشت. در حال حاضر ما در حال یافتن اطلاعاتی در مورد VNC هستیم. در مورد من:

با استفاده از کلاینت مورد علاقه شما (من شخصا از Rammina استفاده می کنم)، از طریق VNC وارد می شویم و در صورت لزوم با استفاده از ارسال پورت SSH. ما مستقیما وارد نصب کننده FreeBSD می شویم. سپس همه چیز طبق معمول است - بعدی، بعدی، بعدی، سیستم نصب شده را دریافت می کنیم.

دستورات پایه

بیایید اکنون نگاه کنیم دستورات اساسیبرای کار با KVM

دریافت لیستی از تمام ماشین های مجازی:

لیست sudo virsh -- all

کسب اطلاعات در مورد یک ماشین مجازی خاص:

sudo virsh dominfo freebsd10

راه اندازی ماشین مجازی:

sudo virsh start freebsd10

توقف ماشین مجازی:

sudo virsh shutdown freebsd10

به سختی ماشین مجازی را میخکوب کنید (با وجود نام، این نهحذف):

sudo virsh freebsd10 را نابود می کند

راه اندازی مجدد ماشین مجازی:

sudo virsh راه اندازی مجدد freebsd10

شبیه سازی ماشین مجازی:

sudo virt-clone -o freebsd10 -n freebsd10-clone \
--file /var/lib/libvirt/images/freebsd10-clone.img

فعال/غیرفعال کردن autorun:

sudo virsh autostart freebsd10
sudo virsh autostart -- freebsd10 را غیرفعال کنید

اجرای virsh در حالت گفتگو (همه دستورات در حالت گفتگو - همانطور که در بالا توضیح داده شد):

سودو ویرش

ویرایش خصوصیات ماشین مجازی در XML، از جمله در اینجا می توانید محدودیت مقدار حافظه و غیره را تغییر دهید:

sudo virsh ویرایش freebsd10

مهم!نظرات از XML ویرایش شده متاسفانه حذف شده است.

هنگامی که ماشین مجازی متوقف می شود، اندازه دیسک نیز قابل تغییر است:

sudo qemu-img resize /var/ lib/ libvirt/ images/ freebsd10.img -2G
sudo qemu-img info /var/lib/libvirt/images/freebsd10.img

مهم!احتمالاً سیستم عامل مهمان شما دوست ندارد که دیسک به طور ناگهانی بزرگ یا کوچکتر شود. که در بهترین سناریو، در حالت اضطراری با پیشنهاد پارتیشن بندی مجدد دیسک بوت می شود. احتمالاً نباید این کار را بخواهید. ممکن است ایجاد یک ماشین مجازی جدید و انتقال همه داده ها به آن بسیار ساده تر باشد.

پشتیبان گیری و بازیابی بسیار ساده است. کافی است خروجی dumpxml و همچنین تصویر دیسک را در جایی ذخیره کنید و سپس آنها را بازیابی کنید. در یوتیوب موفق به یافتن ویدیو شدبا نمایش این روند، همه چیز واقعاً دشوار نیست.

تنظیمات شبکه

یک سوال جالب - چگونه تعیین کنیم که ماشین مجازی چه آدرس IP را پس از بارگیری دریافت کرده است؟ KVM این کار را به روشی هوشمندانه انجام می دهد. من این اسکریپت را در پایتون نوشتم:

#!/usr/bin/env python3

# اسکریپت virt-ip.py
# (ج) 2016 الکساندر آلکسیف
# http://site/

سیستم واردات
واردات مجدد
واردات سیستم عامل
فرآیند فرعی واردات
از xml .etree import ElementTree

def eprint(str):
print (str, file = sys.stderr)

if len(sys.argv)< 2 :
eprint("USAGE: " + sys .argv [ 0 ] + " " )
eprint("مثال: " + sys .argv [ 0 ] + " freebsd10" )
sys.exit(1)

if os .geteuid() != 0 :
eprint ("خطا: شما باید روت باشید")
eprint("Hint: run `sudo " + sys .argv [ 0 ] + " ...`" );
sys.exit(1)

اگر زیرفرآیند .call ( "which arping 2>&1 >/dev/null", پوسته = درست ) != 0 :
eprint("خطا: arping پیدا نشد" )
چاپ ( "نکته: "sudo apt-get install arping" را اجرا کنید")
sys.exit(1)

دامنه = sys.argv[1]

اگر نه re .match ("^*$"، دامنه):
چاپ ( "خطا: کاراکترهای نامعتبر در نام دامنه")
sys.exit(1)

Domout = زیر فرآیند .check_output ("virsh dumpxml" +domain+" || true" ,
پوسته = درست)
domout = domout.decode("utf-8").strip()

if domout == "" :
# پیام خطا قبلاً توسط dumpxml چاپ شده است
sys.exit(1)

Doc = ElementTree.fromstring(domout)

# 1. لیست تمام رابط های شبکه
# 2. Arping را روی هر رابط به صورت موازی اجرا کنید
پاسخ های #3.grep
cmd = "(ifconfig | cut -d " " -f 1 | grep -E "." | " + \
"xargs -P0 -I IFACE arping -i IFACE -c 1 () 2>&1 | " + \
"grep "bytes from") || true"

برای کودک در doc.iter():
if child.tag == "mac" :
macaddr = child.attrib["آدرس"]
macout = زیر فرآیند .check_output (cmd .format (macaddr) ,
پوسته = درست)
print(macout.decode("utf-8"))

این اسکریپت هم با شبکه پیش‌فرض و هم با شبکه پل شده کار می‌کند، که پیکربندی آن را بعداً بررسی خواهیم کرد. با این حال، در عمل، پیکربندی KVM بسیار راحت تر است تا همیشه آدرس های IP یکسانی را به سیستم های مهمان اختصاص دهد. برای انجام این کار، تنظیمات شبکه را ویرایش کنید:

پیش فرض sudo virsh net-edit

... چیزی شبیه به این:

>



>

پس از انجام این تغییرات


>

... و آن را با چیزی مانند:




>

سیستم مهمان را مجددا راه اندازی می کنیم و بررسی می کنیم که IP از طریق DHCP از روتر دریافت کرده باشد. اگر می خواهید سیستم مهمان داشته باشید آدرس IP استاتیک، این به طور معمول در خود سیستم مهمان پیکربندی شده است.

برنامه virt-manager

همچنین ممکن است به برنامه virt-manager علاقه مند باشید:

sudo apt-get install virt-manager
sudo usermod -a -G libvirtd USERNAME

پنجره اصلی آن به این صورت است:

همانطور که می بینید، virt-manager تنها یک رابط کاربری گرافیکی برای ماشین های مجازی نیست که به صورت محلی اجرا می شوند. با کمک آن می توانید ماشین های مجازی را که روی هاست های دیگر اجرا می شوند مدیریت کنید و همچنین به گرافیک های زیبا در زمان واقعی نگاه کنید. من شخصاً در virt-manager این را راحت می‌دانم که نیازی به جستجو در تنظیمات ندارید تا متوجه شوید VNC در کدام پورت در یک سیستم مهمان خاص اجرا می‌شود. شما فقط ماشین مجازی را در لیست پیدا کنید، دوبار کلیک کنید و به مانیتور دسترسی پیدا کنید.

با کمک virt-manager انجام کارهایی که در غیر این صورت نیاز به ویرایش فشرده فایل های XML و در برخی موارد اجرا دارند بسیار راحت است. دستورات اضافی. به عنوان مثال، تغییر نام ماشین های مجازی، تنظیمات CPUقرابت و موارد مشابه راستی، میزان استفاده از پردازندهوابستگی به طور قابل توجهی تأثیر همسایگان پر سر و صدا و تأثیر ماشین های مجازی بر سیستم میزبان را کاهش می دهد. در صورت امکان همیشه از آن استفاده کنید.

اگر تصمیم دارید از KVM به عنوان جایگزینی برای VirtualBox استفاده کنید، به خاطر داشته باشید که آنها نمی توانند مجازی سازی سخت افزار را بین خود به اشتراک بگذارند. برای اینکه KVM روی دسکتاپ شما کار کند، نه تنها باید تمام ماشین های مجازی را در VirtualBox و Vagrant متوقف کنید، بلکه سیستم را نیز راه اندازی مجدد کنید. من شخصا KVM را بسیار راحت‌تر از VirtualBox می‌دانم، حداقل به این دلیل که نیازی به اجرای دستور ندارد. راه اندازی sudo /sbin/rcvboxdrvپس از هر به روز رسانی هسته، به اندازه کافی با Unity کار می کند و به طور کلی به شما امکان می دهد تمام ویندوزها را مخفی کنید.

بهترین مقالات در این زمینه