1. 程式人生 > >本地使用qemu+libvirt來管理映象

本地使用qemu+libvirt來管理映象

1. 如何使用命令列啟動虛擬機器:

1.0 host環境配置

# centos5u7,安裝以下依賴包
sudo yum -y install kvm kmod-kvm kvm-qemu-img libvirt python-virtinst bridge-utils

1.1 修改virt network配置,如下是具體方法(非必須的):

這一步非必須的,如果省略的話,需要使用命令virsh console vm-name 來檢視vm-name的ip地址
下面是自己定義的default network的配置檔案default.xml,為固定的mac地址指定ip:

<network
>
<name>default</name> <uuid>dc69ff61-6445-4376-b940-8714a3922bf7</uuid> <forward mode='nat'/> <bridge name='virbr0' stp='on' delay='0' /> <ip address='192.168.122.1' netmask='255.255.255.0'> <dhcp> <range start='192.168.122.2' end='192.168.122.254'
/>
<host mac='52:54:00:4a:1e:d3' name='guest1' ip='192.168.122.3' /> <host mac='00:25:90:eb:34:2c' name='guest2' ip='192.168.122.4' /> </dhcp> </ip> </network>

執行命令生效:

# 停止
sudo virsh net-destroy default
# 使用default.xml建立default net
sudo virsh net-define default
.xml
# 啟動default net sudo virsh net-start default

1.2 配置qemu-kvm

配置檔案kvm-1.xml

<domain type='kvm'>
  <name>kvm-1</name>
  <uuid>894396a2-4319-5171-f4dc-18a33ba080a3</uuid>
  <memory>33554432</memory>
  <currentMemory>33554432</currentMemory>
  <vcpu>8</vcpu>
  <os>
    <type arch='x86_64' machine='rhel5.6.0'>hvm</type>
    <boot dev='hd'/>
    <boot dev='cdrom'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <pae/>
  </features>
  <clock offset='utc'>
    <timer name='pit' tickpolicy='delay'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2' cache='none'/>
      <source file='/home/trusty-server-cloudimg-amd64-disk1-ubuntu.qcow2'/>
      <target dev='vda' bus='virtio'/>
    </disk>
    <disk type='block' device='disk'>
      <driver name='qemu' type='raw' cache='none'/>
      <source dev='/dev/sdc1'/>
      <target dev='vdb' bus='virtio'/>
    </disk>
    <controller type='ide' index='0'/>
    <controller type='virtio-serial' index='0'/>
    <interface type='network'>
      <mac address='52:54:00:4a:1e:d3'/>
      <source network='default'/>
      <model type='virtio'/>
    </interface>
    <serial type='pty'>
      <target port='0'/>
    </serial>
    <console type='pty'>
      <target port='0'/>
    </console>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'/>
    <video>
      <model type='cirrus' vram='9216' heads='1'/>
    </video>
  </devices>
</domain>

說明:

CPU: 8vCPUs
Mem: 32GiB
hvm: 全虛擬化
使用qcow2來作為根分割槽
network: 設定網絡卡地址為52:54:00:4a:1e:d3,對映方式為NAT
根分割槽vda:trusty-server-cloudimg-amd64-disk1-ubuntu.qcow2
資料分割槽vdb:host磁碟/dev/sdc1

1.3 啟動虛擬機器

# 1. 轉換映象格式
sudo qemu-img convert -f raw -O qcow2 trusty-server-cloudimg-amd64-disk1.img  trusty-server-cloudimg-amd64-disk1-ubuntu.qcow2

# 2. 定義域kvm-1
sudo virsh define kvm-1.xml
# 啟動kvm-1,如果啟動正常,預設的ip地址為192.168.122.3,因為在default 網路配置中指定了靜態ip

# 3. 啟動虛擬機器kvm-1
sudo virsh start kvm-1

2. 虛擬機器管理

2.1 ssh連線

ssh [email protected]192.168.122.3
密碼是ubuntu

# 掛載host磁碟到虛機
vim /etc/fstab,新增如下行:
/dev/vdb /mnt ext4 defaults 0 0
儲存退出,執行
mount -a

2.2 命令列virsh管理

