KVM -> 虛擬機管理&console登錄_02


1、KVM虛擬機管理操作

virsh命令常用參數總結

 

  1、開機關機:

virsh list (只可以查看運行的虛擬機)

virsh list  --all (全部都可以查看)

開機與關機

virsh start centos7    //開啟虛擬機centos7
virsh destroy centos7    //關閉電源模式關閉虛擬機centos7,如果跑了數據庫,不允許使用destroy關閉

 virsh shutdown  centos7     //正常關機

  2、配置文件&備份恢復

  • 磁盤文件   例: centos7.raw   -> 在虛擬機的安裝目錄
  • 配置文件   例: centos7.xml  -> /etc/libvirt/qemu/centos7.xml

1、當第一次安裝完成后,查看虛擬機的安裝目錄如下,centos2.raw是磁盤文件。

2、虛擬機的默認配置文件,/etc/libvirt/qemu/

3、備份配置文件,virsh dumpxml centos7 > centos7.xml(關機時備份)

配置文件內容如下

[root@kvm01 opt]# virsh dumpxml web-49 
<domain type='kvm' id='1'>
  <name>web-49</name>      -----------------------------  虛擬機名字
  <uuid>3eebab41-4355-4d7e-8532-d7a0bbb6d7b0</uuid>
  <memory unit='KiB'>1048576</memory>    ----------------------  內存大小  
  <currentMemory unit='KiB'>1048576</currentMemory>
  <vcpu placement='static'>1</vcpu>  -------------------  Cpu核心
  <resource>
    <partition>/machine</partition>
  </resource>
  <os>
    <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
  </features>
  <cpu mode='custom' match='exact' check='full'>
    <model fallback='forbid'>Broadwell</model>
    <feature policy='disable' name='hle'/>
    <feature policy='disable' name='rtm'/>
    <feature policy='require' name='hypervisor'/>
    <feature policy='disable' name='erms'/>
    <feature policy='require' name='xsaveopt'/>
  </cpu>
  <clock offset='utc'>
    <timer name='rtc' tickpolicy='catchup'/>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='hpet' present='no'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <pm>
    <suspend-to-mem enabled='no'/>
    <suspend-to-disk enabled='no'/>
  </pm>
  <devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw'/>
      <source file='/opt/centos2.raw'/>    -------------   硬盤路徑
      <backingStore/>
      <target dev='vda' bus='virtio'/>
      <alias name='virtio-disk0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <backingStore/>
      <target dev='hda' bus='ide'/>
      <readonly/>
      <alias name='ide0-0-0'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
    <controller type='usb' index='0' model='ich9-ehci1'>
      <alias name='usb'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x7'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci1'>
      <alias name='usb'/>
      <master startport='0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0' multifunction='on'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci2'>
      <alias name='usb'/>
      <master startport='2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x1'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci3'>
      <alias name='usb'/>
      <master startport='4'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x2'/>
    </controller>
    <controller type='pci' index='0' model='pci-root'>
      <alias name='pci.0'/>
    </controller>
    <controller type='ide' index='0'>
      <alias name='ide'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <controller type='virtio-serial' index='0'>
      <alias name='virtio-serial0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </controller>
    <interface type='network'>
      <mac address='52:54:00:82:75:2f'/>
      <source network='default' bridge='virbr0'/>
      <target dev='vnet0'/>
      <model type='virtio'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    <serial type='pty'>
      <source path='/dev/pts/0'/>
      <target port='0'/>
      <alias name='serial0'/>
    </serial>
    <console type='pty' tty='/dev/pts/0'>
      <source path='/dev/pts/0'/>
      <target type='serial' port='0'/>
      <alias name='serial0'/>
    </console>
    <channel type='unix'>
      <source mode='bind' path='/var/lib/libvirt/qemu/channel/target/domain-1-web-49/org.qemu.guest_agent.0'/>
      <target type='virtio' name='org.qemu.guest_agent.0' state='connected'/>
      <alias name='channel0'/>
      <address type='virtio-serial' controller='0' bus='0' port='1'/>
    </channel>
    <input type='tablet' bus='usb'>
      <alias name='input0'/>
      <address type='usb' bus='0' port='1'/>
    </input>
    <input type='mouse' bus='ps2'>
      <alias name='input1'/>
    </input>
    <input type='keyboard' bus='ps2'>
      <alias name='input2'/>
    </input>
    <graphics type='vnc' port='5900' autoport='yes' listen='0.0.0.0'>
      <listen type='address' address='0.0.0.0'/>
    </graphics>
    <video>
      <model type='cirrus' vram='16384' heads='1' primary='yes'/>
      <alias name='video0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <memballoon model='virtio'>
      <alias name='balloon0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
    </memballoon>
  </devices>
  <seclabel type='none' model='none'/>
  <seclabel type='dynamic' model='dac' relabel='yes'>
    <label>+107:+107</label>
    <imagelabel>+107:+107</imagelabel>
  </seclabel>
