1. 程式人生 > >CentOS7環境下建立kvm虛擬機器,搭建橋接環境,並實現用命令列控制虛擬機器

CentOS7環境下建立kvm虛擬機器,搭建橋接環境,並實現用命令列控制虛擬機器

宿主機網路橋接配置

我們要求建立的虛擬機器可以和宿主主機共享網段,拓撲圖如下:

圖1

而橋接環境的宿主機的網路構架如下:

圖2

這是宿主機有兩塊網絡卡的情況下,如果沒有兩塊網絡卡(如上圖沒有eth1)也行,只要把物理網絡卡(eth0)作為對外介面,而橋接裝置(br0)作為宿主機網絡卡也可以正常通訊。

宿主機橋接工具

yum -y install bridge-utils
# 說明:很多Centos的系統都已經自帶了,不用安裝,可用(rpm -qa | grep birdge)指令檢視。

宿主機的網路配置

# 對網路介面(圖2中eth0)的修改
cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0" ONBOOT=yes BRIDGE=br0 # 說明:以上三項是必須的,至於HWADDR、NAME、。。。等等,我不知道是不是必須寫,自己嘗試。 # 對橋接裝置(圖2中的br0)的修改 cat /etc/sysconfig/network-scripts/ifcfg-br0 DEVICE="br0" TYPE=Bridge BOOTPROTO=dhcp ONBOOT=yes # 說明:這個裝置大多數情況是沒有的,需要自己建立,同時這個裝置是可以有網址的,作為宿主機的網絡卡使用(如果圖2中宿主機沒有eth1,那麼eth0被作為介面使用,而這個br0就用來當原來eth0了)。

然後重啟網絡卡就行了

宿主機kvm安裝

工具安裝
yum install -y qemu-kvm qemu-kvm-tools libvirt
yum install -y virt-install net-tools
systemctl enable libvirtd
systemctl start libvirtd
虛擬機器的建立
# Centos7環境下的建立
qemu-img create -f raw 磁碟名.raw 磁碟大小
virt-install --virt-type kvm --name 虛擬機器名 --ram 記憶體大小 --vcpus=CPU核數 --cdrom=映象路徑 --disk path=磁碟路徑 --network
bridge=橋接裝置(圖2中的br0),model=virtio --graphics vnc,listen=0.0.0.0 --noautoconsole
# Centos6環境下的建立 qemu-img create -f raw 磁碟名.raw 磁碟大小 virt-install --name 虛擬機器名 --ram 記憶體大小 --vcpus=CPU核數 --disk path=映象路徑  --network bridge=橋接裝置(圖2中的br0)  --cdrom 映象路徑 --vnclisten=0.0.0.0 --vncport=5900 --vnc # Centos6下這麼建立有一個問題,就是vnc監聽埠是固定的不會自動修改,需要修改配置檔案。操作如下: virsh edit 虛擬機器名 。。。。。 <graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'>
<listen type='address' address='0.0.0.0'/> </graphics> 。。。。 # 將 autoport 選項改成 yes # 如果不處理,那麼批量克隆的時候就只能啟動一臺虛擬機器。

建立完成後需要安裝,用自帶的 virt-manager 圖形介面和 vncviewer 圖形介面進行安裝。注意vnc連結的埠就是上圖中的 vnclisten 和 port,即 0.0.0.0:5900,當然這個埠只是你建立的第一臺,如果建立很多了虛擬機器會自動分配埠。可以自行檢視埠,操作如下:

# netstat -tunlp//檢視埠
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name   
tcp        0      0 0.0.0.0:5900            0.0.0.0:*               LISTEN      4878/qemu-kvm       
tcp        0      0 0.0.0.0:5901            0.0.0.0:*               LISTEN      5051/qemu-kvm       
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           
tcp        0      0 0.0.0.0:20048           0.0.0.0:*               LISTEN      1590/rpc.mountd     
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      2821/dnsmasq      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1474/sshd           
tcp        0      0 0.0.0.0:46200           0.0.0.0:*               LISTEN      -                   
.........
# vncviewer //啟動後按照埠連結圖示為0.0.0.0:5900和0.0.0.0:5901兩臺虛擬機器
# .........//按照自己的要求安裝成功後修改檔案

如果想用命令列進行控制虛擬機器,有兩種方法,一是ssh服務,需要虛擬機器搭建好網路環境,而且宿主機和虛擬機器都安裝有openssh軟體;二是virsh console your_vm_names 的指令,但是這個指令需要在虛擬機器內部做一些修改具體如下:

