2018-03-05
网络管理
1.网卡配置文件路径
/etc/sysconfig/network-scripts/ifcfg-eth0
2.网卡配置文件内容
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=static
IPADDR=120.25.213.2
NETMASK=255.255.252.0
3.重启网卡的两种方式
- RHEL 6:
service network restart
- RHEL 7:
systemctl restart network
4.网络配置
- 临时修改IP地址
ifconfig eth0 192.168.1.254
- 固定
vim /etc/sysconfig/network-scripts/ifcfg-eth0
磁盘管理
1.查看磁盘fdisk -l
2.管理磁盘
- 分区
-
fdisk /dev/sdb
- 查看分区:p
- 新建分区:n
- 删除分区:d
- 修改类型:t
- 保存:w
-
parted /dev/sdb
- 查看分区:p
- 新建分区:gpt mklabel
- 删除分区:rm
- 保存:q
-
- 格式化
mkfs.ext4 /dev/sdb
- 挂载
mount -a
- 查看
mount -l
- 临时挂载
mount /dev/cdrom /mnt
- 永久挂载
vi /etc/fstab
- 取消挂载
umonut 设备名/挂载点
- 查看
- LVM
- 创建物理卷
pvcreate /dev/sdb1
- 创建卷组
vgcreate 卷组名 /dev/sdb1
- 创建逻辑卷
lvcreate -L 100M -n First_LV First_VG
- 创建物理卷
- LVS
lvcreate -l 500(PE大小) -n lv01 vg名称
课堂练习
1.使用fdisk将sdb硬盘分区删除
2.将硬盘sdb之分成一个主分区
3.修改分区类型为8e,LVM分区类型
4.将分区sdb1创建为物理卷
5.将物理卷转换为卷组,卷组名称为diskkvm
6.将卷组所有的空间创建为lvm-disk
7.格式化lvm-disk为ext4格式
8.在根目录下创建挂载点KVM
9.自动挂载分区
参考答案
1~2略
3.command t 8e
4.pvcreate /dev/sdb1
5.vgcreate diskkvm /dev/sdb1
6.lvcreate -l 4095 diskkvm -n lvm-disk
7.mkfs.ext4 /dev/diskkvm/lvm-disk
8.mount /dev/diskkvm/lvm-disk /root/KVM/
9.mount -a
推荐一个看上去还不错的参考资料
2018-03-08补充
删除逻辑卷
vgremove diskkvm
iptables防火墙
查看防火墙规则表和链
iptables -L
设置防火墙规则
RHEL 6
添加规则:iptables -A INPUT -p tcp --dport 80 -j ACCEPT
删除规则:iptables -D INPUT -p tcp --dport 80 -j ACCEPT
RHEL 7
添加规则:firewall-cmd --permanent --zone=public --add-port=80/tcp
删除规则:firewall-cmd --permanent --zone=public --remove-port=80/tcp
NFS文件系统
- NFS服务器的配置文件
vi /etc/exports
/root/KVM 192.168.144.0/22(rw,sync,all_squash,anonuid=65534,anongid=65534)
chown nfsnobody.nfsnobody KVM/
-
NFS服务的启动与停止
- rpcbind守护进程
- NFS进程
-
客户端挂载NFS共享目录
- 启动rpcbind守护进程
- 挂载命令
mount -t nfs 192.168.146.40:/data /mnt
df -h
实验总结:
客户端挂载时出现报错:access denied by server while mounting 192.168.146.40:/root/KVM
原因:root目录默认只有管理员权限
解决方案:chmod 777 root
修改权限
2018-03-06
VNC远程连接
yum -y install vnc-server
vncserver
使用客户端vnc-view连接(端口号5901)
查看Linux内核版本
[root@FCC ~]# uname -a
Linux FCC.localdomain 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
配置本地yum源
mount /dev/cdrom /usr/mnt
vim /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
baseurl=file:///usr/mnt
gpgcheck=0
enable=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
2018-03-07
虚拟化的概念
-
虚拟化是云计算的基础
- 虚拟化使得在一台物理的服务器上可以运行多台虚拟机
- 虚拟机共享物理机的CPU、内存、IO硬件资源
- 逻辑上虚拟机是相互隔离的
物理机一般称为宿主机(Host)
宿主机上的虚拟机称为客户机(Guest)
Hypervisor:虚拟化管理程序,创建和管理虚拟机
虚拟化的类型
-
全虚拟化
- 该模型使用Hypervisor协调客户操作系统和原始硬件,GuestOS感觉不到自己是虚拟化的
- 性能稍差些,因为Hypervisor本身需要浪费一部分资源
-
如KVM、Vmware、ESXi等
-
半虚拟化
- 它使用Hypervisor分享存取底层的硬件
- 半虚拟化的客户操作系统集成了虚拟化方面的代码
- GuestOS感觉到自己是被虚拟出来的
- 性能稍强于全虚拟化
-
如Xen
-
硬件辅助虚拟化
- 提高全虚拟化的性能
- 需要CPU支持,Intel-VT和AMD-V
- 需要在BIOS启用VT
虚拟化的架构
-
寄居架构
- vHypervisor运行在现有系统上
- 性能稳定,利用率会差一点
-
如vmware workstation、virtual-pc、rhel内核集成的kvm
-
原生架构
- Hypervisor直接运行在硬件之上
- 性能、利用率、稳定性上都会好些
-
如Esxi、Hyper-v、Xen-desktop、rhev-h等
实验准备
- 创建逻辑卷
- 使用virt-manager添加
- 添加存储池
- 存储卷
- 安装KVM
qemu-kvm.x86_64 //kvm模块
qemu-kvm-tools.x86_64 //kvm调试工具,可以不装
python-virtinst.noarch //python组件,记录创建vm时的xml文件
qemu-img.x86_64 //qemu组件,创建磁盘、启动虚拟机等
bridge-utils.x86_64 //网络管理工具
libvirt //虚拟机管理工具
virt-manager //图形界面管理虚拟机
- 验证安装
lsmod | grep kvm
service libvirtd start //启动libvirtd守护进程
- 创建虚拟机
- 使用virt-install创建虚拟机(最小需求是:-name --raw, 存储选项(--disk --nodisk)以及一个安装选项)
2018-03-08
- virt -install --virt -type kvm
相关参数- --name CentOS 6.4
- --raw 1024
- --vcpus=1
- --cdrom=/kvmdisk/CentOSx86-64.raw,size=10
- --network network=default
- --graphics vnc,listen=0.0.0,port=5902
virt-install --virt-type kvm --name winxp --ram 1024 --vcpus=1 --cdrom=/root/KVM/XP.iso --disk path=/root/KVM/xp.raw,size=10 --network network=default --graphics vnc,listen=0.0.0.0,port=5902
-
使用virsh管理虚拟机
- Virsh是使用libvirt managemenr apa构建的管理工具
- Virsh名称的含义是virtualization shell
- Virsh的两种工作模式
- 立即模式
virsh list -all
- 交互模式
vir
- 立即模式
- 查看命令帮助
virsh -h
- 查看KVM的配置文件存放目录(虚拟机名称.xml)
ls /etc/libvirt/qemu
关闭与启动虚拟机
关闭虚拟机
virsh shutdown 虚拟机名
启动虚拟机
virsh start 虚拟机名
通过配置文件启动虚拟机
virsh create /etc/libvirt/qemu/虚拟机配置文件
强制关闭虚拟机电源
virsh destroy 虚拟机名
- 挂起与恢复虚拟机
挂起虚拟机
virsh suspend 虚拟机名
恢复虚拟机
virsh resume 虚拟机名
配置虚拟机伴随宿主机自动启动
virsh autostart 虚拟机名
查看虚拟机是否自动启动
ls /etc/libvirt/qemu/autostart
-
重新定义虚拟机
- 当需要重命名虚拟机或虚拟机移动位置时
- 导出虚拟机配置
virsh dumpxml 虚拟机名>/etc/libvirt/qemu/old.xml
- 虚拟机的删除
virsh shutdown 虚拟机名 virsh undefine 虚拟机名 virsh list -all
- 重新定义虚拟机
cd /etc/libvirt/qemu mv test02.xml aaa.xml virsh define aaa.xml virsh list --all
- 虚拟机重命名
cd /etc/libvirt/qemu vim test02.xml cd /var/lib/libvirt/images/ mv old.img new.img
-
KVM网络类型
-
NAT模式
- 网桥
virbr0是一个桥接器,给虚拟机集群虚拟了一个局域网,这个局域网的网络号默认为192.168.122.0,可在宿主机上查看[root@FCC libvirt]# brctl show bridge name bridge id STP enabled interfaces virbr0 8000.525400674b5c yes virbr0-ni
- 路由表
[root@FCC libvirt]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0 192.168.144.0 0.0.0.0 255.255.252.0 U 1 0 0 eth1
- 网桥
Bridge模式
这种方式允许虚拟机像一台堵路的主机一样拥有网络,外部的机器可以直接访问虚拟机网络,但需要网络支持,一般的有线网卡都支持Host-only模式
仅主机模式
-
-
KVM支持的磁盘类型
-
RAW
- 这并非是一种真正的磁盘格式,而是代表虚拟机所使用的原始镜像
- 它并不存储元数据,因此可以作为保证虚拟机兼容性的候选方案,然而,也正因为它不存储元数据,因此支持某种高级特性,比如快照和压缩
- 格式简单,容易转为其他格式,需要文件系统的支持才能支持sparse file
Cow:copy-on-write,昙花一现
Qcow:QEMU早期的copy-on-write格式。过渡性方案
-
Qcow2
- 按需进行分配磁盘空间,不管文件系统是否支持
- 支持快照
- 支持zlib的磁盘压缩
- 支持AES的加密
-
Vmdk(virtual machine disk)
- Vmware环境当中默认的磁盘格式
-
Vhd\vhdx(virtual hard disk)
- 微软默认采用的文件格式
- Vdi(virtualbox)
通过qemu-img --help查看支持的格式
-
使用virsh创建与管理存储池
默认位置
/var/lib/libvirt/images
查看存储池
virsh pool-list --all
查看信息
virsh vol-list 存储池名
查看卷信息
virsh vol-info 卷名 存储池名
2018-03-09
本周课程的最后一天,是一场虚拟化KVM搭建比赛,题目很简单,使用KVM部署两台虚拟机即可,当然还有一些特定的要求。本着能偷懒就偷懒,能自动化就自动化的精神,我花了点时间写了一个shell脚本
#!/bin/bash
echo '正在配置yum源'
mkdir /usr/mnt
mount /dev/cdrom /usr/mnt
echo "[base]
name=CentOS-$releasever - Base
baseurl=file:///usr/mnt
gpgcheck=0
enable=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6" > /etc/yum.repos.d/CentOS-Base.repo
yum clean all
yum list
echo 'yum源配置完成,即将开始安装VNC'
yum -y install vnc-server
echo 'VNC服务启动'
vncserver
echo '正在关闭防火墙'
service iptables stop
echo '正在关闭SEliunx'
setenforce 0
echo '正在通过本地yum源安装KVM依赖包'
yum -y install qemu-kvm
yum -y install qemu-kvm-tools
yum -y install python-virtinst.noarch
yum -y install qemu-img
yum -y install bridge-utils
yum -y install libvirt
yum -y install virt-manager
echo 'KVM依赖包安装完成,即将启动libvirt守护进程'
service libvirtd start
echo '正在进行磁盘配置'
mkdir /images
pvcreate /dev/sdc
vgcreate lenovo /dev/sdc1
lvcreate -l 25599 lenovo -n lvm-disk
mkfs.ext4 /dev/lenovo/lvm-disk
mount /dev/lenovo/lvm-disk /images
echo '环境部署完成,通过VNC进入图形化界面开始创建虚拟机吧!'
手动给硬盘分一下区,接着修改一下分区类型,然后执行这个脚本,几乎就可以高枕无忧了,一切尽在掌握之中。
有人说,我们辛辛苦苦敲了一大堆命令,你用脚本完成比赛是不是算作弊了(你行你也写一个)?我的理解是,学习任何一门技术,最重要的是能够理解每一步操作背后的原理,以及将这些零散的知识点在大脑中形成体系。命令遗忘可以查阅资料,只要知识体系还在,那都没什么大问题,如果只是单纯的死记硬背,照着PPT敲命令,那企业不如招打字员算了。
好了,这一周《云计算与虚拟化技术》的课就已经结束了,咱们下周见。