• 一、虚拟机A的硬件环境设置

1.内存设置为6G(真机留下2G,其余的给虚拟机A)

 

2.添加一块50G硬盘

3.CPU开启虚拟化功能

 

[root@svr7 ~]# free -m    #查看内存大小

[root@svr7 ~]# lsblk       #查看识别的硬盘

 

  • 二、虚拟机A的硬盘空间的设置

情况一:根分区为逻辑卷      

]# vgs

]# lvs

]# vgextend  centos  /dev/sdb    #扩展卷组

]# vgs

]# lvextend  -L  40G  /dev/centos/root   #扩展逻辑卷

]# lvs

]# blkid  /dev/centos/root

]# xfs_growfs /dev/centos/root  #刷新文件系统

]# df -h

 

情况二:根分区为基本分区

[root@svr7 ~]# fdisk  /dev/sdb

命令(输入 m 获取帮助):n

Partition type:

p primary (0 primary, 0 extended, 4 free)

e extended

Select (default p): #回车

Using default response p

分区号 (1-4,默认 1): #回车

起始 扇区 (2048-83886079,默认为 2048): #回车

将使用默认值 2048

Last 扇区, +扇区 or +size{K,M,G} (2048-83886079,默认为 83886079): #回车

将使用默认值 83886079

分区 1 已设置为 Linux 类型,大小设为 50 GiB

命令(输入 m 获取帮助):w #保存并退出

The partition table has been altered!

Calling ioctl() to re-read partition table.

正在同步磁盘。

[root@svr7 ~]# lsblk

[root@svr7 ~]# mkfs.xfs  /dev/sdb1 #格式化文件系统

[root@svr7 ~]# mkdir  /iso

[root@svr7 ~]# mount  /dev/sdb1  /iso

[root@svr7 ~]# vim  /etc/fstab

/dev/sdb1  /iso  xfs  defaults  0 0

[root@svr7 ~]# umount  /iso #卸载设备

[root@svr7 ~]# df  -h

[root@svr7 ~]# mount -a #检测/etc/fstab是否书写正确

[root@svr7 ~]# df -h

 

  • 传递光盘镜像文件CentOS7-1804.iso到虚拟机A

[root@svr7 ~]# mkdir  /iso

 

[root@svr7 ~]# du  -sh  /iso

8.8G    /iso

 

 

  • 三、虚拟化概述

  • virtualization 资源管理
    • x个物理资源 --> y个逻辑资源
    • 实现程度:完全、部分、硬件辅助(CPU)
  • 虚拟化主要厂商及产品

系 

PC/服务器版代表

VMware

VMware Workstation、vSphere

Microsoft

VirtualPC、Hyper-V

RedHat

KVMRHEV

Citrix

Xen

Oracle

Oracle VM VirtualBox

 

  • KVM虚拟化主要软件包
    • qemu-kvm :为 kvm 提供底层仿真支持   
    • libvirt-daemon :libvirtd 守护进程,管理虚拟机
    • libvirt-client :用户端软件,提供客户端管理命令
    • libvirt-daemon-driver-qemu :libvirtd 连接 qemu 的驱动
    • virt-manager :图形管理工具

]# yum  -y   install  qemu-kvm

]# yum  -y   install  libvirt-daemon

]# yum  -y   install  libvirt-client

]# yum   -y  install  libvirt-daemon-driver-qemu

]# yum  -y   install  virt-manager

 

  • 安装KVM虚拟机

 

 

 

  • 管理虚拟机相关的命令

•提供管理各虚拟机的命令接口

–支持交互模式,查看/创建/停止/关闭 .. ..

–格式:virsh  控制指令  [虚拟机名称]  [参数]

 

•查看KVM节点(服务器)信息

virsh  nodeinfo

•列出虚拟机

virsh  list  [--all]

•查看指定虚拟机的信息

virsh  dominfo  虚拟机名称

•运行|重启|关闭指定的虚拟机

virsh  start或reboot或shutdown  虚拟机名称

•强制关闭指定的虚拟机

virsh  destroy  虚拟机名称

