KVM虚拟机存储管理

KVM的存储选项有多种,包括虚拟磁盘文件、基于文件系统的存储和基于设备的存储。

一、KVM的存储性能解析对比

1、虚拟磁盘文件

  当系统创建KVM虚拟机的时候,默认使用虚拟磁盘文件作为后端存储。安装后,虚拟机认为在使用真实的磁盘,但实际上看到的是用于模拟硬盘的虚拟磁盘文件。这一额外的文件系统层会降低系统速度。

  当然,基于磁盘镜像的虚拟磁盘并非全无益处,磁盘文件系统可以很轻松地用于其它的KVM虚拟化宿主机。但是如果您希望优化KVM虚拟化性能,最好考虑其它的存储方式。

2、基于文件系统的KVM存储

  在安装KVM宿主机时,可选文件系统为dir(directory)或fs(formatted block storage)作为初始KVM存储格式。默认选项为dir,用户指定本地文件系统中的一个目录用于创建磁盘镜像文件。

  fs选项可以允许用户指定某个格式化文件系统的名称,把它作为专用的磁盘镜像文件存储。两种KVM存储选项之间最主要的区别在于:fs文件系统不需要挂载到某个特定的分区。

  两种选项所指定的文件系统,都可以是本地文件系统或位于SAN上某个物理宿主机上的网络文件系统。后者具备一定的优势,因为SAN可以很轻易地实现多个主机同时访问,而本地磁盘或文件系统则无法实现。

  还有一种基于文件的磁盘存储方式是netfs,用户可以指定一个网络文件系统的名称,如Samba.用这种方式作为KVM存储很方便,因为这样很容易访问到位于其它服务器上的文件系统,同时用户也可以通过多台宿主机访问磁盘文件。

  所有的这些基于文件的KVM存储方式都有一个缺点:文件系统固有缺陷。因为虚拟机的磁盘文件不能直接读取或写入KVM存储设备,而是写入宿主机OS之上的文件系统。这也就意味着在访问和写入文件时中间增加了额外一层,这通常会降低性能。所以,如果您希望寻找KVM虚拟化性能最优方案,最好考虑基于设备的存储。

3、基于设备的KVM存储

  另外一种KVM存储的方式就是使用基于设备的方式。共支持四种不同的物理存储:磁盘、iSCSI、SCSI和lvm逻辑盘。磁盘方式指直接读写硬盘设备。iSCSI和SCSI方式可选,取决于用户采取SCSI或iSCSI地址把磁盘设备连接。这种KVM存储方式的优势在于,磁盘的名称是固定的,而不需要取决于宿主机OS搜索到磁盘设备的顺序。

  这种连接磁盘的方式也有缺点:灵活性不足。虚拟磁盘的大小很难改变,而且基于设备的KVM存储不支持快照。

  如果要优化KVM存储的灵活性,可以使用LVM(Logical Volume Manager)。LVM的优势在于可以使用快照,而快照并不是KVM虚拟化自带的功能。

  LVM可以把所有存储放到一个卷组里,从而轻松创建一个逻辑卷。该卷组是物理磁盘设备的一个抽象,所以如果超出可用磁盘空间最大值,还可以向卷组中添加新的设备,从而极大简化了增加存储空间的过程,增加的空间在逻辑卷中直接可以使用。使用LVM使得磁盘空间分配更加灵活,而且增加和删除存储也更为容易。

  最后,LVM无论是在单宿主机或多宿主机环境中都可以很好工作。在多宿主机环境中,您可以在SAN上创建逻辑卷。如果使用Cluster LVM,可以很容易的配置成多个主机同时访问某个逻辑卷。

二、KVM存储池管理

  为简化KVM存储管理的目的,可以创建存储池。在宿主机上创建存储池,可以简化KVM存储设备的管理。采用存储池的方式还可以实现对提前预留的存储空间的分配。这种策略对于大型应用环境很有效,存储管理员和创建虚拟机的管理经常不是同一个人。这样,在创建首台虚拟机之前先完成KVM存储池的创建是很好的方法。

1、存储池的基本概念

存储池是一个由libvirt管理的文件、目录或存储设备,提供给虚拟机使用。存储池被分为存储卷,这些存储卷保存虚拟镜像或连接到虚拟机作为附加存储。libvirt通过存储池的形式对存储进行统一管理、简化操作。对于虚拟机操作来说,存储池和卷并不是必需的。支持以下类型存储池:

2、virsh中和存储池相关的命令

pool-autostart          自动启动某个池

pool-build            建立池

pool-create-as          从一组变量中创建一个池

pool-create            从一个 XML 文件中创建一个池

pool-define-as          在一组变量中定义池

pool-define            在一个XML文件中定义(但不启动)一个池或修改已有池

pool-delete            删除池

pool-destroy           销毁(删除)池

pool-dumpxml           将池信息保存到XML文档中

pool-edit             为存储池编辑 XML 配置

pool-info             查看存储池信息

pool-list             列出池

pool-name             将池 UUID 转换为池名称

pool-refresh            刷新池

pool-start              启动一个(以前定义的)非活跃的池

pool-undefine           取消定义一个不活跃的池

pool-uuid              把一个池名称转换为池 UUID

3、创建基于目录的存储池(dir:Filesystem Directory)

virsh pool-define-as test dir --target /kvm/test

virsh pool-build test

virsh pool-start test

virsh pool-autostart test

4、创建基于分区的存储池(fs:Pre-Formatted Block Device)

Libvirtd会自动挂载mount分区

(1)准备分区并创建文件系统

fdisk /dev/sdc

mkfs.xfs /dev/sdc1

(2)创建:

virsh pool-define-as test fs --source-dev /dev/sdc1 --target /kvm/test

virsh pool-build test

virsh pool-start test

virsh pool-autostart test

5、创建基于磁盘的存储池(disk:Physical Disk Device)

virsh pool-define-as test disk --source-dev /dev/sdc --source-format gpt --target /dev

virsh pool-define test

virsh pool-start test

virsh pool-autostart test

6、创建基于LVM的存储池(logical:LVM Volume Group)

基于LVM的存储池要求使用全部磁盘分区

创建存储池时,首先准备一个vg,vg中不需要创建lv

virsh pool-define-as kvmvg logical  --source-name kvmvg --target /dev/kvmvg

7、创建基于iSCSI的存储池(iscsi:iSCSI Target)

virsh pool-define-as  storage01  iscsi --source-host 192.168.2.20 \       //存储服务器的地址

> --source-dev iqn.2017-10.com.cloud.www:storage001 \   //target目标

> --target /dev/disk/by-path

virsh pool-start storage01

virsh pool-autostart storage01

8、基于NFS的存储池(netfs:Network Export Directory)

[[email protected] ~]# virsh pool-define-as --name kvmnfs --type netfs \

> --source-host 192.168.2.20 \

> --source-path /nfsshare \

> --target /nfstest      //需要提前创建目录

三、KVM存储池管理

1、virsh中和存储池相关的命令

vol-clone             克隆卷。

vol-create-as           从一组变量中创建卷

vol-create             从一个 XML 文件创建一个卷

vol-create-from           生成卷,使用另一个卷作为输入。

vol-delete              删除卷

vol-download            将卷内容下载到文件中

vol-dumpxml             保存卷信息到XML文档中

vol-info              查看存储卷信息

vol-key               根据卷名或路径返回卷的key

vol-list              列出卷

vol-name              根据给定卷key或者路径返回卷名

vol-path              根据卷名或key返回卷路径

vol-pool              为给定密钥或者路径返回存储池

vol-resize             重新定义卷大小

vol-upload             将文件内容上传到卷中

vol-wipe              擦除卷

2、在存储池中创建一个qcow2格式的卷

virsh vol-create-as vm test.qcow2 1G --format qcow2

3、向vm2虚拟机添加test

用法:attach-disk <domain> <source> <target>

virsh attach-disk  vm2  /kvm/vfs/test.qcow2  /kvm/vfs --cache none

原文地址:http://blog.51cto.com/yangshufan/2130162

时间: 2024-10-12 03:37:39

KVM虚拟机存储管理的相关文章

redhat6.5下安装配置kvm虚拟机

-------------------------- 一.前言 二.环境 三.安装与配置 四.创建kvm虚拟机 五.管理kvm虚拟机 六.克隆kvm虚拟机 -------------------------- 一.前言 KVM,即Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中.它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少.KVM目前已成为学术界的主流VMM之一

KVM虚拟化笔记(十四)------kvm虚拟机动态迁移