</domain>
View Code

4、刪除虛擬機配置

# 查看
[root@kvm ~]# virsh list --all 
 Id    名稱                         狀態
----------------------------------------------------
 -     centos7                      關閉
# 刪除
[root@kvm ~]# virsh undefine centos7 
域 centos7 已經被取消定義                //這是翻譯
[root@kvm ~]# virsh list --all 
 Id    名稱                         狀態

刪除虛擬機,配置文件會被刪除,但是磁盤文件不會刪除

 

5、導入虛擬機,只能恢復配置文件丟失的情況,恢復備份的配置文件

# 導入
[root@kvm ~]# virsh define centos7.xml 
定義域 centos7(從 centos7.xml)      //翻譯內容
# 查看
[root@kvm ~]# virsh list --all 
 Id    名稱                         狀態
----------------------------------------------------
 -     centos7                        關閉

 

6、當磁盤文件丟失,恢復如下

模擬:把磁盤文件改名為7.raw。提示找不到/opt/centos2.raw。

使用: virsh edit centos7(這個是虛擬機的名稱)   -> 查找 centos2.raw 改成 centos7.raw

注釋:用virsh edit 去修改配置文件,有語法檢查,如果使用centos7.xml沒有語法檢測。(修改用edit,自帶語法檢查)

  3、修改虛擬機名稱

開機狀態下修改會報如下錯誤:

  4、虛擬機掛起與恢復

  5、查詢虛擬機vnc端口

[root@kvm ~]# virsh vncdisplay centos7 
:0  
# :0 即 為 5900 端口,以此類推 :1為5901 。  

VNC也可以使用短的端口號連接:

 

  6、開機自啟與取消開機自啟

# 設置 libvirtd 服務開機自啟動。
[root@kvm ~]# systemctl is-enabled libvirtd.service enabled 設置宿主機開機虛擬機在其他 [root@kvm ~]# virsh autostart centos7 域 clsn7標記為自動開始    //翻譯英文內容 
# 實質為創建軟連接 [root@kvm ~]# ll /etc/libvirt/qemu/autostart/centos7.xml lrwxrwxrwx 1 root root 27 1月 22 12:17 /etc/libvirt/qemu/autostart/centos7.xml -> /etc/libvirt/qemu/centos7.xml 取消開機自啟動 [root@kvm ~]# virsh autostart --disable centos7 域 clsn7取消標記為自動開始    //翻譯英文內容

有軟連接,就會開機自啟虛擬機登錄

2、kvm虛擬機console登錄

注:就是執行 virsh console 的時候,宿主機可以控制虛擬機

如果是10網段想遠程控制172網段的宿主機,是無法使用VNC的(10網段只能訪問10網段的,不可以訪問172網段)。那這個時候我們有修改宿主機的需求,就可以使用console登錄的方式。

通過連接跳板機,再通過跳板機,遠程控制宿主機。

KVM宿主機:就是在宿主機上會運行大量的虛擬機,我們稱之為KVM宿主機

  CentOS 7.X 版本console登錄

 1、使用ssh 遠程登錄虛擬機:ssh root@虛擬機的Ip地址。

2、 查看登錄的ip

3、查看宿主機,也有相同的ip地址,因為有這塊網卡的存在,才能使用ssh遠程連接虛擬機。

該操作僅限centos7

centos7的kvm虛擬機:
grubby --update-kernel=ALL --args="console=ttyS0,115200n8"   ----->  使用命令直接插入