# 對於CentOS7
grubby --update-kernel=ALL --args="console=ttyS0"
reboot
# 對於其他linux
# 首先在 sercuretty 中新增 ttyS0
echo "ttyS0" >> /etc/sercuretty
# 其次在 grub.conf 中特定行加入 console=ttyS0
cat /etc/grub.conf | grep console=ttyS0
kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD rd_LVM_LV=VolGroup/lv_swap SYSFONT=latarcyrheb-sun16 crashkernel=128M rd_LVM_LV=VolGroup/lv_root  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet console=ttyS0
# 最後在 inittab 新增 S0:12345:respawn:/sbin/agetty ttyS0 115200
echo "S0:12345:respawn:/sbin/agetty ttyS0 115200" >> /etc/inittab
reboot
# 如果不操作那麼他會停在如下位置
[[email protected] myCentos]# virsh console 虛擬機器名
Connected to domain centos7
Escape character is ^]

這樣就可以用命令列操控虛擬機器了

如果想用指令碼操作的話需要用到 expect 指令碼來處理登入互動介面,我的一個例子如下

# cat connect.exp
set timeout 3s
set ip [lindex $argv 0]
set setip [lindex $argv 1]
spawn ssh $ip
expect "password:"
send "123456\n"
expect "#"
send "cd /home/\n"
expect "#"
send "./vmset.sh $setip\n"
expect eof
exit
# timeout 是指互動時延,超過了指令碼就自動結束
# ip 和 setip 是和 shell 指令碼一樣的傳入值,值得注意的是 expect 指令碼傳值是從 $argv 0 開始
# spawn 後面接的是要執行的指令
# 然後就是沒捕捉到一個關鍵字(即 expect "關鍵字"),就傳送你想要傳送的(即 send "傳送的內容")

順便將kvm虛擬機器管理工具的部分常用命令寫出來

virt-install   # 建立kvm虛擬機器
virsh list --all  # 檢視正在執行的KVM虛擬機器
virsh list --all # 檢視所有KVM虛擬機器
virsh start name   # 啟動KVM虛擬機器
virsh shutdown name # 正常關閉KVM虛擬機器(一般要等幾分鐘)
virsh destroy name   # 強制關閉KVM虛擬機器(類似於直接斷電)
virsh suspend name   # 掛起KVM虛擬機器
virsh resume name   # 恢復掛起的KVM虛擬機器
virsh dumpxml name   # 檢視KVM虛擬機器配置檔案
virsh edit name    # 編輯KVM虛擬機器的xml配置檔案(虛擬機器關機後生效)
virsh undefine name    # 徹底刪除KVM虛擬機器,建議先用virsh dumpxml name > xxx.xml 儲存配置檔案)
virsh define xxx.xml    # 根據xxx.xml檔案定義虛擬機器
virsh console name      # 字元介面控制虛擬機器
virsh domiflist name    # 顯示虛擬機器的網絡卡資訊
virsh attach-interface name --type bridge --source br0  --medol virtio--config
# 給虛擬機器增加網絡卡,後面是網絡卡引數,根據 domiflist 檢視情況來確定(虛擬機器關機後生效,宿主機重啟後失效,需要儲存到配置檔案中,在重新define)
virsh detach-interface name  --type bridge --mac  實體地址
# 刪除虛擬機器網絡卡,引數根據 domiflist 檢視情況來

相關推薦

CentOS7環境建立kvm虛擬機器搭建環境實現命令控制虛擬機器

宿主機網路橋接配置我們要求建立的虛擬機器可以和宿主主機共享網段,拓撲圖如下: 圖1而橋接環境的宿主機的網路構架如下: 圖2這是宿主機有兩塊網絡卡的情況下,如果沒有兩塊網絡卡(如上圖沒有eth1)也行,只要把物理網絡卡(eth0)作為對

centos7.4KVM虛擬機器安裝使用

      本來是用的vmware,不過後來想試下KVM,想著裝個ZSTACK也行,結果zstack使用網路安裝沒搞明白,把物理機系統毀了,這下徹底完蛋了,只好還裝個centos了,但是又不想用VMWARE就想起來用KVM,正好也是學習下,說來就來,搞起 安裝系統,就不用

Python虛擬環境建立Django專案

本操作在Cmder工具下進行操作 一、虛擬環境的配置 1.首先選擇建立虛擬環境的工作目錄(d盤為例)    2.建立虛擬環境資料夾,(start .)可檢視資料夾路徑資訊   3.建立虛擬環境 命令:python -m venv 資料

CentOS7.4建立laravel5.4專案(lnmp環境

因為最近在學習linux,學習linux同時安裝LNMP的環境搭配。在這裡記錄下我的centos7.4下安裝laravel的安裝過程。 一、下載composer並安裝 [email protected]_0_16_centos ~]# php -r "copy('https://i

Python虛擬環境在離線斷網環境建立專案虛擬環境和安裝依賴包

1.環境介紹: Centos7 Python 2.7.5 2 步驟:   1  在一臺有網的機子上先搞好一個虛擬環境並安裝好虛擬環境中依賴的Python 外掛包       yum install -y python-virt

在ESXI的虛擬機器搭建Android開發環境和模擬器一波三折

環境為ESXI6.0,虛擬機器為Server 2008R2 X64 遇到的問題,以及解決方案,如下。 1. 需要Intel HAWM,但是安裝失敗了。原因是虛擬機器的虛擬化配置沒有開啟。解決方法:編輯ESXI伺服器上的 vi /etc/vmware/config 加入一行