•将指定的虚拟机设为开机自动运行

virsh  autostart  [--disable]  虚拟机名称

 

]# virsh  dominfo  nsd2006  #查看虚拟机信息

]# virsh  autostart  nsd2006  #设置虚拟机开机自动启动

]# virsh  dominfo  nsd2006  #查看虚拟机信息

]# virsh  autostart --disable nsd2006  #设置虚拟机禁止开机自动启动

]# virsh  list         #显示当前有哪些正在运行的虚拟机

]# virsh  list  --all   #显示当前全部虚拟机

]# virsh  destroy  nsd2006   #强制关闭虚拟机nsd2006

]# virsh  list  --all   #显示当前全部虚拟机

]# virsh  start  nsd2006      #开启虚拟机

]# virsh  reboot  nsd2006    #重启虚拟机

 

  • 四、KVM虚拟机的组成

xml配置文件:定义虚拟机的名称、UUID、CPU、内存、虚拟磁盘、网卡等各种参数设置

默认存放路径:/etc/libvirt/qemu/

 

磁盘镜像文件:保存虚拟机的操作系统及文档数据,镜像路径取决于xml配置文件中的定义

默认存放路径:/var/lib/libvirt/images/

 

  • 手动命令克隆KVM虚拟机

1.创建新的磁盘镜像文件

]# virsh destroy nsd2006   #强制关闭虚拟机nsd2006

]# virsh list --all

]# cp /var/lib/libvirt/images/nsd2006.qcow2      /var/lib/libvirt/images/nsd01.qcow2

]# du -sh   /var/lib/libvirt/images/nsd01.qcow2

 

2.创建xml配置文件

]# cp /etc/libvirt/qemu/nsd2006.xml  /etc/libvirt/qemu/nsd01.xml

]# vim  /etc/libvirt/qemu/nsd01.xml

虚拟机的名字:<name>nsd01</name>

虚拟机的UUID:<uuid>…………</uuid>  #删除整行内容

虚拟机磁盘镜像文件:<source file='/var/lib/libvirt/images/nsd01.qcow2'/>

网卡MAC地址:<mac address='……..'/>   #删除整行内容

 

3.导入xml配置文件

[root@svr7 ~]# virsh  define  /etc/libvirt/qemu/nsd01.xml

[root@svr7 ~]# virsh  list  --all

[root@svr7 ~]# virsh  start  nsd01

 

常见问题:UUID没有删除

[root@svr7 ~]# cp /var/lib/libvirt/images/qq.qcow2 /var/lib/libvirt/images/nsd02.qcow2

[root@svr7 ~]# cp /etc/libvirt/qemu/qq.xml /etc/libvirt/qemu/nsd02.xml

[root@svr7 ~]# vim  /etc/libvirt/qemu/nsb02.xml

[root@svr7 ~]# virsh  define  /etc/libvirt/qemu/nsd02.xml

错误:从 /etc/libvirt/qemu/nsd02.xml 定义域失败

错误:操作失败: 已使用 uuid nsd2006 定义域名 '79baf210-9c12-4519-9a2d-92fc67d795a1'

 

常见问题:磁盘镜像文件路径书写错误

[root@svr7 ~]# virsh  define  /etc/libvirt/qemu/nsd02.xml

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

[root@svr7 ~]# virsh start nsd02

错误:开始域 nsd02 失败

错误:Cannot access storage file '/var/lib/libvirt/images/haha.qcow2' (as uid:107, gid:107): 没有那个文件或目录

[root@svr7 ~]# vim  /etc/libvirt/qemu/nsd02.xml

[root@svr7 ~]# virsh define /etc/libvirt/qemu/nsd02.xml

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

[root@svr7 ~]# virsh start nsd02

域 nsd02 已开始

 

练习:

1.创建新的磁盘镜像文件

]# virsh destroy nsd2006   #强制关闭虚拟机nsd2006

]# virsh list --all

]# cp /var/lib/libvirt/images/nsd2006.qcow2      /var/lib/libvirt/images/stu01.qcow2

]# du -sh   /var/lib/libvirt/images/stu01.qcow2

 

