专栏首页L宝宝聊ITKVM存储池和存储卷

KVM存储池和存储卷

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

虚拟磁盘文件

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

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

基于文件系统的KVM存储(dir,fs,netfs)

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

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

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

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

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

基于设备的KVM存储(disk,iscsi,logical)

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

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

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

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

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

使用KVM存储池

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

存储池管理:

  1. 基本概念
  2. 显示池与卷的信息
  3. 基于目录的存储池
  4. 基于磁盘的存储池
  5. 基于分区的存储池
  6. 基于LVM的存储池
  7. 基于iSCSI的存储池
  8. 基于NFS的存储池

1) 存储池的基本概念

存储池是一个由libvirt管理的文件、目录或存储设备,提供给虚拟机使用。

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

virsh中和存储池相关的命令

pool-autostart 自动启动某个池

virsh中的和存储卷相关命令

示例:

查看系统中的存储池

查看vm存储池的信息

查看vm存储池中的卷信息

创建基于目录的存储池 dir:FilesystemDirectory

通过virsh创建

如果创建的存储池的目录不存在的时候,需要先通过pool-build命令构建然后才能启动成功

virsh pool-build test

创建基于分区的存储池 fs:Pre-FormattedBlock Device

Libvirtd会自动挂载mount分区

准备分区并创建文件系统

创建基于磁盘的存储池 disk:PhysicalDisk Device

准备XML文件

通过virsh创建:

virsh pool-define test.xml

virsh pool-start test 池 test 已启动

virsh pool-autostart test 池 test 标记为自动启动

创建基于LVM的存储池 logical:LVM VolumeGroup

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

创建存储池时,首先准备一个vg,vg中不需要创建lv,有两种情况

使用现有的VG kvmvg

创建新的VG kvmvg

Target Path:新的卷组名

SourcePath:存储设备的位置

Build Pool:会创建新的VG

创建

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

创建基于iSCSI的存储池 iscsi:iSCSI Target

创建iSCSI的存储池

基于NFS的存储池 netfs:NetworkExportDirectory (注:nfs服务器的搭建可以在微信公众号找到,或直接私信作者)

以上就是存储池的一些示例,下面是存储卷的示例

存储卷管理:

存储卷概述

存储池被分割为存储卷(StorageVolume)

存储卷

  1. 文件
  2. 块设备(如物理分区、LVM逻辑卷等)
  3. Libvirt管理的其他类型存储的抽象

存储卷管理

创建、克隆、删除、移动、修改大小

示例:

基于目录的存储池中的存储卷管理

列出存储池

查看具体存储池vm的信息

查看存储池VM中的卷

创建一个qcow2格式的卷

基本LVM的存储池中的存储卷管理

建立基于LVM的存储池

向虚拟机添加卷

attach-device 通过XML添加新的设备

attach-disk 通过参数添加新的磁盘设备

本文分享自微信公众号 - L宝宝聊IT(gh_b0e552aa80db)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-06-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SQL server 数据库的存储过程和触发器

    L宝宝聊IT
  • ESXSI存储与(openfiler)

    L宝宝聊IT
  • KVM综合实验

    1)首先我们创建好存储池/mykvm/kvm-vm,和镜像存储池/mykvm/iso

    L宝宝聊IT
  • Kali Linux Web渗透测试手册(第二版) - 5.6 - 从Web存储中提取信息

    thr0cyte,Gr33k,花花,MrTools,R1ght0us,7089bAt

    用户1631416
  • 【云计算奇妙学习之旅】第五期:存储基础架构

    在上一期中分享虚拟化的第一个重要内容:计算虚拟化。那么,本期就进入第二个重要内容:存储虚拟化。在讲存储虚拟化之前,我们需要先了解存储是什么。

    誉天小鹿
  • 云存储是如何工作的?

    如今,企业越来越多地采用云存储选项,因为它们需要更多的容量、弹性容量以及更好的方式来管理存储成本。事实证明,越来越多的企业数据和云数据难以让IT部门单独使用他们...

    静一
  • 聊聊越来越火的对象存储

    随着云计算的发展,云存储作为一种更基础的云上资源池设施也越来越受到重视和欢迎。从云存储的类型来讲,目前流行的有块存储、文件存储和对象存储三种。今天的主角是对象存...

    飞雪无情
  • 网盘倒闭 解读未来数据存储模式变化

    导读:移动存储领域存在移动云存储和传统硬件存储两大分支,原本这两大分支在各自领域都有着相当的发展。然而,近期各大云存储厂商或停止服务或阉割功能或有偿服务,让原本...

    钱塘数据
  • 对象存储COS成本优化方案

    随着上云企业越来越多,企业对用云成本问题也越发重视。业务的发展会产生海量存储需求,在云端存储数据时,如何进行成本优化,减轻业务负担呢?

    云存储
  • Mysql存储过程和存储函数

    1.5.2. CASE - WHEN - THEN - ELSE - END CASE

    爱撒谎的男孩

扫码关注云+社区

领取腾讯云代金券