首页 > 技术文章 > 实现centos6的kvm虚拟机console登陆控制

jiawei2527 2020-09-05 12:52 原文

一、需求

1、安装kvm虚拟化软件

2、安装一台基于redhat 6.4系统的kvm虚拟机 

3、实现使用console登陆控制 

4、新建一个内存1G网卡桥接本机eth0 kvm虚拟机  

二、实战部署

2.1 环境准备

2.2  安装kvm虚拟化软件

2.2.1. 查看系统是否支持KVM虚拟化

[root@kvm01 ~]# egrep '(vmx|svm)' /proc/cpuinfo

flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch arat tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid mpx rdseed adx smap clflushopt xsaveopt xsavec

flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch arat tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid mpx rdseed adx smap clflushopt xsaveopt xsavec

2.2.2 安装kvm软件包

[root@kvm01 ~]# yum install libvirt virt-install qemu-kvm qemu-kvm-tools kvm kmod-kvm -y

#启动libvirtd服务

[root@kvm01 ~]# systemctl start libvirtd.service

[root@kvm01 ~]# systemctl status libvirtd.service

libvirtd.service - Virtualization daemon

   Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)

   Active: active (running) since Sun 2020-08-30 17:59:21 CST; 26s ago

     Docs: man:libvirtd(8)

           https://libvirt.org

 Main PID: 12611 (libvirtd)

    Tasks: 20 (limit: 32768)

   CGroup: /system.slice/libvirtd.service

           ├─12611 /usr/sbin/libvirtd

           └─12637 /usr/sbin/ebtables --concurrent -L

 

Aug 30 17:58:52 kvm01 systemd[1]: Starting Virtualization daemon...

Aug 30 17:59:21 kvm01 systemd[1]: Started Virtualization daemon.

2.2.3 查看虚拟化环境

[root@kvm01 ~]# lsmod |grep kvm

kvm_intel             170181  0

kvm                   554609  1 kvm_intel

irqbypass              13503  1 kvm

[root@kvm01 ~]# virsh --version

4.5.0

[root@kvm01 ~]# virt-install --version

1.5.0

2.3 装一台基于redhat 6.4系统的kvm虚拟机

2.3.1 创建虚拟机

[root@kvm01 ~]# virt-install --virt-type kvm --os-type=linux --os-variant=rhel6 --name redhat-6.4 --ram 1024  --cdrom=/data/rhel-server-6.4-x86_64-dvd.iso --disk path=/data/redhat-6.4.qcow2,size=10,format=qcow2 --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

 

Starting install...

Allocating 'redhat-6.4.qcow2'                                                                                       |  10 GB  00:00:00     

Domain installation still in progress. You can reconnect to

the console to complete the installation process.

[root@kvm01 ~]# ll /data

total 3635396

-rw------- 1 qemu qemu 10739318784 Aug 30 19:46 redhat-6.4.qcow2

-rw-r--r-- 1 qemu qemu  3720347648 Jun 18  2015 rhel-server-6.4-x86_64-dvd.iso

2.3.2 查看虚拟机状态

[root@kvm01 ~]# virsh list

 Id    Name                           State

----------------------------------------------------

 1     redhat-6.4                     running

2.3.3 vnc登录安装redhat 6.4 操作系统

        在window上安装TightVNC,tightvnc官网:http://www.tightvnc.com。vnc是一个跨平台的远程桌面软件,安装kvm虚拟机系统的时候使用,使用默认端口5900。连接后安装。

       

 

 

      

      

      

      

      

      

      

      

2.4 实现使用console登录控制

2.4.1 vnc登录获取虚拟机ip

2.4.2 ssh远程登录

2.4.3 添加ttyS0的许可,允许root登陆

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

[root@localhost ~]# cat /etc/securetty |grep ttyS0

ttyS0

2.4.4 编辑/etc/grub.conf中加入console=ttyS0

[root@localhost ~]# vi /etc/grub.conf

[root@localhost ~]# cat /etc/grub.conf |grep console

    kernel /vmlinuz-2.6.32-358.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=auto rd_LVM_LV=VolGroup/lv_root  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet console=ttyS0

[root@localhost ~]# sync

2.4.5 编辑/etc/inittab,在最后一行加入内容 S0:12345:respawn:/sbin/agetty ttyS0 115200

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

[root@localhost ~]# tail /etc/inittab

#   0 - halt (Do NOT set initdefault to this)

#   1 - Single user mode

#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)

#   3 - Full multiuser mode

#   4 - unused

#   5 - X11

#   6 - reboot (Do NOT set initdefault to this)

#

id:3:initdefault:

S0:12345:respawn:/sbin/agetty ttyS0 115200

2.4.6 重启虚拟机

[root@localhost ~]# reboot

2.4.7 检查虚拟机的状态