2.创建xml配置文件

]# cp /etc/libvirt/qemu/nsd2006.xml  /etc/libvirt/qemu/stu01.xml

]# vim  /etc/libvirt/qemu/stu01.xml

虚拟机的名字:<name>stu01</name>

虚拟机的UUID:<uuid>…………</uuid>  #删除整行内容

虚拟机磁盘镜像文件:<source file='/var/lib/libvirt/images/stu01.qcow2'/>

网卡MAC地址:<mac address='……..'/>   #删除整行内容

 

3.导入xml配置文件

[root@svr7 ~]# virsh  define  /etc/libvirt/qemu/stu01.xml

[root@svr7 ~]# virsh  list  --all

[root@svr7 ~]# virsh  start  stu01

 

  1. 虚拟机的磁盘镜像文件格式

特点\类型

RAW

QCOW2

KVM默认

I/O效率

较高

占用空间

压缩

不支持

支持

后端盘复用

不支持

支持

快照

不支持

支持

 

 

  • 磁盘镜像文件快速生成    

Copy On Write,写时复制

  • 前端盘直接映射原始盘(后端盘)的数据内容
  • 原始盘内容不变,并且不能修改原始盘内容,否则所有前端盘无法使用
  • 对前端盘的修改不回写到原始盘

 

  • qemu-img 通过 -b 选项复用指定后端盘
    • qemu-img  create  -f  qcow2  -b  后端盘  前端盘

 

 

1.创建新的磁盘镜像文件

]# cd  /var/lib/libvirt/images/

]# qemu-img create -f qcow2 -b nsd2006.qcow2  stu05.qcow2

]# qemu-img info stu05.qcow2   #查看前端盘信息

virtual size: 9.0G (9663676416 bytes)  #虚拟大小

disk size: 196K         #实际占用空间的大小

backing file: nsd2006.qcow2   #指明后端盘

 

2.创建xml配置文件

]# cp /etc/libvirt/qemu/nsd2006.xml  /etc/libvirt/qemu/stu05.xml

]# vim  /etc/libvirt/qemu/stu05.xml

虚拟机的名字:<name>stu05</name>

虚拟机的UUID:<uuid>…………</uuid>  #删除整行内容

虚拟机磁盘镜像文件:<source file='/var/lib/libvirt/images/stu05.qcow2'/>

网卡MAC地址:<mac address='……..'/>   #删除整行内容

3.导入xml配置文件

[root@svr7 ~]# virsh  define  /etc/libvirt/qemu/stu05.xml

[root@svr7 ~]# virsh  list  --all

[root@svr7 ~]# virsh  start  stu05

 

五、离线访问磁盘镜像文件内容

  • 使用 guestmount 工具
    • 支持离线挂载 raw、qcow2 格式虚拟机磁盘
    • 可以在虚拟机关机的情况下,直接修改磁盘中的文档
    • 方便对虚拟机定制、修复、脚本维护

   !!! 需要注意 SELinux 机制的影响

  • 基本用法

guestmount  -a  虚拟机磁盘文件路径  -i  /挂载点

]# ls  /var/lib/libvirt/images/

]# yum  provides  */guestmount  #查询仓库中那个软件包产生

]# yum  -y  install  libguestfs-tools-c

]#guestmount  -a  /var/lib/libvirt/images/nsd01.qcow2  -i /mnt

]# ls  /mnt/

]# umount /mnt/

 

六、修改已存在用户的家目录

[root@svr7 ~]# useradd  harry

[root@svr7 ~]# grep  harry  /etc/passwd

[root@svr7 ~]# ls  /home/

 

[root@svr7 ~]# usermod  -d  /opt/test  harry

[root@svr7 ~]# grep  harry  /etc/passwd

[root@svr7 ~]# ls  /opt/

[root@svr7 ~]# cp  -r  /etc/skel/   /opt/test

[root@svr7 ~]# ls  -A  /opt/test

[root@svr7 ~]# chown -R  harry:harry  /opt/test

[root@svr7 ~]# ls  -lA  /opt/test

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