紅聯Linux門戶
Linux幫助

如何在CentOS 7/RHEL 7終端服務器上安裝KVM

發布時間:2018-03-19 16:27:52來源:linux.cn作者:MjSeven
如何在 CnetOS 7 或 RHEL 7(Red Hat 企業版 Linux)服務器上安裝和配置 KVM(基于內核的虛擬機)?如何在 CentOS 7 上設置 KVM 并使用云鏡像 / cloud-init 來安裝客戶虛擬機?
基于內核的虛擬機(KVM)是 CentOS 或 RHEL 7 的虛擬化軟件。KVM 可以將你的服務器變成虛擬機管理器。本文介紹如何在 CentOS 7 或 RHEL 7 中使用 KVM 設置和管理虛擬化環境。還介紹了如何使用命令行在物理服務器上安裝和管理虛擬機(VM)。請確保在服務器的 BIOS 中啟用了虛擬化技術(VT)。你也可以運行以下命令測試 CPU 是否支持 Intel VT 和 AMD_V 虛擬化技術。
$ lscpu | grep Virtualization
Virtualization: VT-x
按照 CentOS 7/RHEL 7 終端服務器上的 KVM 安裝步驟進行操作。
 
步驟1:安裝 kvm
輸入以下 yum 命令:
# yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install
如何在CentOS 7/RHEL 7終端服務器上安裝KVM
啟動 libvirtd 服務:
# systemctl enable libvirtd
# systemctl start libvirtd
 
步驟2:確認 kvm 安裝
使用 lsmod 命令和 grep命令 確認加載了 KVM 模塊:
# lsmod | grep -i kvm
 
步驟3:配置橋接網絡
默認情況下,由 libvirtd 配置基于 dhcpd 的網橋。你可以使用以下命令驗證:
# brctl show
# virsh net-list
如何在CentOS 7/RHEL 7終端服務器上安裝KVM
所有虛擬機(客戶機)只能對同一臺服務器上的其它虛擬機進行網絡訪問。為你創建的私有網絡是 192.168.122.0/24。驗證:
# virsh net-dumpxml default
如果你希望你的虛擬機可用于 LAN 上的其他服務器,請在連接到你的 LAN 的服務器上設置一個網橋。更新你的網卡配置文件,如 ifcfg-enp3s0 或 em1:
# vi /etc/sysconfig/network-scripts/ifcfg-enp3s0 
添加一行:
BRIDGE=br0
使用 vi 保存并關閉文件。編輯 /etc/sysconfig/network-scripts/ifcfg-br0:
# vi /etc/sysconfig/network-scripts/ifcfg-br0
添加以下內容:
DEVICE="br0"
# I am getting ip from DHCP server #
BOOTPROTO="dhcp"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
ONBOOT="yes"
TYPE="Bridge"
DELAY="0"
重新啟動網絡服務(警告:ssh 命令將斷開連接,最好重新啟動該設備):
# systemctl restart NetworkManager
用 brctl 命令驗證它:
# brctl show
 
步驟4:創建你的第一個虛擬機
我將會創建一個 CentOS 7.x 虛擬機。首先,使用 wget 命令獲取 CentOS 7.x 最新的 ISO 鏡像:
# cd /var/lib/libvirt/boot/
# wget https://mirrors.kernel.org/centos/7.4.1708/isos/x86_64/CentOS-7-x86_64-Minimal-1708.iso
驗證 ISO 鏡像:
# wget https://mirrors.kernel.org/centos/7.4.1708/isos/x86_64/sha256sum.txt
# sha256sum -c sha256sum.txt
 
創建 CentOS 7.x 虛擬機
在這個例子中,我創建了 2GB RAM,2 個 CPU 核心,1 個網卡和 40 GB 磁盤空間的 CentOS 7.x 虛擬機,輸入:
# virt-install \
--virt-type=kvm \
--name centos7 \
--ram 2048 \
--vcpus=1 \
--os-variant=centos7.0 \
--cdrom=/var/lib/libvirt/boot/CentOS-7-x86_64-Minimal-1708.iso \
--network=bridge=br0,model=virtio \
--graphics vnc \
--disk path=/var/lib/libvirt/images/centos7.qcow2,size=40,bus=virtio,format=qcow2
從另一個終端通過 ssh 配置 vnc 登錄,輸入:
# virsh dumpxml centos7 | grep v nc
<graphics type='vnc' port='5901' autoport='yes' listen='127.0.0.1'>
請記錄下端口值(即 5901)。你需要使用 SSH 客戶端來建立隧道和 VNC 客戶端才能訪問遠程 vnc 服務器。在客戶端/桌面/ macbook pro 系統中輸入以下 SSH 端口轉發命令:
$ ssh [email protected] -L 5901:127.0.0.1:5901
一旦你建立了 ssh 隧道,你可以將你的 VNC 客戶端指向你自己的 127.0.0.1 (localhost) 地址和端口 5901,如下所示:
如何在CentOS 7/RHEL 7終端服務器上安裝KVM
你應該看到 CentOS Linux 7 客戶虛擬機安裝屏幕如下:
如何在CentOS 7/RHEL 7終端服務器上安裝KVM
現在只需按照屏幕說明進行操作并安裝CentOS 7。一旦安裝完成后,請繼續并單擊重啟按鈕。 遠程服務器關閉了我們的 VNC 客戶端的連接。你可以通過 KVM 客戶端重新連接,以配置服務器的其余部分,包括基于 SSH 的會話或防火墻。
 
