快速搭建虚拟机

安装虚拟化服务器平台

• KVM /QEMU /LIBVIRTD

– KVM是linux内核的模块,它需要CPU的支持,采用硬

件辅劣虚拟化技术 Intel-VT,AMD-V,内存的相关如

Intel的 EPT 和 AMD 的 RVI 技术

– QEMU 是一个虚拟化的仿真工具,通过 ioctl 不内核

kvm 交互完成对硬件的虚拟化支持

– Libvirt 是一个对虚拟化管理的接口和工具,提供用户

端程序 virsh ,virt-install, virt-manager, virt-view 不

用户交互

安装虚拟化服务器平台

• 必备软件

• qemu-kvm

– 为 kvm 提供底层仿真支持

• libvirt-daemon

– libvirtd 守护进程,管理虚拟机

• libvirt-client

– 用户端软件,提供客户端管理命令

• libvirt-daemon-driver-qemu

– libvirtd 连接 qemu 的驱动

• 虚拟化平台的安装

yum install -y qemu-kvm libvirt-daemon libvirt-client libvirt-daemon-driver-qemu

systemctl start libvirtd

自定义虚拟机

/var/lib/libvirt/images

qemu-img create -f qcow2 node.qcow2 16G

node.qcow2

/etc/libvirt/qemu/networks

Vbr.xml

<network>

<name>vbr</name>

<bridge name="vbr"/>

<forward mode="nat"/>

<ip address="192.168.6.254" netmask="255.255.255.0">

<dhcp>

<range start="192.168.6.100" end="192.168.6.200"/>

</dhcp>

</ip>

</network>

Virsh

net-list

net-define vbr.xm

net-undefine vbr

net-start vbr

net-destroy vbr

net-edit vbr

net-autostart vbr

yum -y install vsftp

/etc/vsftpd/vsftpd.conf

listen=YES

listen_ipv6=NO

systemctl enable vsftpd

systemctl start vsftpd

/var/ftp

Yum

Vim /etc/fstab

/iso/CentOS7-1708.iso /var/ftp/centos7 iso9660 defaults 0 0

Mount -a

/etc/yum.repos.d/xxx.repo

[Centos_repo]

name= CentOS packet

baseurl=ftp://xx.xx.xx.xx/centos7

enabled=1

gpgcheck=0

yum repolist

virt-manager

新建虚拟机

网络选择自定义的 vbr

– 软件选择 minimal ,关闭 KDUMP

– 选择手工分区

• 使用标准分区格式,只分一个根分区

• 选取一个根分区,开启安装系统

Ip a s

[root@localhost ~]# ip a s

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

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 state UP qlen 1000

link/ether 52:54:00:18:6e:2e brd ff:ff:ff:ff:ff:ff

inet 192.168.6.136/24 brd 192.168.6.255 scope global dynamic eth0

valid_lft 3112sec preferred_lft 3112sec

inet6 fe80::5054:ff:fe18:6e2e/64 scope link

valid_lft forever preferred_lft forever

[root@localhost ~]#

配置虚拟机

[root@localhost yum.repos.d]#

[root@localhost yum.repos.d]# rm -rf *.repo

[root@localhost yum.repos.d]# vi local.repo

[local_source]

name=CentOS Source

baseurl=ftp://192.168.6.254/centos7

enabled=1

gpgcheck=0

[root@localhost yum.repos.d]# yum repolist

已加载插件:fastestmirror

local_source | 3.6 kB 00:00

(1/2): local_source/group_gz | 156 kB 00:00

(2/2): local_source/primary_db | 5.7 MB 00:00

Determining fastest mirrors

源标识 源名称 状态

local_source CentOS Source 9,591

repolist: 9,591

[root@localhost yum.repos.d]# ping www.baidu.com

PING www.a.shifen.com (14.215.177.38) 56(84) bytes of data.

64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=1 ttl=52 time=45.9 ms

64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=2 ttl=52 time=9.38 ms

[root@localhost yum.repos.d]# cat /etc/resolv.conf

# Generated by NetworkManager

nameserver 192.168.6.254

[root@localhost yum.repos.d]# cat /etc/sysconfig/network-scripts/ifcfg-eth0

# Generated by dracut initrd

NAME="eth0"

HWADDR="52:54:00:18:6e:2e"

ONBOOT=yes

NETBOOT=yes

UUID="1a980db6-73b1-47a2-8a37-a928122b9c28"

IPV6INIT=yes

BOOTPROTO=dhcp

