《Linux系统管理员工具集》——读书笔记
前述系列
程序设计语言
- 机器语言
- 汇编语言
- 高级语言:接近于数学语言或人的自然语言;
- 非过程化语言:第三代语言是过程化语言,它必须描述问题是如何求解的。第四种语言是非过程化语言,它只需描述需求解的问题是什么。如将某班学生成绩按从高到低的次序输出。用第四代语言只需要写出这个要求即可,而不必写如排序的过程。
- 智能化语言:主要为人工智能领域设计,如知识库系统、专家系统、推理工程、自然语言处理等。
虚拟化工具-KVM
KVM由两部分组成,其中一部分称为KVM Driver,已经成为Linux内核的一个模块,负责虚拟机的创建、虚拟机的内存分配、虚拟CPU寄存器的读/写及虚拟CPU的运行等;另外一部分是稍微修过的QEMU,用于模拟PC硬件的用户空间组件、提供I/O设备模型及访问外设的途径。
准确来说,KVM仅仅是Linux内核的一个模块。管理和创建完整的KVM虚拟机,需要更多的辅助工具。
安装及配置KVM相关软件
-
系统要求
处理器需求:Intel虚拟化技术或AMD安全虚拟机技术(AMD-V)
可使用如下命令检查:
# egrep ’ (vmx|svm)’ --color=always /proc/cpuinfo
flages :fpuwme de pse tsc msr pae mce
…
如果输出结果包含VMX,则表示采用Intel处理器虚拟机技术;如果包含SVM,则表示采用MD处理口虚拟机技术;否则,表示系统不支持虚拟化处理,不能使用KVM。
另,Linux发行版本必须在64位环境中才能使用KVM。 -
安装软件
使用命令行安装KVM软件模块、管理工具和libvirt(创建虚拟机的工具)
#yum install kvm virt-manager libvirt
#/sbin/service libvirtd start -
确定正确加载KVM模块
运行“ls,mod |grep kvm”检查KVM命令模块是否成功安装。如果结果类似于以下输出,则KVM模块已成功安装。
# lsmod | grep kvm
kvm_amd 69416 1
kvm 226208 2 ksm,kvm_amd -
检查KVM是否成功安装
virsh -c qemu:///system list
将会显示如下结果
# virsh -c qemu:///system list
Id Name State
如果在这里显示的是一个错误的信息,则说明有些地方出现了问题。 -
使用virt-manager建立一个KVM虚拟机–(要为图形用户界面操作)
虚拟化管理应用程序
应用程序 | 描述 |
---|---|
virt-manager | 虚拟机桌面管理工具 |
virt-install | 虚拟机配给工具 |
virt-clone | 虚拟机映像克隆工具 |
virt-image | 从一个XML描述符构造虚拟机 |
virt-viewer | 虚拟机图形控制台 |
virsh | virsh Guest 域的交互式终端 |
创建一个虚拟机的5个操作步骤(略)
RHEL 6 KVM虚拟机的新功能
-
设置桥接网络接口
1)安装桥接软件包
#yum install bridge-utils
2)修改文件/etc/sysconfig/network-scripts/ifcfg-ethX(这里笔者使用eth3),添加一行:
BRIDGE=br3
3)建立文件/etc/sysconfig/network-scripts/ifcfg-br3
DEVICE=br3
BOOTPROTO=none
TYPE=Bridge
ONBOOT=yes
DELAY=0
4)重新启动网络配置
# /etc/rc.d/init.d/netword restart
5)为了确认网桥是否存在,运行以下代码查看是否有br3接口
#/usr/sbin/brctl show
6)修改防火墙脚本。在/etc/sysconfig/iptables中添加一行
-A RH-Firewall-1-INPUT -i bridge0 -j ACCEPT
# /sbin/service iptable restart
然后在使用virt-manager建立虚拟机的过程中可以看到桥接网络配置选项。 -
使用图形化KVM虚拟机管理工具virt-manager
提供4个选项卡
概况 虚拟网络 存储 网络接口 -
虚拟机克隆
用户必须关闭虚拟机后才能进行克隆,此外还要设置克隆机的名称和网卡MAC地址。
右键单击虚拟机名称,在弹出的快捷菜单中选择“克隆”命令。 -
虚拟机的保存和恢复
保存功能会将当前虚拟机的状态保存起来,而不是关机,类似于待机,下次单击“恢复”时虚拟机将从保存的状态恢复,以减少虚拟机打开所需要的时间。 -
创建虚拟网络
虚拟网络->添加;
输入虚拟网络名称;
选择虚拟网络的IPv4地址空间->选择DHCP范围
选择是否将这个虚拟网络连接到物理网络->选择目的网络为任意物理设备或NAT到eth0。
单击“完成”。
使用命令行执行高级管理任务
virt-manager的缺陷:
需要在系统内运行,这会浪费资源并为别有目的的人提供额外的进攻点;
需要通过图形工作站运行远程接入的方式,才能对服务器上的虚拟机进行管理。
virsh的优势:
可以通过命令行执行各种管理任务;
通过主命令和子命令管理每个虚拟机功能。
可以通过输入virsh help和virt-install help来查看所有命令。
创建一个名称为“myWin7”的Win7虚拟机
yun install virt-viewer
#virt-install --name myWin7 --hvm --ram 1024 --disk
path=/tmp/win7.img,size=10 --network network:default --vnc --os-variant vista --cdrom /dev/hda
Starting install…
…
查看虚拟机
#virsh -c qemu:///system list
关闭虚拟机
#virsh shutdow myWin7
彻底摧毁一个虚拟机
#virsh destroy myWin7
从一个XML配置文件建立虚拟机
#virsh dumpxml Windws7 > Windows7.xml
XML文件内容略。
使用virt-top监控虚拟机
#yum -y install virt-top
#virt-top
查看CPU使用情况,按1键;
查看网络接口情况,按2键;
KVM虚拟机存储设置
KVM虚拟机的存储模式
KVM的存储方式有多种:
- 虚拟磁盘文件
- 基于文件系统的存储
- 基于设备的存储。
可以使用LVM(Logical Volume Manager)和创建存储池。
基于文件系统的存储方式会降低系统速度,但可以很轻松地用于其它的KVM虚拟化宿主机。如果你希望优化KVM的性能,则最好考虑其他的存储方式。
基于文件系统的KVM存储
两种方式: dir fs
dir:用户指定本地文件系统中的一个目录用于创建磁盘镜像文件;
fs:指定某个格式化文件系统的名称作为专用的磁盘镜像文件存储;不需要挂载到某个特定的分区
两者都可以是本地文件系统或SAN上的文件系统,若使用后者则可轻易实现多个主机的同时访问。
还有一种基于文件的磁盘存储方式为netfs,用户可以指定一个网络文件系统的名称,如Samba。
缺陷:虚拟机的磁盘文件不能直接读写KVM存储设备,而是写入宿主机OS之上的文件系统,会降低性能。
基于设备的KVM存储
支持4种不同的存储设备:磁盘、ISCSI、SCSI、逻辑盘
磁盘:读写硬盘;
ISCSI/SCSI:取决于ISCSI、SCSI设备;
优势:磁盘名称是固定的,不需要于宿主机OS搜索到磁盘设备的顺序;
缺点:灵活性不足、磁盘大小很难改变、不支持快照;
LVM:把所有存储主到一个卷里,从而轻松创建一个逻辑卷,如果超出了可用磁盘空间的最大值则还可以向卷级中添加新的设备。
如果使用Cluster LVM,则可以很容易地配置成多个主机同时访问某个逻辑卷。
使用KVM存储池
在宿主机上创建存储池
- 简化KVM存储设备的管理;
- 实现对提前预留的存储空间的分配;
- 先创建一个KVM存储池,再通过这个池提供LVM逻辑卷
- 使用LVM增加的快照功能
- 提供灵活性
创建基于分区的存储池
/dev/sdb1是一个40GB的磁盘分区,文件格式为ext4。
基于它创建一个存储池:
- 在virt-manager主窗口中选择“主机”,打开“编辑”菜单,选择“主机详细信息”,点击主机详情窗口中的“存储”选项卡,其中default为系统自带;
- 单击+按钮,打开添加新存储池向导;
- 输入名称“fs”,选择类型“fs:预告格式化的块设备”,单击“前进”按钮;
- 输入安装在存储池中源设备的目标路径,如果该位置不存在,则virt-manager会使用自动创建的目录,在“格式”下接列表中选择ext4,在“源路径”框中输入“/dev/sdb1”设备
- 单击“完成”,新建的存储池会出现在“主机详情”窗口左侧的存储池列表中。
创建基于目录的存储池
先创建存储池主机上的目录。
如果权限和SELinux的配置都正确,也可以使用现有的目录。
如下例:
-
#mkdir /dir
-
#chown root:root /dir
-
#chmod 700 /dir
-
#semanage fcontext -a -t virt_image_t /dir
然后执行如下操作:
- 在virt-manager主窗口中选择“主机”,打开“编辑”菜单,选择“主机详细信息”,单击“主机详情”窗口中的“存储”选项卡
- 单击+按钮打开“添加新存储池”向导
- 输入名称“dir”,选择类型"dir:文件系统目录“,单击”前进“
- 输入安装在存储池中源设备的目标路径,若此位置不存在,则virt-manager会自动创建
- 单击”完成“,查看。
创建基于LVM的存储池
- 在virt-manager主窗口中选择"主机“,”编辑“,”主机详细信息“,”主机详情“,”存储“
- 单击+
- 输入名称”lvm1",选择类型“logical:LVM卷组”
- 输入安装在存储池中源设备的目标路径“/dev/VolGroup”,在“源路径”中输入“/dev/sdb1”设备。
- 完成