# 使用virsh命令給domain kvm-1新增快照,其中name和說明在snapshot.xml中描述
sudo virsh snapshot-create kvm-1 snapshot.xml
# 關閉虛擬機器 kvm-1
sudo virsh shutdown kvm-1

snapshot.xml檔案:

<domainsnapshot>
    <name>ubuntu-python2.7.12</name>
    <description>upgrade to python2.7.12,  mount disk </description>
</domainsnapshot>

3. 其他

  • 虛擬機器中安裝http服務,如何在物理機中配置埠轉發
# ubuntu安裝httpd伺服器
sudo apt install apache2
# 修改預設的/var/www/html為/mnt/www/html
vim /etc/apache2/sites-available/000-default.conf
...
DocumentRoot /mnt/www/html
...
<Directory "/mnt/www/html">
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Require all granted
</Directory>
...
# 重啟httpd
apache2ctl -k restart
# 將物理機ip:80轉發到虛機192.168.122.3:80
sudo iptables -t nat -I PREROUTING -p tcp -d ip --dport 80 -j DNAT --to-destination 192.168.122.3:80
sudo iptables -I FORWARD -m state -d 192.168.122.0/24 --state NEW,RELATED,ESTABLISHED -j ACCEPT
# 檢視iptables nat表
sudo iptables -t nat -L
# 刪除nat表的PREROUTING第一條規則
sudo iptables -t nat -D PREROUTING 1
  • ssh: permission denied (publickey)
原因:
/etc/ssh/sshd_config中將密碼認證設定為no,設定為yes重啟ssh服務即可
PasswordAuthentication yes

相關推薦

本地使用qemu+libvirt管理映象

1. 如何使用命令列啟動虛擬機器: 1.0 host環境配置 # centos5u7,安裝以下依賴包 sudo yum -y install kvm kmod-kvm kvm-qemu-img libvirt python-virtinst brid

使用Kubernetes V1管理Docker的擴展

docker kubernetes 楊文 Kubernetes是一款開源的項目,管理Linux容器集群,並可將集群作為一個單一的系統來對待。其可跨多主機來管理和運行Docker容器、提供容器的定位、服務發現以及復制控制。它由Google發起,現在則得到如微軟、紅帽、IBM和Docker等眾多廠商的

使用requirejs管理angularJS依賴示例

path string plain ins clas fun ont async light 有關requirejs是什麽在這裏不做解釋,只用純代碼實戰讓你感受requirejs依賴管理的強大。 一、首先要先下載require.js,然後整一個入口文件main.js包括了

KVM+Qemu+Libvirt實戰

等等 eboot blog 輸入 splay 終端 服務 內存 1-1 上一篇的文章是為了給這一篇文件提供理論的基礎,在這篇文章中我將帶大家一起來實現在linux中虛擬出ubuntu的server版來 我們需要用KVM+Qemu+Libvirt來進行kvm全虛擬化,創建虛

使用普通用戶替代root管理IEE

ren rwx chown socket 查看 pts oca local 0.00 環境:RHEL 6.4 + IEE 4.0.6需求:IEE數據庫之前是使用root用戶部署和管理的,現在安全加固,將數據庫交給普通用戶iee來管理。 一、當前環境二、安全加固 1.創建i

linux 使用supervisor管理進程