TYPE=Ethernet

[root@localhost yum.repos.d]# yum provides vim

已加载插件:fastestmirror

Loading mirror speeds from cached hostfile

2:vim-enhanced-7.4.160-2.el7.x86_64 : A version of the VIM editor which

: includes recent enhancements

源 :local_source

匹配来源:

提供 :vim = 7.4.160-2.el7

[root@localhost yum.repos.d]# yum -y install net-tools.x86_64

[root@localhost yum.repos.d]# ls /usr/sbin/ifconfig

/usr/sbin/ifconfig

[root@localhost yum.repos.d]# ifconfig

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet 192.168.6.136 netmask 255.255.255.0 broadcast 192.168.6.255

inet6 fe80::5054:ff:fe18:6e2e prefixlen 64 scopeid 0x20<link>

ether 52:54:00:18:6e:2e txqueuelen 1000 (Ethernet)

RX packets 4585 bytes 33104943 (31.5 MiB)

RX errors 0 dropped 4 overruns 0 frame 0

TX packets 2435 bytes 349214 (341.0 KiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536

inet 127.0.0.1 netmask 255.0.0.0

inet6 ::1 prefixlen 128 scopeid 0x10<host>

loop txqueuelen 1 (Local Loopback)

RX packets 0 bytes 0 (0.0 B)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 0 bytes 0 (0.0 B)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

[root@localhost ~]# vim /etc/selinux/config

SELINUX=disabled

[root@localhost ~]# reboot

[root@localhost ~]# getenforce

Disabled

[root@localhost ~]# yum remove firewalld-*

是否继续?[y/N]:y

[root@localhost ~]# rpm -qa | grep firewalld

[root@localhost ~]# rpm -qa | grep -i firewall

python-firewall-0.4.4.4-6.el7.noarch

[root@localhost ~]# yum remove -y python-firewall-0.4.4.4-6.el7.noarch

[root@localhost ~]# rpm -qa | grep -i firewall

[root@localhost ~]# cp /etc/sysconfig/network-scripts/ifcfg-eth0 ./

[root@localhost ~]# ls

anaconda-ks.cfg ifcfg-eth0

[root@localhost ~]# vim ifcfg-eth0

# Generated by dracut initrd

DEVICE=eth0

ONBOOT=yes

IPV6INIT=no

BOOTPROTO=dhcp

TYPE=Ethernet

[root@localhost ~]# rpm -qa | grep -i networkm

NetworkManager-libnm-1.8.0-9.el7.x86_64

NetworkManager-1.8.0-9.el7.x86_64

NetworkManager-team-1.8.0-9.el7.x86_64

NetworkManager-tui-1.8.0-9.el7.x86_64

NetworkManager-wifi-1.8.0-9.el7.x86_64

[root@localhost ~]# yum remove NetworkManager-* -y

[root@localhost ~]# systemctl stop networkmanager

Failed to stop networkmanager.service: Unit networkmanager.service not loaded.

[root@localhost ~]# ifconfig

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet 192.168.6.136 netmask 255.255.255.0 broadcast 192.168.6.255

inet6 fe80::5054:ff:fe18:6e2e prefixlen 64 scopeid 0x20<link>

ether 52:54:00:18:6e:2e txqueuelen 1000 (Ethernet)

RX packets 1733 bytes 137465 (134.2 KiB)

RX errors 0 dropped 3 overruns 0 frame 0

TX packets 822 bytes 104055 (101.6 KiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536

inet 127.0.0.1 netmask 255.0.0.0

inet6 ::1 prefixlen 128 scopeid 0x10<host>

loop txqueuelen 1 (Local Loopback)

RX packets 68 bytes 5912 (5.7 KiB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 68 bytes 5912 (5.7 KiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

[root@localhost ~]# cp ifcfg-eth0 /etc/sysconfig/network-scripts/

cp:是否覆盖"/etc/sysconfig/network-scripts/ifcfg-eth0"? y

[root@localhost ~]# systemctl restart network

[root@localhost ~]# ifconfig

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet 192.168.6.136 netmask 255.255.255.0 broadcast 192.168.6.255

inet6 fe80::5054:ff:fe18:6e2e prefixlen 64 scopeid 0x20<link>

ether 52:54:00:18:6e:2e txqueuelen 1000 (Ethernet)

RX packets 2187 bytes 169053 (165.0 KiB)

RX errors 0 dropped 3 overruns 0 frame 0

TX packets 966 bytes 119911 (117.1 KiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536

inet 127.0.0.1 netmask 255.0.0.0

inet6 ::1 prefixlen 128 scopeid 0x10<host>

loop txqueuelen 1 (Local Loopback)

RX packets 68 bytes 5912 (5.7 KiB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 68 bytes 5912 (5.7 KiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

[root@localhost ~]#

[root@localhost ~]# yum -y install -y lftp

[root@localhost ~]# vim /etc/yum.repos.d/local.repo

gpgcheck=1

[root@localhost ~]# yum -y install httpd

已加载插件:fastestmirror

您已启用软件包 GPG 签名检查,这样很好。不过您尚未安装任何 GPG 公钥。请下载您希望安装的软件签名公钥并安装。假设公钥已下载,安装命令是:

rpm --import public.gpg.key

[root@rootroom9pc01 ~]# cd /var/ftp/

[root@rootroom9pc01 ftp]# ls

centos7 ceph pub public rhel7 share

[root@rootroom9pc01 ftp]# cd centos7

[root@rootroom9pc01 centos7]# ls

CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7

EFI images Packages RPM-GPG-KEY-CentOS-Testing-7

EULA isolinux repodata TRANS.TBL

[root@rootroom9pc01 centos7]# ls RPM-GPG-KEY-CentOS-7

RPM-GPG-KEY-CentOS-7

[root@rootroom9pc01 centos7]#

[root@localhost ~]# cat /etc/yum.repos.d/local.repo

[local_source]

name=CentOS Source

baseurl=ftp://192.168.6.254/centos7

enabled=1

gpgcheck=1

[root@localhost ~]# lftp 192.168.6.254

lftp 192.168.6.254:~> cd /centos7

cd 成功, 当前目录=/centos7

lftp 192.168.6.254:/centos7> ls

-rw-rw-r-- 3 0 0 14 Sep 05 2017 CentOS_BuildTag

drwxr-xr-x 3 0 0 2048 Sep 05 2017 EFI

-rw-rw-r-- 3 0 0 227 Aug 30 2017 EULA

-rw-rw-r-- 3 0 0 18009 Dec 09 2015 GPL

drwxr-xr-x 2 0 0 2048 Sep 05 2017 LiveOS

drwxrwxr-x 2 0 0 1585152 Sep 05 2017 Packages

-rw-rw-r-- 3 0 0 1690 Dec 09 2015 RPM-GPG-KEY-CentOS-7

-rw-rw-r-- 3 0 0 1690 Dec 09 2015 RPM-GPG-KEY-CentOS-Testing-7

-r--r--r-- 1 0 0 2883 Sep 06 2017 TRANS.TBL

drwxr-xr-x 3 0 0 2048 Sep 06 2017 images

drwxr-xr-x 2 0 0 2048 Sep 05 2017 isolinux

drwxrwxr-x 2 0 0 4096 Sep 05 2017 repodata

lftp 192.168.6.254:/centos7> get RPM-GPG-KEY-CentOS-7

1690 bytes transferred

lftp 192.168.6.254:/centos7> bye

[root@localhost ~]# ls

anaconda-ks.cfg ifcfg-eth0 RPM-GPG-KEY-CentOS-7

[root@localhost ~]# rpm --import RPM-GPG-KEY-CentOS-7

[root@localhost ~]# yum -y install net-tools vim-enhanced bridge-utils psmisc

[root@localhost ~]#reboot

[root@rootroom9pc01 centos7]# ssh -X [email protected]

[email protected]'s password:

X11 forwarding request failed on channel 0

Last login: Thu Jul 19 12:52:37 2018

[root@localhost ~]#

[root@localhost ~]# ip route show

default via 192.168.6.254 dev eth0

169.254.0.0/16 dev eth0 scope link metric 1002

192.168.6.0/24 dev eth0 proto kernel scope link src 192.168.6.136

# Created by anaconda

NOZEROCONF="yes"

[root@localhost ~]# systemctl restart network

[root@localhost ~]# ip route show

default via 192.168.6.254 dev eth0

192.168.6.0/24 dev eth0 proto kernel scope link src 192.168.6.136

[root@localhost ~]#

[root@rootroom9pc01 centos7]# virsh list

Id 名称 状态

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

6 node running

[root@rootroom9pc01 centos7]# virsh

欢迎使用 virsh,虚拟化的交互式终端。

输入:'help' 来获得命令的帮助信息

'quit' 退出

virsh # console node

连接到域 node

换码符为 ^]

[root@localhost ~]# vim /etc/sysconfig/grub

GRUB_TIMEOUT=5

GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"

GRUB_DEFAULT=saved

GRUB_DISABLE_SUBMENU=true

GRUB_TERMINAL_OUTPUT="console"

GRUB_CMDLINE_LINUX="biosdevname=0 net.ifnames=0 console=ttyS0,115200n8" //打开串口终端,让console访问

GRUB_DISABLE_RECOVERY="true"

GRUB_DISABLE_LINUX_UUID="true" //linux引导时/etc/fstab有UUID,UUID作为引导设置引用,但不同的系统UUID是不一样的,让UUID变成磁盘卷标,而不使用UUID引导

GRUB_ENABLE_LINUX_LABEL="true"

[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg

Generating grub configuration file ...

Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64

Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img

Found linux image: /boot/vmlinuz-0-rescue-d9e6e8ebb31b45feb901c4df0ed459b8

Found initrd image: /boot/initramfs-0-rescue-d9e6e8ebb31b45feb901c4df0ed459b8.img

done

[root@localhost ~]# blkid

/dev/vda1: UUID="064331f2-2ea8-482a-9dab-270b7a37336f" TYPE="xfs"

[root@localhost ~]# vim /etc/fstab //使用卷标挂载

/dev/vda1 / xfs defaults 0 0

[root@localhost ~]# yum -y install cloud-utils-growpart //动态调整分区大小

Chmod 777 /etc/rc.local

在rc.local里加入配置来自动扩容

[root@localhost ~]# cat /etc/rc.local

###

/usr/bin/growpart /dev/vda 1

/usr/sbin/xfs_growfs /

/usr/bin/sed '/^###/,$d' -i /etc/rc.d/rc.local

关闭虚拟机,防止后端盘修改

快速搭建虚拟机

Virsh undefine node //这时只是删除了配置文件

[root@rootroom9pc01 centos7]# cd /var/lib/libvirt/images/

[root@rootroom9pc01 images]# ls //找到node.qcow2

bin iso rh7_node02-3.qcow2 Student.sh

conf.d lost+found sbin tedu-wallpaper-2018.png

content node.qcow2 server-1.qcow2 tedu-wallpaper-weekend.png

db qemu server-2.qcow2 vsftpd.conf

exam rc.local server-3.qcow2 Weekend.sh

grub.d rh7_node01.img server.qcow2 win.img

[root@rootroom9pc01 images]#

创建后端文件

Qemu-img create -f qcow2 -b node.qcow2 node1.img 30G//有就不用创建,虚拟机有两部分组成,xml配置文件和后端文件node1.img

用demo.xml文件生成xml配置文件//放在当前路径/etc/libvirt/qemu/

[root@rootroom9pc01 qemu]# ls

demo.xml networks node.xml rh7_node01.xml win2008.xml

[root@rootroom9pc01 qemu]# sed 's/demo/node1/' demo.xml >/etc/libvirt/qemu/node1.xml

[root@rootroom9pc01 qemu]# ls

demo.xml networks node1.xml node.xml rh7_node01.xml win2008.xml

//此时虚拟机已经生成完了

载入虚拟机

[root@rootroom9pc01 qemu]# virsh define /etc/libvirt/qemu/node1.xml

定义域 node1(从 /etc/libvirt/qemu/node1.xml)

创建前端盘

cd /var/lib/libvirt/images/

[root@rootroom9pc01 images]# pwd

/var/lib/libvirt/images

[root@rootroom9pc01 images]# qemu-img create -f qcow2 -b node.qcow2 node1.img 30G

Formatting 'node1.img', fmt=qcow2 size=32212254720 backing_file='node.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off

[root@rootroom9pc01 images]# ls

bin lost+found sbin tedu-wallpaper-weekend.png

conf.d node1.img server-1.qcow2 vsftpd.conf

content node.qcow2 server-2.qcow2 Weekend.sh

db qemu server-3.qcow2 win.img

exam rc.local server.qcow2

grub.d rh7_node01.img Student.sh

iso rh7_node02-3.qcow2 tedu-wallpaper-2018.png

//启动了一台虚拟机

[root@rootroom9pc01 images]# virsh

欢迎使用 virsh,虚拟化的交互式终端。

输入:'help' 来获得命令的帮助信息

'quit' 退出

virsh # start node1

域 node1 已开始

virsh #

猜你喜欢

转载自blog.csdn.net/weixin_40018205/article/details/81114898