使用云鏡像
以上安裝方法對于學習目的或單個虛擬機而言是可行的。你需要部署大量的虛擬機嗎? 可以試試云鏡像。你可以根據需要修改預先構建的云鏡像。例如,使用 Cloud-init 添加用戶、ssh 密鑰、設置時區等等,這是處理云實例的早期初始化的事實上的多分發包。讓我們看看如何創建帶有 1024MB RAM,20GB 磁盤空間和 1 個 vCPU 的 CentOS 7 虛擬機。(LCTT 譯注: vCPU 即電腦中的虛擬處理器)
 
獲取 CentOS 7 云鏡像
# cd /var/lib/libvirt/boot
# wget http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2
 
創建所需的目錄
# D=/var/lib/libvirt/images
# VM=centos7-vm1 ## vm name ##
# mkdir -vp $D/$VM
mkdir: created directory '/var/lib/libvirt/images/centos7-vm1'
 
創建元數據文件
# cd $D/$VM
# vi meta-data
添加以下內容:
instance-id: centos7-vm1
local-hostname: centos7-vm1
 
創建用戶數據文件
我將使用 ssh 密鑰登錄到虛擬機。所以確保你有 ssh 密鑰:
# ssh-keygen -t ed25519 -C "VM Login ssh key"
如何在CentOS 7/RHEL 7終端服務器上安裝KVM
編輯用戶數據如下:
# cd $D/$VM
# vi user-data
添加如下(根據你的設置替換 hostname、users、ssh-authorized-keys):
#cloud-config
# Hostname management
preserve_hostname: False
hostname: centos7-vm1
fqdn: centos7-vm1.nixcraft.com
# Users
users:
- default
- name: vivek
groups: ['wheel']
shell: /bin/bash
sudo: ALL=(ALL) NOPASSWD:ALL
ssh-authorized-keys:
- ssh-ed25519 F2ot8MOdNXCpHem0e2Wemg4nNmL2Tio4Ik1JY VM Login ssh key
# Configure where output will go
output:
all: ">> /var/log/cloud-init.log"
# configure interaction with ssh server
ssh_genkeytypes: ['ed25519', 'rsa']
# Install my public ssh key to the first user-defined user configured
# in cloud.cfg in the template (which is centos for CentOS cloud images)
ssh_authorized_keys:
- ssh-ed25519 F2ot8MOdNXCpHem0e2Wemg4nNmL2Tio4Ik1JY VM Login ssh key
# set timezone for VM
timezone: Asia/Kolkata
# Remove cloud-init 
runcmd:
- systemctl stop network && systemctl start network
- yum -y remove cloud-init
 
復制云鏡像
# cd $D/$VM
# cp /var/lib/libvirt/boot/CentOS-7-x86_64-GenericCloud.qcow2 $VM.qcow2
 
創建 20GB 磁盤映像
# cd $D/$VM
# export LIBGUESTFS_BACKEND=direct
# qemu-img create -f qcow2 -o preallocation=metadata $VM.new.image 20G
# virt-resize --quiet --expand /dev/sda1 $VM.qcow2 $VM.new.image
如何在CentOS 7/RHEL 7終端服務器上安裝KVM
用縮放后的鏡像覆蓋它:
# cd $D/$VM
# mv $VM.new.image $VM.qcow2
 
創建一個 cloud-init ISO
# mkisofs -o $VM-cidata.iso -V cidata -J -r user-data meta-data
如何在CentOS 7/RHEL 7終端服務器上安裝KVM
 
創建一個池
# virsh pool-create-as --name $VM --type dir --target $D/$VM
Pool centos7-vm1 created
 
安裝 CentOS 7 虛擬機
# cd $D/$VM
# virt-install --import --name $VM \
--memory 1024 --vcpus 1 --cpu host \
--disk $VM.qcow2,format=qcow2,bus=virtio \
--disk $VM-cidata.iso,device=cdrom \
--network bridge=virbr0,model=virtio \
--os-type=linux \
--os-variant=centos7.0 \
--graphics spice \
--noautoconsole
刪除不需要的文件:
# cd $D/$VM
# virsh change-media $VM hda --eject --config
# rm meta-data user-data centos7-vm1-cidata.iso
 
查找虛擬機的 IP 地址
# virsh net-dhcp-leases default
如何在CentOS 7/RHEL 7終端服務器上安裝KVM
 
登錄到你的虛擬機
使用 ssh 命令:
# ssh [email protected]
如何在CentOS 7/RHEL 7終端服務器上安裝KVM
 
有用的命令
讓我們看看管理虛擬機的一些有用的命令。
列出所有虛擬機
# virsh list --all
 
獲取虛擬機信息
# virsh dominfo vmName
# virsh dominfo centos7-vm1
 
停止/關閉虛擬機
# virsh shutdown centos7-vm1
 
開啟虛擬機
# virsh start centos7-vm1
 
將虛擬機標記為在引導時自動啟動
# virsh autostart centos7-vm1
 
重新啟動(軟安全重啟)虛擬機
# virsh reboot centos7-vm1
 
重置(硬重置/不安全)虛擬機
# virsh reset centos7-vm1
 
刪除虛擬機
# virsh shutdown centos7-vm1
# virsh undefine centos7-vm1
# virsh pool-destroy centos7-vm1
# D=/var/lib/libvirt/images
# VM=centos7-vm1
# rm -ri $D/$VM
查看 virsh 命令類型的完整列表:
# virsh help | less
# virsh help | grep reboot
 
安裝KVM以及配置熱遷移環境:http://www.1851002.live/linux/28647.html
ubuntu下用libvirt安裝kvm虛擬機時找不到/bin/qemu-kvm問題解決:http://www.1851002.live/linux/19379.html
Ubuntu15.04安裝KVM:http://www.1851002.live/linux/16790.html
CentOS 5.5下安裝KVM:http://www.1851002.live/linux/7047.html
Debian 6.0安裝KVM并橋接網絡:http://www.1851002.live/linux/5362.html
贵州体彩11选5查询号码