ubuntu虛擬機器模式靜態ip上網

近期使用VM安裝了ubuntu12.10玩玩,途中也遇到了許多問題,安裝完成後,系統預設是選擇NAT連線方式的,可以直接通過火狐瀏覽器上網。(不需任何設定,系統自己配置好了)。但是在和PC和板子互ping的時候出現了問題,首先,PC的IP是固定的(公司固定的),因此使用NA

KVM命令建立虛擬機器使用整合virtio驅動的win2008r2_x64安裝光碟安裝系統

安裝光碟使用UltraISO整合驅動,很簡單,這裡就不多說了 [[email protected] vm]# qemu-img create -f qcow2 vm04.img 40G Formatting 'vm04.img', fmt=qcow2 size=4

oracle在dos環境建立使用者表空間賦予使用者許可權

1.開啟資料庫驅動sqlplus/nolog   (此處切記不能有分號)2.以管理員許可權登入conn / as sysdba;3.建立新使用者create user 使用者名稱 identified by 密碼;4.給使用者授權grant resource,connect,

CentOS7.4建立DNS主從服務器(二)

bind dns master-slave (一)DNS主從同步的原理:1、master DNS服務器每次修改完成並重啟服務後,將傳送notify給所有的slave DNS服務器; 2、slave DNS服務器將查詢master服務器的SOA記錄; 3、master DNS服務器收到請求後將SOA

弄透VMware虛擬機器的網路設定三大模式:模式主機模式、NAT模式

前言:我們在使用的虛擬機器的時候,總會碰到很多網路設定相關的東西。我在深受其害之後,苦心專研之後,決定統一整理下虛擬機器網路設定的三大模式: 1,橋接模式:你的虛擬機器能夠上網能夠訪問你的主機,網路上其他計算機和自己的計算機都能訪問到你的虛擬機器。 2,主機模式:顧

Linux環境多庫svn安裝與配置(獨立庫多個配置檔案)

[先在伺服器中開啟放行 3690 埠!!!] (1)檢視是否已經安裝了svn 命令:svnserve --version 沒有安裝,出現下面資訊-> 已經安裝,出現下面版本資訊-> 檢視安裝svn的路徑資訊:rpm -ql subversion

Linux環境多庫svn安裝與配置(獨立庫公用一個配置檔案)

[先在伺服器中開啟放行 3690 埠!!!] (1)檢視是否已經安裝了svn 命令:svnserve --version 沒有安裝,出現下面資訊-> 已經安裝,出現下面版本資訊-> 檢視安裝svn的路徑資訊:rpm -ql subversion

MongoDB實戰-如何在Windows環境建立副本集

本篇主要講解副本集的建立過程,採用的副本集結構為1個主節點,一個從節點一個仲裁節點。廢話不多說,建立步驟如下: 1. 目錄結構拷貝     首先進入MongoDB的安裝目錄,如C:\Programme Files\MongoDB\Server。將該目錄下的資料夾拷貝出三份複

cocos2d-x v3.0各個環境建立專案以及編譯、執行官方DEMO

如何建立一個新專案 How to start a new game Runsetup.pyRun thecocosscriptExample: $ cd cocos2d-x $ ./setup.py $ source FILE_TO_SAVE_SYSTEM_VARIAB

Kubernetes(K8S)叢集在centos7.4建立

自己在搭Kubernetes(K8S)叢集下遇到的坑寫一點隨筆。 本次採用192.168.60.21,192.168.60.22,192.168.60.23作為需要裝的伺服器。 master需要安裝etcd, flannel,docker, kubernetes   192.168.6

虛擬機器搭建偽分散式Hadoop步驟詳解

本人安裝的版本試Hadoop2.4.1版本。首先上傳hadoop的安裝包到伺服器上去/home/hadoop/1.解壓Hadoop到指定的檔案下,我解壓的目錄在主目錄下新建的app檔案內$ tar -zxvf hadoop2.4.1.tar.gz -C app/2、配置Had

win10環境配置django2.0.4+Apache2.4+python3.6專案以及Django靜態檔案、Apache多專案配置的解決方案(親測)

1 安裝django, Apache,python 要求Apache和python位數一致,比如我的Apache2.4-x86和 python3.6-32位 我的安裝位置: Apache2.4 ---  E:\Apache24 python3.6---E:\pht

Windows環境建立使用動態連結庫(CodeBlocks版)

首先建立動態連結庫工程,工程名為test。 然後將下面這段程式碼複製到main.cpp裡去。 #include "main.h" EXPORT int sum (int a, int b) {

筆記:虛擬機器ubuntu搭建android開發環境

 如果cpu 是AMD, 並且在Windows下, android studio自帶的模擬器是不能正常執行的。 試了試安裝比較專業的genymotion模擬器, 安裝過程中也是無數的問題, 最後也沒有