نحوه نصب و تنظیم KVM در سرورهای با سیستمعامل CentOS 7 یا RHEL چگونه است؟ چگونه میتوان ابزار KVM را در CentOS 7 نصب و از ایمیجهای ابری برای نصب ماشین مجازی میهمان استفاده کرد؟ اینها سؤالاتی است که در این مطلب به دنبال پاسخ آنها هستیم. با ما همراه باشید. ماشین مجازی مبتنی بر هسته یا KVM یک...
1400/04/214085 بازدید
نحوه نصب و تنظیم KVM در سرورهای با سیستمعامل CentOS 7 یا RHEL چگونه است؟ چگونه میتوان ابزار KVM را در CentOS 7 نصب و از ایمیجهای ابری برای نصب ماشین مجازی میهمان استفاده کرد؟ اینها سؤالاتی است که در این مطلب به دنبال پاسخ آنها هستیم. با ما همراه باشید.
ماشین مجازی مبتنی بر هسته یا KVM یک نرمافزار شبیهسازی برای CentOS یا RHEL 7 است. KVM سرور شما را به یک مرکز سرپرستی تبدیل میکند. در این مطلب به شما نحوه نصب و مدیریت یک فضای شبیهسازیشده را با کمک ابزار KVM در لینوکس CentOS 7 یا RHEL 7 نشان میدهیم. همچنین روش نصب و مدیریت ماشینهای مجازی (VM) در یک سرور فیزیکی با استفاده از CLI توضیح داده خواهد شد. حتماً دقت کنید که تکنولوژی شبیهسازی یا VT در بایوس سرور شما فعال باشد. در همین حال، میتوانید با استفاده از فرمان زیر از پشتیبانی CPU اینتل VT و شبیهسازی AMD-V مطمئن شوید.
با کمک فرمانهای lsmod و grep از بارگذاری ماژول KVM مطمئن شوید.
php
1# lsmod | grep -i kvm
گام ۳) تنظیم شبکه بریج
شبکه بریج مبتنی بر dhcpd به صورت پیشفرض توسط libvirtd تنظیم میشود. این موضوع را میتوانید با استفاده از فرمانهای زیر بررسی کنید.
php
1# brctl show23# virsh net-list
شبکه پیشفرض KVM
تمام ماشینهای مجازی (از نوع میهمان) تنها دسترسی شبکه به دیگر VM ها در همان سرور را دارند. در اینجا، یک شبکه خصوصی 192.168.122.0/24 برای شما ساخته میشود. آن را بررسی کنید.
php
1# virsh net-dumpxml default
اگر بخواهید که ماشینهای مجازی شما برای دیگر سرورها در شبکه LAN در دسترس باشند، باید یک شبکه بریج در سرور متصل به LAN تنظیم کنید. برای این منظور، فایل تنظیمات nic از جمله ifcfg-enp3s0 یا em1 را بروزرسانی کنید.
php
1# vi /etc/sysconfig/network-scripts/enp3s0
خط زیر را اضافه نمایید.
php
1BRIDGE=br0
فایل را در vi ذخیره کرده و ببندید. سپس فایل /etc/sysconfig/network-scripts/ifcfg-br0 را ویرایش کرده و اضافه کنید.
php
1# vi /etc/sysconfig/network-scripts/ifcfg-br0
خطوط زیر را اضافه کنید.
php
1DEVICE="br0"23# I am getting ip from DHCP server #45BOOTPROTO="dhcp"67IPV6INIT="yes"89IPV6_AUTOCONF="yes"1011ONBOOT="yes"1213TYPE="Bridge"1415DELAY="0"
سرویس شبکه را دوباره راهاندازی کنید. توجه داشته باشید که فرمان ssh قطع خواهد شد و بهتر است که از نو شروع کنید.
php
1# systemctl restart NetworkManager
موضوع را با فرمان brctl بررسی کنید.
php
1# brctl show
گام ۴) اولین ماشین مجازی خود را بسازید.
در اینجا میخواهیم یک VM در CentOS 7.x ایجاد کنیم. ابتدا با کمک فرمان wget آخرین نسخه ایمیج CentOS 7.x را دریافت کنید.
php
1# cd /var/lib/libvirt/boot/23# wget https://mirrors.kernel.org/centos/7.4.1708/isos/x86_64/CentOS-7-x86_64-Minimal-1708.iso
در اینجا، قصد داریم که ماشین مجازی CentOS 7.x را با ۲ گیگابایت حافظه رم، دو هسته پردازنده، یک nic و ۴۰ گیگابایت فضای دیسک ایجاد کنیم. برای این منظور داریم:
در اینجا باید عدد پورت یا 5901 را یادداشت کنید. برای دسترسی به سرور ریموت vnc میبایست از یک کلاینت SSH برای تنظیم تونل و یک کلاینت VNC استفاده کنید. از طریق کلاینت یا دسکتاپ، فرمان هدایت پورت SSH را به صورت زیر تایپ نمایید.
وقتی تونل ssh راهاندازی شد، میتوانید کلاینت VNC خود را به لوکالهاست 127.0.0.1 و پورت 5901 به صورت زیر ارجاع دهید.
ارجاع کلاینت VNC
در این حالت میبایست صفحه نصب میهمان لینوکس CentOS را به صورت زیر مشاهده کنید.
صفحه خوشامدگویی نصب لینوکس CentOS
حالا فقط دستورالعملهایی را که در صفحه ظاهر میشوند، دنبال کرده و CentOS 7 را نصب کنید. وقتی نصب به پایان رسید، دکمه reboot را بزنید. سرور ریموت باعث بستهشدن ارتباط با کلاینت VNC شده است. میتوانید با استفاده از ابزار KVM ارتباط دوباره برقرار کرده تا سایر قسمت های سرور از جمله سرویس SSH یا فایروال را تنظیم کنید.
نحوه ساخت ماشین مجازی RHEL 7.x
ابتدا باید فایل rhel-server-7.3-x86_64-dvd.iso را به صورت ذخیرهشده در اختیار داشته باشید. در اینجا ماشین مجازی RHEL 7.x را با ۲ گیگابایت حافظه رم، دو هسته پردازنده، یک nic و ۴۰ گیگابایت فضای دیسک میسازیم.
در اینجا باید عدد پورت یا 5904 را یادداشت کنید. برای دسترسی به سرور ریموت vnc میبایست از یک کلاینت SSH برای تنظیم تونل و یک کلاینت VNC استفاده کنید. از طریق کلاینت یا دسکتاپ، فرمان هدایت پورت SSH را به صورت زیر تایپ نمایید.
وقتی تونل ssh راهاندازی شد، می توانید کلاینت VNC را به لوکالهاست 127.0.0.1 و پورت 5904 ارجاع دهید تا به مراحل بعدی نصب RHEL 7.x بپردازید.
گام ۵) استفاده از ایمیجهای ابری
روش نصبی که در بالا ارائه شد، میتواند برای اهداف آموزشی و یا یک ماشین مجازی مناسب باشد. امّا در صورتی که میخواهید از تعداد بیشتری از ماشینهای مجازی استفاده کنید، بهتر است ایمیجهای ابری را امتحان کنید. امکان ویرایش ایمیجهای ابری «پیش تولید» مطابق نیازهای شما وجود خواهد داشت. به عنوان مثال، میتوانید کاربر اضافه کنید، کلیدهای ssh وارد نمایید و منطقه زمانی را تنظیم کنید. حالا ببینیم که به این روش، چگونه میتوان یک ماشین مجازی با یک گیگابایت حافظه رم، ۲۰ گیگابایت فضای دیسک و یک vCPU در CentOS 7 ساخت.
دریافت ایمیج ابری CentOS 7
php
1# cd /var/lib/libvirt/boot23# wget http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2
تولید دایرکتوریهای موردنیاز
php
1# D=/var/lib/libvirt/images23# VM=centos7-vm1 ## vm name ##45# mkdir -vp $D/$VM67mkdir: created directory '/var/lib/libvirt/images/centos7-vm1'
ایجاد فایل user-data
در اینجا میخواهیم از طریق کلیدهای ssh به VM وارد شویم. بر این اساس، ابتدا دقت کنید که کلیدهای ssh در جایگاه خود قرار گرفته باشند.
php
1# ssh-keygen -t ed25519 -C "VM Login ssh key"
فرمان ssh-keygen
حالا user-data را مطابق زیر ویرایش کنید.
php
1# cd $D/$VM23# vi user-data
مطابق تنظیماتی که دارید، موارد زیر را اضافه کنید.
php
1#cloud-config23# Hostname management45preserve_hostname: False67hostname: centos7-vm189fqdn: centos7-vm1.nixcraft.com1011# Users1213users:1415- default1617- name: vivek1819groups: ['wheel']2021shell: /bin/bash2223sudo: ALL=(ALL) NOPASSWD:ALL2425ssh-authorized-keys:2627- ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIMP3MOF2ot8MOdNXCpHem0e2Wemg4nNmL2Tio4Ik1JY VM Login ssh key2829# Configure where output will go3031output:3233all: ">> /var/log/cloud-init.log"3435# configure interaction with ssh server3637ssh_genkeytypes: ['ed25519', 'rsa']3839# Install my public ssh key to the first user-defined user configured4041# in cloud.cfg in the template (which is centos for CentOS cloud images)4243ssh_authorized_keys:4445- ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIMP3MOF2ot8MOdNXCpHem0e2Wemg4nNmL2Tio4Ik1JY VM Login ssh key4647# set timezone for VM4849timezone: Asia/Kolkata5051# Remove cloud-init5253runcmd:5455- systemctl stop network && systemctl start network5657- yum -y remove cloud-init
ایمیج ابری را کپی کنید.
php
1# cd $D/$VM23# cp /var/lib/libvirt/boot/CentOS-7-x86_64-GenericCloud.qcow2 $VM.qcow2
نمونههای خروجی (به خاطر داشته باشید که پسورد تصادفی روت در صفحه نمایش داده خواهد شد):
php
1[ 3.9] Downloading: http://libguestfs.org/download/builder/ubuntu-16.04.xz23######################################################################## 100.0%45[ 121.7] Planning how to build this image67[ 121.7] Uncompressing89[ 126.5] Resizing (using virt-resize) to expand the disk to 20.0G1011[ 142.1] Opening the new disk1213[ 143.8] Setting a random seed1415[ 143.8] Setting the machine ID in /etc/machine-id1617[ 143.8] Setting the hostname: ncbz011819[ 144.3] Setting the timezone: Asia/Kolkata2021[ 144.3] Setting passwords2223virt-builder: Setting random password of root to 1KTLsuVx14k989eq2425[ 144.9] Finishing off2627Output file: /var/lib/libvirt/images/ncbz01-disk01.qcow22829Output size: 20.0G3031Output format: qcow23233Total usable space: 18.6G3435Free space: 17.7G (94%)
جمعبندی
در این مطلب با نحوه نصب و راهاندازی ابزار KVM در سرورهای با سیستمعامل لینوکس CentOS 7 یا RHEL 7 آشنا شدید. امیدواریم که این مطلب نیز موردتوجه شما قرار گرفته باشد.