可以使用命令插入,也可以進入配置文件修改,(修改配置文件的100行,和114行,加入 : console=ttyS0,115200n8

使用diff命令比較

重啟完成后reboot,使用virsh console 連接虛擬機。  

[root@kvm ~]# virsh console centos7 (虛擬機名字)
連接到域 centos7
換碼符為 ^] CentOS Linux 7 (Core) Kernel 3.10.0-327.el7.x86_64 on an x86_64 centos7 login: root Password: Last login: Mon Jan 22 12:24:48 from 192.168.122.1 [root@clsn7 ~]# w 12:26:11 up 0 min, 1 user, load average: 0.09, 0.03, 0.01 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root  ttyS0 12:26 3.00s 0.02s 0.01s w

 注:ttys0是終端的名字,和配置時候的參數一致,后面的內容為頻率。(串口的頻率,交換機的一些內容)

  CentOS 6.X 版本console登錄

作業1:實現centos6的kvm虛擬機,console命令行登錄? 

安裝一台centos6的kvm虛擬機:需要在/data目錄下導入6.9的鏡像

virt-install --virt-type kvm --os-type=linux --os-variant rhel6 \
--name clsn6 --memory 1124 --vcpus 1 \ --disk /data/clsn6/clsn-6.raw,format=raw,size=10 \ --cdrom /data/CentOS-6.9-x86_64-bin-DVD1.iso \ --network network=default --graphics vnc,listen=0.0.0.0,port=5901 \ --noautoconsole

新安裝一台虛擬機后,是無法通過virsh console 命令連入虛擬機中的,這時我們需要開啟虛擬機的console功能。

以下操作都在虛擬機中進行:

1、添加ttyS0的許可,允許root登陸:

[root@clsn6 ~]# echo "ttyS0" >> /etc/securetty 

2、編輯/etc/grub.conf中加入console=ttyS0

在該文件的第16行。kernel選項后添加

[root@clsn6 ~]# sed -i '/\tkernel/s#.*#& console=ttyS0#g' /etc/grub.conf
[root@clsn6 ~]# sync  # 同步配置到 /boot/grub/grub.conf [root@clsn6 ~]# cat -n /etc/grub.conf 1 # grub.conf generated by anaconda 2 # 3 # Note that you do not have to rerun grub after making changes to this file 4 # NOTICE: You have a /boot partition. This means that 5 # all kernel and initrd paths are relative to /boot/, eg. 6 # root (hd0,0) 7 # kernel /vmlinuz-version ro root=/dev/vda3 8 # initrd /initrd-[generic-]version.img 9 #boot=/dev/vda 10 default=0 11 timeout=5 12 splashimage=(hd0,0)/grub/splash.xpm.gz 13 hiddenmenu 14 title CentOS 6 (2.6.32-696.el6.x86_64) 15 root (hd0,0) 16 kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=48532582-c271-4c0a-b55f-395fe16cd8aa rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet console=ttyS0 17 initrd /initramfs-2.6.32-696.el6.x86_64.img

3、編輯/etc/inittab

在最后一行加入內容 S0:12345:respawn:/sbin/agetty ttyS0 115200  

[root@clsn6 ~]# echo 'S0:12345:respawn:/sbin/agetty ttyS0 115200' >>/etc/inittab

4、以上操作都完成后,重啟虛擬機

[root@clsn6 ~]# reboot

以下操作在kvm宿主機上執行:  

1、檢查虛擬機的狀態

[root@kvm ~]# virsh list --all
 Id    名稱                         狀態
----------------------------------------------------
 11 clsn7 running 21 clsn6 running

2、進行連接測試

[root@kvm ~]# virsh console clsn6 
連接到域 clsn6
換碼符為 ^]  # 注:退出virsh console連接的方法,使用組合鍵Ctrl+]即可 CentOS release 6.9 (Final) Kernel 2.6.32-696.el6.x86_64 on an x86_64 clsn6 login: root Password: Last login: Mon Jan 22 05:44:25 on ttyS0 [root@clsn6 ~]# who root ttyS0 2018-01-22 05:50 # 登陸成功,查看登陸接口為之前設置的ttyS0

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM