奥特虾的课堂笔记之《云计算与虚拟化技术》

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等


      奥特虾的课堂笔记之《云计算与虚拟化技术》_第1张图片
      全虚拟化
  • 半虚拟化

    • 它使用Hypervisor分享存取底层的硬件
    • 半虚拟化的客户操作系统集成了虚拟化方面的代码
    • GuestOS感觉到自己是被虚拟出来的
    • 性能稍强于全虚拟化
    • 如Xen


      奥特虾的课堂笔记之《云计算与虚拟化技术》_第2张图片
      半虚拟化
  • 硬件辅助虚拟化

    • 提高全虚拟化的性能
    • 需要CPU支持,Intel-VT和AMD-V
    • 需要在BIOS启用VT

虚拟化的架构

  • 寄居架构

    • vHypervisor运行在现有系统上
    • 性能稳定,利用率会差一点
    • 如vmware workstation、virtual-pc、rhel内核集成的kvm


      奥特虾的课堂笔记之《云计算与虚拟化技术》_第3张图片
      寄居架构
  • 原生架构

    • Hypervisor直接运行在硬件之上
    • 性能、利用率、稳定性上都会好些
    • 如Esxi、Hyper-v、Xen-desktop、rhev-h等


      奥特虾的课堂笔记之《云计算与虚拟化技术》_第4张图片
      原生架构
实验准备
  • 创建逻辑卷
  • 使用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敲命令,那企业不如招打字员算了。

好了,这一周《云计算与虚拟化技术》的课就已经结束了,咱们下周见。

你可能感兴趣的:(奥特虾的课堂笔记之《云计算与虚拟化技术》)