转载于 搭建KVM服务器、自定义虚拟机
一、关于openstack安装的环境需求
1.yum源(网络yum源)
yum 源必须要有repodata 作为索引,即有repodata目录才可以作为yum 源。
创建repodata :#createrepo (命令执行后当前目录下就有了repodata目录)
更新:createrepo --update (也可以删除repodata再重新创建)
2.dns服务器
3.时间服务器
4.2台虚拟机(8G+6G)
5.禁用selinux
vim /etc/selinux/config
SELINUX=disabled
6.禁用firewalld
systemctl stop firewalld
systemctl disabled firewalld//该命令虽然停止了防火墙自身调用,但是当其他程序调用的时候他还是会启动
systemctl mask firewalld //该命令会把firewalld服务的连接变成/dev/null ,别的程序调用他不会启动(当启用的时候就敲systemctl unmask firewalld命令)
二、KVM虚拟机
1、虚拟化:
x个物理资源成y个逻辑资源(就是一台物理机虚拟成n个虚拟机)
2、虚拟化主要厂商及产品:
VMware : VMware Workstation、vSphere(商业版软件 服务器版用esxi软件 终端用vcenter软件管理虚拟机)
RedHat: KVM、RHEV
Citrix: Xen
3.KVM的组成:
-- KVM:是linux内核的模块(可以通过lsmod命令查看),需要CPU的支持,采用硬件辅助虚拟化技术
-- QEMU : 是一个虚拟化的仿真工具,完成对硬件的虚拟化支持,会模拟出其他的硬件(显卡声卡等)
-- Libvirt : 是一个对虚拟化管理的接口和工具
4.需要安装的软件
-- qemu-kvm : 为kvm提供底层硬件仿真支持
-- libvirt-dremon : libvirtd守护进程,管理虚拟机
-- libvirt-client : 用户端软件,提供客户端管理命令
-- libvirt-daemon-driver-qemu : libvirtd连接qemu的驱动
5.虚拟机的组成
-- 一个xml文件(虚拟机配置声明文件,定义虚拟机的各种参数),默认在/etc/libvirt/qemu/下
-- 一个磁盘镜像文件(虚拟机的硬盘,真机用一个很大的文件来充当虚拟机的硬盘,保存虚拟机的操作系统和文档数据),位置在/var/lib/libvirt/images/下
磁盘镜像文件格式:raw和qcow2
qcow2是KVM默认的,占用空间小,支持压缩、后端盘复用和快照
三、virsh 命令工具介绍
virsh命令进入交互模式,--help 产看命令帮助
list (--all) //列出虚拟机
nodeinfo //查看物理机的信息
dominfo 虚拟机名 //查看虚拟机的信息
net-list (--all) //查看虚拟交换机
start | reboot | shutdown | destroy | autostart 虚拟机名 //运行|重启|关闭|强制关闭|开机自动运行
--连接自己的virsh管理器: # virsh 或# virsh -c qemu:///system
--连接别人的virsh管理器:
virsh -c qemu+ssh://176.233.3.17/system
net-list //查看虚拟网络
net-define vbr.xml //创建虚拟网络
net-undefine vbr //删除虚拟网络
net-start vbr //启动虚拟网络
net-destroy vbr //停用虚拟网络
net-edit vbr //修改vbr网络的配置
四、自定义虚拟机
步骤:
1.安装软件(参见二、4)
2.搭建网络yum源
光盘作为 yum 源 CentOS7-1708.iso (共9591包)
#vim /etc/yum.repos.d/centos.repo
[centos7]
name=centos7
baseurl=ftp://176.233.3.17/centos
gpgcheck=0
enabled=1
:wq
3.禁用selinux(参见一、5)
4.禁用firewalld(参见一、6)
5.安装虚拟网桥
#vim /etc/libvirt/qemu/network/vbr.xml
<network>
<name>vbr</name> //vbr是虚拟交换机的名字
<bridge name="vbr"/> //vbr是网卡的名字(写一样便于辨认)
<forward mode="nat"/>
<ip address="192.168.1.254" netmask="255.255.255.0">
<dhcp>
<range start="192.168.1.100" end="192.168.1.200"/>
</dhcp>
</ip>
</network>
#virsh //进入虚拟机管理器
#net-define vbr.xml //创建虚拟网络
#net-start vbr //启动
#net-autostart vbr //开机自启
6.创建磁盘文件
#cd /var/lib/libvirt/images
#qemu-img create -f qcow2 node.img 8G
7.新建虚拟机
virt-manager
选择网络安装—>前进
URL:ftp://176.233.3.17/centos (网络yum源的地址)—>前进
RAM:2048 CPU:2 —>前进
选择或创建自定义存储:管理—>选择node.img(步骤6中创建的镜像)—>选择卷—>前进
选择网络:虚拟网络‘vbr’(步骤5中创建的网桥)—>完成
语言选择English(由于创建的虚拟机是模板虚拟机,因此需要满足共性)
安装分区:手动分区,选择标准分区,只添加一个根分区
设置密码(此密码可用于以该虚拟机为模板创建的虚拟机的root密码)
五、虚拟机模板制作
初始化刚安装好的系统:
1.禁用selinux
vi /etc/selinux/config
SELINUX=disabled
2.网卡及配置文件设置
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0" //网卡的名字
ONBOOT="yes" //开机是否启动
NM_CONTROLLED="no" //拒绝接受NetworkManager服务的管理
TYPE="Ethernet" //网卡设备 还有一种类型是bridge交换机
BOOTPROTO="dhcp" //dhcp动态IP
//r如果BOOTPROTO="static"则以下三项取消注释
#IPADDR="192.168.1.50"
#PREFIX="24"
#GATEWAY="192.168.1.254"
3.停止并卸载防火墙与NetworkManager
systemctl stop firewalld
systemctl stop NetworkManager
yum remove -y NetworkManager- firewalld- python-firewall
4.重启虚拟机(重启后确保可以上网)
5.配置yum源
#vi /etc/yum.repo/local.repo
[local_repo]
name=CentOS-$releasever - Base
baseurl="ftp://192.168.1.254/centos7"
enabled=1
gpgcheck=0
:wq
#yum -y install bash-completion //命令行自动补齐,重启生效
6.验证数字签名
下载 RPM-GPG-KEY-CentOS-7 //包在yum源的文件夹里,也可scp到虚拟机里
导入 rpm --import RPM-GPG-KEY-CentOS-7
修改 local.repo gpgcheck=1 //开启数字验证
使用 yum install lftp lrzsz 验证
ps:lftp 的功能
--可以连自己的ftp: lftp 192.168.4.11
--可以连对方的ftp: lftp sftp://192.168.4.12 -u root
s表示ssh ,即使对方没开ftp,但开了ssh ,也可以在对方的ftp上操作
7.禁用空路由
vim /etc/sysconfig/network
NOZEROCONF="yes"
不禁用的话可能会在某种情况下影响计算机的通讯
8.添加串口终端(可以console 虚拟机)
vim /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL="serial console"
GRUB_SERIAL_COMMAND="serial --speed=115200"
GRUB_CMDLINE_LINUX="biosdevname=0 net.ifnames=0 console=ttyS0,115200n8"
GRUB_DISABLE_RECOVERY="true"
GRUB_DISABLE_LINUX_UUID="true"
GRUB_ENABLE_LINUX_LABEL="true"
:wq
修改完之后创建引导文件
#grub2-mkconfig -o /boot/grub2/grub.cfg
#beboot
修改/etc/fstab ,把UUID改成系统设备名(用blkid命令查看uuid对应的磁盘设备)
9.去除个性化信息
安装分区扩展软件
#yum -y install cloud-utils-growpart
设置第一次开机自动扩容根目录
#chmod 755 /etc/rc.local
在 rc.local 里加入如下配置
###
/usr/bin/growpart /dev/vda 1
/usr/sbin/xfs_growfs /
/usr/bin/sed '/^###/,$d' -i /etc/rc.d/rc.local
10.关闭虚拟机后执行信息清理工作(真机)
设置语言为英文
LANG=en_US.UTF-8
virt-sysprep -d 虚拟机名
11.删除虚拟机定义
virsh undefine 虚拟机名
六、快速创建虚拟机
创建 2 个虚拟机
要求:
虚拟机1
8G 内存
2块网卡
第一块网卡连接虚拟交换机 vbr
第二块网卡连接虚拟交换机 private1
设置静态 IP,默认网关 192.168.1.254
2块硬盘
其中 / 的 vda1 要求 50G
vdb 20G
虚拟机2
6G 内存
2块网卡
第一块网卡连接虚拟交换机 vbr
第二块网卡连接虚拟交换机 private1
设置静态 IP,默认网关 192.168.1.254
要求与第一台虚拟主机的两个 IP 都能 ping 通
硬盘
/ 的 vda1 要求 50G
1.开启虚拟网卡
virsh net-start default
virsh net-autostart default
//将所有的虚拟网卡开启并设置成开机自启动
2.创建磁盘文件
cd /var/lib/libvirt/images
qemu-img create -b node.img -f qcow2 node1.img 50G
qemu-img create -f qcow2 disk.img 20G
3.更改虚拟机node1的配置文件
virsh edit node1
修改内存大小为8G:
<memory unit='KiB'>8192000</memory>
<currentMemory unit='KiB'>8192000</currentMemory>
添加第二块硬盘:(在原来disk后面添加)
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/disk.img'/>
<target dev='vdb' bus='virtio'/>
</disk>
添加网卡(在原来interface后面添加)
<interface type='bridge'>
<source bridge='private1'/>
<model type='virtio'/>
</interface>
4.启动虚拟机
virsh start node1
virsh console node1
5.配置网卡IP
cd /etc/sysconfig/network-scripts/
配置eth0网卡IP
#vim ipcfg-eth0
DEVICE="eth0" #虚拟网卡的名字
ONBOOT="yes" #在系统启动时是否启动这个网卡
NM_CONTROLLED="no" #拒绝接受networkmanager的管理
TYPE="Ethernet" #表示它是一个网卡(Bridge表示是一个交换机)
BOOTPROTO="none" #如何配置IP地址=static(静态IP),dhcp(自动分配,需要将下面三行注释掉),none(不处理)
IPADDR="192.168.1.100" #IP地址
PREFIX="24" #子网掩玛
GATEWAY="192.168.1.254" #默认网关
:wq
配置eth1网卡
#cp ipcfg-eth0 ipcfg-eth1
#vim pcfg-eth1
DEVICE="eth1"
ONBOOT="yes"
NM_CONTROLLED="no"
TYPE="Ethernet"
BOOTPROTO="none"
IPADDR="192.168.4.100"
PREFIX="24"
:wq
重启配置文件
#systemctl restart network
6.DNS服务器
(真机):
#yum -y install bind bind-chroot
#vim /etc/named.conf
listen-on port 53 { 192.168.1.254; };
allow-query { any; };
forwarders { 202.106.196.115; };
dnssec-enable no;
dnssec-validation no;
:wq
7.时间服务器
yum install -y chrony
(真机):
vim /etc/chrony.conf
server ntp1.aliyun.com iburst
bindacqaddress 0.0.0.0
allow 0/0
(虚拟机):
#yum install -y chrony
#vim /etc/chrony.conf
server 192.168.1.254 iburst
检查是否同步成功:
chronyc sources -v
同步成功,+ 备胎 , ? 同步失败