相比kvm虚拟机静态迁移中需要拷贝虚拟机虚拟磁盘文件,kvm虚拟机动态迁移无需拷贝虚拟磁盘文件,但是需要迁移到的虚拟主机之间需要有相同的目录结构虚拟机磁盘文件,本文这部分内容通过nfs来实现,当然也可以采用GFS2集群文件系统来实现,本文以共享存储进行动态迁移 KVM动态迁移目前有两种,一种是基于共享存储的动态迁移,一种是基于基于数据块的动态迁移,需要qemu-kvm-0.12.2以上版本支持,OEL6.3版本是qemu-kvm-0.12.1.2,其它发行版可能有支持 由于资源有限,现在还没有实

KVM虚拟化笔记(六)------kvm虚拟机的克隆

kvm虚拟机的克隆分为两种情况:kvm主机本机虚拟机直接克隆和通过复制配置文件与磁盘文件的虚拟机复制克隆.接下来我们一一进行测试: (一)kvm主机虚拟机的直接克隆 1,查看虚拟机的配置文件和磁盘文件: [[email protected] qemu]# cat /etc/libvirt/qemu/hadoop1.xml  <!-- WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE  OVERWRITT

KVM虚拟化笔记(七)------kvm虚拟机时间配置

由于在虚拟化环境中,虚拟机在长时间的运行过程中,时间会变慢,通常的做法是配置ntpdate定时与时间服务器进行时间同步的计划任务.Kvm虚拟机默认采用的是UTC时间,需要进行专门的修改,还有考虑时间同步的问题,具体步骤如下: 1,kvm虚拟机修改时间配置文件 kvm虚拟机采用utc时间,需要先修改配置文件使用kvm虚拟机的时间与虚拟主机同步. [[email protected] qemu]# virsh edit hadoop3 最后重启下虚拟机 2. 关于kvm虚拟机时间问题解决思路 (1)

KVM虚拟化笔记(四)------kvm虚拟机日常管理

一,查看KVM虚拟机配置文件及运行状态 1,KVM虚拟机默认的配置文件路径:/etc/libvirt/qemu/ 而autostart目录是配置kvm虚拟机开机自启动的目录. [[email protected] qemu]# cd /etc/libvirt/qemu [[email protected] qemu]# ll total 24 drwxr-xr-x 2 root root 4096 Feb  2 15:03 autostart      ###开机自启动目录   -rw-----

KVM 虚拟机基本管理及常用命令

KVM的基本管理 1.查看KVM虚拟机配置文件 #Kvm虚拟机默认配置文件位置 [[email protected] qemu]# pwd /etc/libvirt/qemu [[email protected] qemu]# ll total 12 -rw------- 1 root root 3863 Nov 6 17:26 CentOS6.5.xml -rw------- 1 root root 3771 Nov 7 00:57 CentOS6u7.xml -rw------- 1 roo

python的kvm虚拟机状态值监控

python获取kvm虚拟机状态值 测试代码,其中只包含了基本的信息,所有的信息都是通过libvirt的api来获取的. import libvirt import memcache import os import time from xml.etree import ElementTree as ET mc = memcache.Client(['192.168.0.112:11211']) while True: conn = libvirt.open('qemu:///system')

linux系统下kvm虚拟机的安装

一 KVM虚拟机简介 KVM是kernel-based Virtual Machine的简称,目前已成为学术界的主流VMM之一.KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术) 是基于硬件的完全虚拟化.KVM的安装和使用相对于XEN来说十分的简单和方便,并且功能强大,比较适用于高性能计算服务的云计算环境中作为IAAS层的虚拟化部署工作 不得不提的是甲骨文公司的VirtualBox也很强大,各方面与KVM可以相媲美,但是现在不开源比较昂贵一般的云计算平台很少使用.至于完全虚拟

烂泥:KVM虚拟机克隆

本文首发于烂泥行天下. 上一篇文章介绍了有关KVM虚拟机快照的创建与恢复,这篇文章我们来介绍有关KVM虚拟机克隆. KVM虚拟机的克隆,我们可以分以下几步: 1. 使用virt-clone命令进行克隆 2. 通过virsh edit命令修改克隆后虚拟机的VNC连接端口 3. 配置克隆后虚拟机的网卡 KVM虚拟机的克隆,我们可以使用virt-clone命令进行.有关virt-clone命令的使用,我们可以通过帮助文档进行查看,如下图: 强烈建议,在克隆虚拟机之前,原来的虚拟机一定要处于关机状态.