http open etc neu 項目 客戶 日誌輸出 con 什麽 現在假設一個腳本是,hello.py,內容是 fo = open(‘xx.txt‘,‘w‘) while 1: fo.write(‘hello world‘) print(

gunicorn、nginx部署flask項目,並用supervisor管理進程

開發 log 練習 修改 後端 block mar com .com 本科的時候做公眾號,開始提供學生教務查詢服務,後端從PHP轉到Python,無論是使用django還是flask,部署都沒PHP那麽方便,每次修改程序完,都是ps ax,然後再kill,再run。emm

Docker使用 Supervisor 管理進程

控制 rip div post 我們 config 很多 -a 腳本 Docker 容器在啟動的時候開啟單個進程,比如,一個 ssh 或者 apache 的 daemon 服務。但我們經常需要在一個機器上開啟多個服務,這可以有很多方法,最簡單的就是把多個啟動命令放到一個

git 在windows下的應用(一) - 本地倉庫代碼管理

軟件研發 研發管理 訪問https://gitforwindows.org/? 下載一個安裝包,一路next下去git config --global user.name "Pcdog" git config --global user.email "[email protected]"cd d:

利用SCVMM 2012 R2管理Azure虛擬機

azure下面我們就來看一看如何通過SCVMM 2012 R2來添加和管理Azure訂閱的。首先,利用makecert創建一個自簽名證書,參照下圖命令執行,該證書用於上傳到Azure上以便VMM進行管理,需要註意Azure的管理證書必須是2048位密鑰長度,並應用於"個人"證書存儲中。關於

Spring Boot中使用Flyway管理數據庫版本

con 數據庫更新 多人 test 修改 utf8 number jdbc ima   flyway是一個開源的數據庫遷移工具。類似於數據庫的版本控制工具。flyway的數據庫修改文件默認放在resource下的db.migration文件夾中,以V{version_num

11g rac grid用戶管理監聽程序

adapter listen tin copy nts ali message error: proto Oracle 11g RAC 數據庫監聽默認都是grid用戶通過集群工具來進行管理的,但是有些時候我們會發現數據庫監聽程序有oracle用戶啟動的,這裏就存在一些問題。

MyEclipse 2017 CI 中使用 Java Working Set 管理項目

白色 點擊 如果 工作空間 workspace 彈出 sel lips 顯示 MyEclipse 2017 CI 作為一款流行的JavaIDE開發工具,其有很多好用的功能為我們的開發提供幫助。但我們的工作空間中有很多項目時,管理起來就很頭疼了。 但是我們又不想更換工作區

qemu內存管理

sub for oca api linux nio 不同的應用 指定 內存結構 1 Qemu內存分布2 內存初始化Qemu中的內存模型,簡單來說就是Qemu申請用戶態內存並進行管理,並將該部分申請的內存註冊到對應的加速器(如KVM)中。這樣的模型有如下好處: 策略

Docker搭建本地倉庫並推送映象本地倉庫

Dockers不僅提供了一箇中央倉庫,同時也允許我們使用registry搭建本地私有倉庫; 一、本地下載registry sudo docker pull registry:2 二、啟動容器執行registry映象 docker run -d -p 5000:5000 -v /

draft.js:不要使用redux管理editorState

很多業務的實現都對 執行順序 有要求 即 確保editorState更新完畢,元件渲染完成 用setState的回撥函式可以確保執行順序: 先更新,再執行 而redux不能保證更新與執行的先後順序 比如,用redux管理editorState的情況下, ... dispatc

Django URLconfs 中通過包含其他URLconfs 管理部分url相同的url

第一種情況:一個專案下每個相同app下的每個url有相同的字首,為了方便管理把各自的不同url部分交給各自的URLconfs管理。 在任何時候,你的urlpatterns 都可以包含其它URLconf 模組。這實際上將一部分URL 放置於其它URLconfs 下面。 from dj

phpmyadmin是很多網站用管理數據庫的一個系統,尤其是mysql數據庫管理的較多一些,最近p

修復 ces lin centos log 需要 地址 shel 多少 phpmyadmin是很多網站用來管理數據庫的一個系統,尤其是mysql數據庫管理的較多一些,最近phpmysql爆出漏洞,尤其是弱口令,sql註入漏洞,都會導致mysql的數據賬號密碼被泄露,那麽如何

Linux自帶的logrotate 管理日誌

起因:nginx日誌以及服務日誌竟然高達57G   大家可能都有管理日誌的需要,比如定時壓縮日誌,或者當日志超過一定大小時就自動分裂成兩個檔案等,我發現其實Linux自帶的logrotate命令就能夠實現這樣的功能。      為了使用它,主要有兩個地方需要修改一下:一個是/etc/logrotate.

使用immutable.js管理store中的資料

安裝: yarn add immutable 將state變為immutable物件,以防止state被改變 import { fromJs } from 'immutable' fromJs 方法可以把一個js物件轉化為一個immutable物件; 利用這個方法把state