[root@kvm01 ~]# virsh list --all

 Id    Name                           State

----------------------------------------------------

 2     redhat-6.4                     running

2.4.8 进行连接测试

[root@kvm01 ~]# virsh console redhat-6.4

Connected to domain redhat-6.4

Escape character is ^]

 

Red Hat Enterprise Linux Server release 6.4 (Santiago)

Kernel 2.6.32-358.el6.x86_64 on an x86_64

 

localhost login: root

Password:

Last login: Sun Aug 30 20:23:31 from 192.168.122.1

[root@localhost ~]# who

root     ttyS0        2020-08-30 20:34

 2.5 新建一个内存1G网卡桥接本机eth0 kvm虚拟机

2.5.1 创建桥接网络

[root@kvm01 ~]# virsh iface-bridge eth0 br0

Created bridge br0 with attached device eth0

[root@kvm01 ~]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

       valid_lft forever preferred_lft forever

    inet6 ::1/128 scope host

       valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000

    link/ether 00:0c:29:99:03:8a brd ff:ff:ff:ff:ff:ff

3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

    link/ether 00:0c:29:99:03:94 brd ff:ff:ff:ff:ff:ff

    inet 172.16.1.7/24 brd 172.16.1.255 scope global noprefixroute eth1

       valid_lft forever preferred_lft forever

    inet6 fe80::9bb1:a251:b126:2fa0/64 scope link noprefixroute

       valid_lft forever preferred_lft forever

4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000

    link/ether 00:0c:29:99:03:8a brd ff:ff:ff:ff:ff:ff

    inet 10.0.0.7/24 brd 10.0.0.255 scope global br0

       valid_lft forever preferred_lft forever

    inet6 fe80::20c:29ff:fe99:38a/64 scope link

       valid_lft forever preferred_lft forever

5: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000

    link/ether 52:54:00:21:fd:94 brd ff:ff:ff:ff:ff:ff

    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0

       valid_lft forever preferred_lft forever

6: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000

    link/ether 52:54:00:21:fd:94 brd ff:ff:ff:ff:ff:ff

#查看网卡配置文件

[root@kvm01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

ONBOOT=yes

BRIDGE="br0"

[root@kvm01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0

DEVICE="br0"

ONBOOT="yes"

TYPE="Bridge"

BOOTPROTO="none"

IPADDR="10.0.0.7"

NETMASK="255.255.255.0"

GATEWAY="10.0.0.254"

IPV6INIT="yes"

IPV6_AUTOCONF="yes"

DHCPV6C="no"

STP="on"

DELAY="0"

2.5.2 基于桥接网络创建虚拟机

[root@kvm01 ~]# virt-install --virt-type kvm --os-type=linux --os-variant rhel6 --name web01 --memory 1024 --vcpus 1 --disk /data/test.qcow2 --boot hd --network bridge=br0  --graphics vnc,listen=0.0.0.0 --noautoconsole

 

Starting install...

Domain creation completed.

[root@kvm01 ~]# virsh list --all

 Id    Name                           State

----------------------------------------------------

 3     web01                          running

 -     redhat-6.4                     shut off

[root@kvm01 ~]# virsh vncdisplay web01

:0

1)vnc登录查看ip

2)用查到的ip远程登录

[root@bogon ~]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

    inet6 ::1/128 scope host

       valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    link/ether 52:54:00:b0:63:f2 brd ff:ff:ff:ff:ff:ff

    inet 10.0.0.128/24 brd 10.0.0.255 scope global eth0

    inet6 fe80::5054:ff:feb0:63f2/64 scope link

       valid_lft forever preferred_lft forever

2.5.3 将已有的虚拟机修改成桥接网络

1)编辑配置文件

[root@kvm01 ~]# virsh edit redhat-6.4

Domain redhat-6.4 XML configuration edited.

    <interface type='bridge'>

      <mac address='52:54:00:06:6b:c5'/>

      <source bridge='br0'/>

2)重新启动redhat-6.4

[root@kvm01 ~]# virsh start redhat-6.4

Domain redhat-6.4 started

 

[root@kvm01 ~]# virsh list --all

 Id    Name                           State

----------------------------------------------------

 3     web01                          running

 5     web03                          running

 6     redhat-6.4                     running

3)vnc登录获取ip

[root@kvm01 ~]# virsh vncdisplay redhat-6.4

:1

4)远程登录

[root@localhost ~]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

    inet6 ::1/128 scope host

       valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    link/ether 52:54:00:06:6b:c5 brd ff:ff:ff:ff:ff:ff

    inet 10.0.0.130/24 brd 10.0.0.255 scope global eth0

    inet6 fe80::5054:ff:fe06:6bc5/64 scope link

       valid_lft forever preferred_lft forever

 

推荐阅读