标签 LVM 下的文章

在我们之前的文章中,我们介绍了什么是 LVM 以及能用 LVM 做什么,今天我们会给你介绍一些 LVM 的主要管理工具,使得你在设置和扩展安装时更游刃有余。

正如之前所述,LVM 是介于你的操作系统和物理硬盘驱动器之间的抽象层。这意味着你的物理硬盘驱动器和分区不再依赖于他们所在的硬盘驱动和分区。而是你的操作系统所见的硬盘驱动和分区可以是由任意数目的独立硬盘汇集而成的或是一个软件磁盘阵列。

要管理 LVM,这里有很多可用的 GUI 工具,但要真正理解 LVM 配置发生的事情,最好要知道一些命令行工具。这当你在一个服务器或不提供 GUI 工具的发行版上管理 LVM 时尤为有用。

LVM 的大部分命令和彼此都非常相似。每个可用的命令都由以下其中之一开头:

  • Physical Volume (物理卷) = pv
  • Volume Group (卷组)= vg
  • Logical Volume (逻辑卷)= lv

物理卷命令用于在卷组中添加或删除硬盘驱动。卷组命令用于为你的逻辑卷操作更改显示的物理分区抽象集。逻辑卷命令会以分区形式显示卷组,使得你的操作系统能使用指定的空间。

可下载的 LVM 备忘单

为了帮助你理解每个前缀可用的命令,我们制作了一个备忘单。我们会在该文章中介绍一些命令,但仍有很多你可用但没有介绍到的命令。

该列表中的所有命令都要以 root 身份运行,因为你更改的是会影响整个机器系统级设置。

如何查看当前 LVM 信息

你首先需要做的事情是检查你的 LVM 设置。s 和 display 命令可以和物理卷(pv)、卷组(vg)以及逻辑卷(lv)一起使用,是一个找出当前设置的好起点。

display 命令会格式化输出信息,因此比 s 命令更易于理解。对每个命令你会看到名称和 pv/vg 的路径,它还会给出空闲和已使用空间的信息。

最重要的信息是 PV 名称和 VG 名称。用这两部分信息我们可以继续进行 LVM 设置。

创建一个逻辑卷

逻辑卷是你的操作系统在 LVM 中使用的分区。创建一个逻辑卷,首先需要拥有一个物理卷和卷组。下面是创建一个新的逻辑卷所需要的全部命令。

创建物理卷

我们会从一个全新的没有任何分区和信息的硬盘开始。首先找出你将要使用的磁盘。(/dev/sda, sdb, 等)

注意:记住所有的命令都要以 root 身份运行或者在命令前面添加 'sudo' 。
fdisk -l

如果之前你的硬盘从未格式化或分区过,在 fdisk 的输出中你很可能看到类似下面的信息。这完全正常,因为我们会在下面的步骤中创建需要的分区。

我们的新磁盘位置是 /dev/sdb,让我们用 fdisk 命令在磁盘上创建一个新的分区。

这里有大量能创建新分区的 GUI 工具,包括 Gparted,但由于我们已经打开了终端,我们将使用 fdisk 命令创建需要的分区。

在终端中输入以下命令:

fdisk /dev/sdb

这会使你进入到一个特殊的 fdisk 提示符中。

以指定的顺序输入命令创建一个使用新硬盘 100% 空间的主分区并为 LVM 做好了准备。如果你需要更改分区的大小或想要多个分区,我建议使用 GParted 或自己了解一下关于 fdisk 命令的使用。

警告:下面的步骤会格式化你的硬盘驱动。确保在进行下面步骤之前你的硬盘驱动中没有任何有用的信息。

  • n = 创建新分区
  • p = 创建主分区
  • 1 = 成为磁盘上的首个分区

输入 enter 键两次以接受默认的第一个和最后一个柱面。

用下面的命令准备 LVM 所使用的分区。

  • t = 更改分区类型
  • 8e = 更改为 LVM 分区类型

核实并将信息写入硬盘。

  • p = 查看分区设置使得在写入更改到磁盘之前可以回看
  • w = 写入更改到磁盘

运行这些命令之后,会退出 fdisk 提示符并返回到终端的 bash 提示符中。

输入 pvcreate /dev/sdb1 在刚创建的分区上新建一个 LVM 物理卷。

你也许会问为什么我们不用一个文件系统格式化分区,不用担心,该步骤在后面。

创建卷组

现在我们有了一个指定的分区和创建好的物理卷,我们需要创建一个卷组。很幸运这只需要一个命令。

vgcreate vgpool /dev/sdb1

vgpool 是新创建的卷组的名称。你可以使用任何你喜欢的名称,但建议标签以 vg 开头,以便后面你使用它时能意识到这是一个卷组。

创建逻辑卷

创建 LVM 将使用的逻辑卷:

lvcreate -L 3G -n lvstuff vgpool

-L 命令指定逻辑卷的大小,在该情况中是 3 GB,-n 命令指定卷的名称。 指定 vgpool 以便 lvcreate 命令知道从什么卷获取空间。

格式化并挂载逻辑卷

最后一步是用一个文件系统格式化新的逻辑卷。如果你需要选择一个 Linux 文件系统的帮助,请阅读 如果根据需要选取最合适的文件系统

mkfs -t ext3 /dev/vgpool/lvstuff

创建挂载点并将卷挂载到你可以使用的地方。

mkdir /mnt/stuff
mount -t ext3 /dev/vgpool/lvstuff /mnt/stuff

重新设置逻辑卷大小

逻辑卷的一个好处是你能使你的存储物理地变大或变小,而不需要移动所有东西到一个更大的硬盘。另外,你可以添加新的硬盘并同时扩展你的卷组。或者如果你有一个不使用的硬盘,你可以从卷组中移除它使得逻辑卷变小。

这里有三个用于使物理卷、卷组和逻辑卷变大或变小的基础工具。

注意:这些命令中的每个都要以 pv、vg 或 lv 开头,取决于你的工作对象。

  • resize – 能压缩或扩展物理卷和逻辑卷,但卷组不能
  • extend – 能使卷组和逻辑卷变大但不能变小
  • reduce – 能使卷组和逻辑卷变小但不能变大

让我们来看一个如何向刚创建的逻辑卷 "lvstuff" 添加新硬盘驱动的例子。

安装并格式化新硬盘驱动

按照上面创建新分区并更改分区类型为 LVM(8e) 的步骤安装一个新硬盘驱动。然后用 pvcreate 命令创建一个 LVM 能识别的物理卷。

添加新硬盘到卷组

要添加新的硬盘到一个卷组,你只需要知道你的新分区,在我们的例子中是 /dev/sdc1,以及想要添加到的卷组的名称。

这会添加新物理卷到已存在的卷组中。

vgextend vgpool /dev/sdc1

扩展逻辑卷

调整逻辑卷的大小,我们需要指出的是通过大小而不是设备来扩展。在我们的例子中,我们会添加一个 8GB 的硬盘驱动到我们的 3GB vgpool。我们可以用 lvextend 或 lvresize 命令使该空间可用。

lvextend -L8G /dev/vgpool/lvstuff

当这个命令工作的时候你会发现它实际上重新设置逻辑卷大小为 8GB 而不是我们期望的将 8GB 添加到已存在的卷上。要添加剩余的可用 3GB 你需要用下面的命令。

lvextend -L+3G /dev/vgpool/lvstuff

现在我们的逻辑卷已经是 11GB 大小了。

扩展文件系统

逻辑卷是 11GB 大小但是上面的文件系统仍然只有 3GB。要使文件系统使用整个的 11GB 可用空间你需要用 resize2fs 命令。你只需要指定 resize2fs 到 11GB 逻辑卷它就会帮你完成其余的工作。

resize2fs /dev/vgpool/lvstuff

注意:如果你使用除 ext3/4 之外的文件系统,请查看调整你的文件系统大小的工具。

压缩逻辑卷

如果你想从卷组中移除一个硬盘驱动你可以按照上面的步骤反向操作,并用 lvreduce 或 vgreduce 命令代替。

  1. 调整文件系统大小 (调整之前确保已经移动文件到硬盘驱动安全的地方)
  2. 减小逻辑卷 (除了 + 可以扩展大小,你也可以用 - 压缩大小)
  3. 用 vgreduce 从卷组中移除硬盘

备份逻辑卷

快照是一些新的高级文件系统提供的功能,但是 ext3/4 文件系统并没有快照的功能。LVM 快照最棒的是你的文件系统永不掉线,你可以拥有你想要的任何大小而不需要额外的硬盘空间。

LVM 获取快照的时候,会有一张和逻辑卷完全相同的“照片”,该“照片”可以用于在不同的硬盘上进行备份。生成一个备份的时候,任何需要添加到逻辑卷的新信息会如往常一样写入磁盘,但会跟踪更改使得原始快照永远不会损毁。

要创建一个快照,我们需要创建拥有足够空闲空间的逻辑卷,用于保存我们备份的时候会写入该逻辑卷的任何新信息。如果驱动并不是经常写入,你可以使用很小的一个存储空间。备份完成的时候我们只需要移除临时逻辑卷,原始逻辑卷会和往常一样。

创建新快照

创建 lvstuff 的快照,用带 -s 标记的 lvcreate 命令。

lvcreate -L512M -s -n lvstuffbackup /dev/vgpool/lvstuff

这里我们创建了一个只有 512MB 的逻辑卷,因为该硬盘实际上并不会使用。512MB 的空间会保存备份时产生的任何新数据。

挂载新快照

和之前一样,我们需要创建一个挂载点并挂载新快照,然后才能从中复制文件。

mkdir /mnt/lvstuffbackup
mount /dev/vgpool/lvstuffbackup /mnt/lvstuffbackup

复制快照和删除逻辑卷

你剩下需要做的是从 /mnt/lvstuffbackup/ 中复制所有文件到一个外部的硬盘或者打包所有文件到一个文件。

注意:tar -c 会创建一个归档文件,-f 要指出归档文件的名称和路径。要获取 tar 命令的帮助信息,可以在终端中输入 man tar。

tar -cf /home/rothgar/Backup/lvstuff-ss /mnt/lvstuffbackup/

记住备份时候写到 lvstuff 的所有文件都会在我们之前创建的临时逻辑卷中被跟踪。确保备份的时候你有足够的空闲空间。

备份完成后,卸载卷并移除临时快照。

umount /mnt/lvstuffbackup
lvremove /dev/vgpool/lvstuffbackup/

删除逻辑卷

要删除一个逻辑卷,你首先需要确保卷已经卸载,然后你可以用 lvremove 命令删除它。逻辑卷删除后你可以移除卷组,卷组删除后你可以删除物理卷。

这是所有移除我们创建的卷和组的命令。

umount /mnt/lvstuff
lvremove /dev/vgpool/lvstuff
vgremove vgpool
pvremove /dev/sdb1 /dev/sdc1

这些已经囊括了关于 LVM 你需要了解的大部分知识。如果你有任何关于这些讨论的经验,请在下面的评论框中和大家分享。


via: http://www.howtogeek.com/howto/40702/how-to-manage-and-use-lvm-logical-volume-management-in-ubuntu/

译者:ictlyh 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

逻辑分区管理(LVM)是每一个主流Linux发行版都含有的磁盘管理选项。无论是你需要设置存储池,还是只想动态创建分区,那么LVM就是你正在寻找的。

什么是 LVM?

逻辑分区管理是一个存在于磁盘/分区和操作系统之间的一个抽象层。在传统的磁盘管理中,你的操作系统寻找有哪些磁盘可用(/dev/sda、/dev/sdb等等),并且这些磁盘有哪些可用的分区(如/dev/sda1、/dev/sda2等等)。

在LVM下,磁盘和分区可以抽象成一个含有多个磁盘和分区的设备。你的操作系统将不会知道这些区别,因为LVM只会给操作系统展示你设置的卷组(磁盘)和逻辑卷(分区)

因为卷组和逻辑卷并不物理地对应到影片,因此可以很容易地动态调整和创建新的磁盘和分区。除此之外,LVM带来了你的文件系统所不具备的功能。比如,ext3不支持实时快照,但是如果你正在使用LVM你可以不卸载磁盘的情况下做一个逻辑卷的快照。

你什么时候该使用LVM?

在使用LVM之前首先得考虑的一件事是你要用你的磁盘和分区来做什么。注意,一些发行版如Fedora已经默认安装了LVM。

如果你使用的是一台只有一块磁盘的Ubuntu笔记本电脑,并且你不需要像实时快照这样的扩展功能,那么你或许不需要LVM。如果你想要轻松地扩展或者想要将多块磁盘组成一个存储池,那么LVM或许正是你所寻找的。

在Ubuntu中设置LVM

使用LVM首先要了解的一件事是,没有一个简单的方法可以将已有的传统分区转换成逻辑卷。可以将数据移到一个使用LVM的新分区下,但是这并不会在本篇中提到;在这里,我们将全新安装一台Ubuntu 10.10来设置LVM。(LCTT 译注:本文针对的是较老的版本,新的版本已经不需如此麻烦了)

要使用LVM安装Ubuntu你需要使用另外的安装CD。从下面的链接中下载并烧录到CD中或者使用unetbootin创建一个USB盘

从安装盘启动你的电脑,并在磁盘选择界面选择整个磁盘并设置LVM。

注意:这会格式化你的整个磁盘,因此如果正在尝试双启动或者其他的安装选择,选择手动。

选择你想用的主磁盘,最典型的是使用你最大的磁盘,接着进入下一步。

你马上会将改变写入磁盘所以确保此时你选择的是正确的磁盘接着才写入设置。

选择第一个逻辑卷的大小并继续。

确认你的磁盘分区并继续安装。

最后一步将GRUB的bootloader写到磁盘中。重点注意的是GRUB不能作为一个LVM分区因为计算机BIOS不能直接从逻辑卷中读取数据。Ubuntu将自动创建一个255MB的ext2分区用于bootloder。

安装完成之后。重启电脑并如往常一样进入Ubuntu。使用这种方式安装之后应该就感受不到LVM和传统磁盘管理之间的区别了。

要使用LVM的全部功能,静待我们的下篇关于管理LVM的文章。


via: http://www.howtogeek.com/howto/36568/what-is-logical-volume-management-and-how-do-you-enable-it-in-ubuntu/

作者:How-To Geek 译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

提问: 我有一个USB盘包含了LVM分区。 我想要在Linux中访问这些LVM分区。我该如何在Linux中挂载LVM分区?

LVM是逻辑卷管理工具,它允许你使用逻辑卷和卷组的概念来管理磁盘空间。使用LVM相比传统分区最大的好处是弹性地为用户和程序分配空间而不用考虑每个物理磁盘的大小。

在LVM中,那些创建了逻辑分区的物理存储是传统的分区(比如:/dev/sda2,/dev/sdb1)。这些分区必须被初始化为“物理卷 PV”并加上卷标(如,“Linux LVM”)来使它们可以在LVM中使用。一旦分区被标记被LVM分区,你不能直接用mount命令挂载。

如果你尝试挂载一个LVM分区(比如/dev/sdb2), 你会得到下面的错误。

$ mount /dev/sdb2 /mnt  
mount: unknown filesystem type 'LVM2_member'

要正确地挂载LVM分区,你必须挂载分区中创建的“逻辑卷”。下面就是如何做的。

首先,用下面的命令检查可用的卷组:

$ sudo pvs   
PV         VG                           Fmt  Attr PSize   PFree  
/dev/sdb2  vg_ezsetupsystem40a8f02fadd0 lvm2 a--  237.60g    0 

物理卷的名字和卷组的名字分别在PV和VG列的下面。本例中,只有一个创建在dev/sdb2下的组“vg\_ezsetupsystem40a8f02fadd0”。

接下来检查卷组中存在的逻辑卷,使用lvdisplay命令:

$ sudo lvdisplay <volume-group-name>

使用lvdisplay显示了可用卷的信息(如:设备名、卷名、卷大小等等)。

$ sudo lvdisplay /dev/vg_ezsetupsystem40a8f02fadd0 

  --- Logical volume ---
  LV Path                /dev/vg_ezsetupsystem40a8f02fadd0/lv_root
  LV Name                lv_root
  VG Name                vg_ezsetupsystem40a8f02fadd0
  LV UUID                imygta-P2rv-2SMU-5ugQ-g99D-A0Cb-m31eet
  LV Write Access        read/write
  LV Creation host, time livecd.centos, 2015-03-16 18:38:18 -0400
  LV Status              available
  # open                 0
  LV Size                50.00 GiB
  Current LE             12800
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0

上图可以看到两个逻辑卷的名字:lv\_root和lv\_home

如果你想要挂载一个特定的逻辑卷,使用如下的“LV Path”的设备名(如:/dev/vg\_ezsetupsystem40a8f02fadd0/lv\_home)。

$ sudo mount /dev/vg_ezsetupsystem40a8f02fadd0/lv_home /mnt 

你可以用mount命令不带任何参数检查挂载状态,这会显示所有已挂载的文件系统。

$ mount 

如果你想在每次启动时自动挂载逻辑卷,在/etc/fstab中添加下面的行,你可以指定卷的文件系统类型(如 ext4),它可以从mount命令的输出中找。

/dev/vg_ezsetupsystem40a8f02fadd0/lv_home /mnt ext4 defaults 0 0

现在逻辑卷会在每次启动时挂载到/mnt。


via: http://ask.xmodulo.com/mount-lvm-partition-linux.html

作者:Dan Nanni 译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

4 个 lvcreate 常用命令举例

逻辑卷管理(LVM)是广泛使用的技术,并拥有极其灵活磁盘管理方案。主要包含3个基础命令:

  1. 创建物理卷使用pvcreate
  2. 创建卷组并给卷组增加分区vgcreate
  3. 创建新的逻辑卷使用lvcreate

下列例子主要讲述在已经存在的卷组上使用lvcreate创建逻辑卷。lvcreate命令可以在卷组的可用物理扩展池中分配逻辑扩展。通常,逻辑卷可以随意使用底层逻辑卷上的任意空间。修改逻辑卷将释放或重新分配物理卷的空间。这些例子已经在CentOS 5, CentOS 6, CentOS 7, RHEL 5, RHEl 6 和 RHEL 7 版本中测试通过。

4个lvcreate命令例子

  1. 在名为vg\_newlvm的卷组中创建15G大小的逻辑卷:
[root@centos7 ~]# lvcreate -L 15G vg_newlvm
  1. 在名为vgnewlvm的卷组中创建大小为2500MB的逻辑卷,并命名为centos7newvol,这样就创建了块设备/dev/vgnewlvm/centos7newvol:
[root@centos7 ~]# lvcreate -L 2500 -n centos7_newvol vg_newlvm
  1. 可以使用lvcreate命令的参数-l来指定逻辑卷扩展的大小。也可以使用这个参数以卷组的大小百分比来扩展逻辑卷。这下列的命令创建了centos7newvol卷组的50%大小的逻辑卷vgnewlvm:
[root@centos7 ~]# lvcreate -l 50%VG -n centos7_newvol vg_newlvm
  1. 使用卷组剩下的所有空间创建逻辑卷
[root@centos7 ~]# lvcreate --name centos7newvol -l 100%FREE vgnewlvm

更多帮助,使用lvcreate命令--help选项来查看:

[root@centos7 ~]# lvcreate --help

  lvcreate: Create a logical volume(创建逻辑卷)

lvcreate
        [-A|--autobackup {y|n}](自动备份)
        [-a|--activate [a|e|l]{y|n}]
        [--addtag Tag](增加标签)
        [--alloc AllocationPolicy](分配策略)
        [--cachemode CacheMode](Cache模式)
        [-C|--contiguous {y|n}]
        [-d|--debug]
        [-h|-?|--help]
        [--ignoremonitoring](忽略监控)
        [--monitor {y|n}](监控)
        [-i|--stripes Stripes [-I|--stripesize StripeSize]]
        [-k|--setactivationskip {y|n}]
        [-K|--ignoreactivationskip]
        {-l|--extents LogicalExtentsNumber[%{VG|PVS|FREE}] |(逻辑扩展数)
         -L|--size LogicalVolumeSize[bBsSkKmMgGtTpPeE]}(逻辑卷大小)
        [-M|--persistent {y|n}] [--major major] [--minor minor]
        [-m|--mirrors Mirrors [--nosync] [{--mirrorlog {disk|core|mirrored}|--corelog}]](镜像)
        [-n|--name LogicalVolumeName](逻辑卷名字)
        [--noudevsync]
        [-p|--permission {r|rw}]
        [--[raid]minrecoveryrate Rate]
        [--[raid]maxrecoveryrate Rate]
        [-r|--readahead ReadAheadSectors|auto|none](读取头扇区)
        [-R|--regionsize MirrorLogRegionSize](镜像逻辑区域尺寸)
        [-T|--thin  [-c|--chunksize  ChunkSize](块大小)
          [--discards {ignore|nopassdown|passdown}]
          [--poolmetadatasize MetadataSize[bBsSkKmMgG]]]
          [--poolmetadataspare {y|n}]
        [--thinpool ThinPoolLogicalVolume{Name|Path}] (精简池逻辑卷)
        [-t|--test]
        [--type VolumeType](卷类型)
        [-v|--verbose]
        [-W|--wipesignatures {y|n}]
        [-Z|--zero {y|n}]
        [--version]
        VolumeGroupName [PhysicalVolumePath...]

via: http://www.ehowstuff.com/4-lvcreate-command-examples-on-linux/

作者:skytech 译者:Vic020 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

在本文中,我们将了解逻辑卷是如何通过条块化I/O来写入数据到磁盘的。逻辑卷管理的酷炫特性之一,就是它能通过条块化I/O跨多个磁盘写入数据。

LVM条块化是什么?

LVM条块化是LVM功能之一,该技术会跨多个磁盘写入数据,而不是对单一物理卷持续写入。

Manage LVM Disks Using Striping I/O

使用条块化I/O管理LVM磁盘

条块化特性

  • 它会改善磁盘性能。
  • 避免对单一磁盘的不断的大量写入。
  • 使用对多个磁盘的条块化写入,可以减少磁盘填满的几率。

在逻辑卷管理中,如果我们需要创建一个逻辑卷,扩展的卷会完全映射到卷组和物理卷。在此种情形中,如果其中一个PV(物理卷)被填满,我们需要从其它物理卷中添加更多扩展。这样,添加更多扩展到PV中后,我们可以指定逻辑卷使用特定的物理卷写入I/O。

假设我们有四个磁盘驱动器,分别指向了四个物理卷,如果各个物理卷总计可以达到100 I/O,我们卷组就可以获得400 I/O

如果我们不使用条块化方法,文件系统将横跨基础物理卷写入。例如,写入一些数据到物理卷达到100 I/O,这些数据只会写入到第一个PV(sdb1)。如果我们在写入时使用条块化选项创建逻辑卷,它会分割100 I/O分别写入到四个驱动器中,这就是说每个驱动器中都会接收到25 I/O。

这会在循环过程中完成。如果这些逻辑卷其中任何一个需要扩展,在这种情形下,我们不能添加1个或2个PV,必须添加所有4个pv来扩展逻辑卷大小。这是条块化特性的缺点之一,从中我们可以知道,在创建逻辑卷时,我们需要为所有逻辑卷分配相同的条块大小。

逻辑卷管理有着这些特性,它使我们能够同时在多个pv中条块化数据。如果你对逻辑卷熟悉,你可以去设置逻辑卷条块化。反之,你则必须了解逻辑卷管理的基础知识了,请阅读更基础的文章来了解逻辑卷管理。

我的服务器设置

这里,我使用CentOS6.5用作练习。下面这些步骤也适用于RHEL、Oracle Linux以及大多数发行版。

操作系统:    CentOS 6.5
IP地址:     192.168.0.222
主机名:        tecmint.storage.com

条块化I/O的逻辑卷管理

出于演示目的,我已经准备了4个硬盘驱动器,每个驱动器1GB大小。让我用下面的‘fdisk’命令来列给你看看吧。

# fdisk -l | grep sd

List Hard Drives

列出硬盘驱动器

现在,我们必须为这4个硬盘驱动器sdbsdcsddsde创建分区,我们将用‘fdisk’命令来完成该工作。要创建分区,请遵从本文第一部分步骤#4的说明,并在创建分区时确保你已将类型修改为LVM(8e)

# pvcreate /dev/sd[b-e]1 -v

Create Physical Volumes in LVM

在LVM中创建物理卷

PV创建完成后,你可以使用‘pvs’命令将它们列出来。

# pvs

Verify Physical Volumes

验证物理卷

现在,我们需要使用这4个物理卷来定义卷组。这里,我定义了一个物理扩展大小(PE)为16MB,名为vg\_strip的卷组。

# vgcreate -s 16M vg_strip /dev/sd[b-e]1 -v

上面命令中选项的说明:

  • [b-e]1 – 定义硬盘驱动器名称,如sdb1,sdc1,sdd1,sde1。
  • -s – 定义物理扩展大小。
  • -v – 详情。

接下来,验证新创建的卷组:

# vgs vg_strip

Verify Volume Group

验证卷组

要获取VG更详细的信息,可以在vgdisplay命令中使用‘-v’选项,它将给出vg\_strip卷组中所使用的全部物理卷的详细情况。

# vgdisplay vg_strip -v

Volume Group Information

卷组信息

回到我们的话题,现在在创建逻辑卷时,我们需要定义条块化值,就是数据需要如何使用条块化方法来写入到我们的逻辑卷中。

这里,我创建了一个名为lv\_tecmint-strp1,大小为900MB的逻辑卷,它需要放到vg\_strip卷组中。我定义了4个条块,就是说数据在写入到我的逻辑卷时,需要条块化分散到4个PV中。

# lvcreate -L 900M -n lv_tecmint_strp1 -i4 vg_strip
  • -L –逻辑卷大小
  • -n –逻辑卷名称
  • -i –条块化

Create Logical Volumes

创建逻辑卷

在上面的图片中,我们可以看到条块尺寸的默认大小为64 KB,如果我们需要自定义条块值,我们可以使用-I(大写I)。要确认逻辑卷已经是否已经创建,请使用以下命令。

# lvdisplay vg_strip/lv_tecmint_strp1

Confirm Logical Volumes

确认逻辑卷

现在,接下来的问题是,我们怎样才能知道条块被写入到了4个驱动器。这里,我们可以使用‘lvdisplay’和-m(显示逻辑卷映射)命令来验证。

# lvdisplay vg_strip/lv_tecmint_strp1 -m

Check Logical Volumes

检查逻辑卷

要创建自定义的条块尺寸,我们需要用我们自定义的条块大小256KB来创建一个1GB大小的逻辑卷。现在,我打算将条块分布到3个PV上。这里,我们可以定义我们想要哪些pv条块化。

# lvcreate -L 1G -i3 -I 256 -n lv_tecmint_strp2 vg_strip /dev/sdb1 /dev/sdc1 /dev/sdd1

Define Stripe Size

定义条块大小

接下来,检查条块大小和条块化的卷。

# lvdisplay vg_strip/lv_tecmint_strp2 -m

Check Stripe Size

检查条块大小

是时候使用设备映射了,我们使用‘dmsetup’命令来完成这项工作。它是一个低级别的逻辑卷管理工具,它用于管理使用了设备映射驱动的逻辑设备。

# dmsetup deps /dev/vg_strip/lv_tecmint_strp[1-2]

Device Mapper

设备映射

这里,我们可以看到strp1依赖于4个驱动器,strp2依赖于3个设备。

希望你已经明白,我们怎样能让逻辑卷条块化来写入数据。对于此项设置,必须掌握逻辑卷管理基础知识。

在我的下一篇文章中,我将给大家展示怎样在逻辑卷管理中迁移数据。到那时,请静候更新。同时,别忘了对本文提出有价值的建议。


via: http://www.tecmint.com/manage-multiple-lvm-disks-using-striping-io/

作者:Babin Lonston 译者:GOLinux 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

逻辑卷管理有许多特性,比如像快照和精简资源调配。在先前(第三部分中),我们已经介绍了如何为逻辑卷创建快照。在本文中,我们将了解如何在LVM中设置精简资源调配。

Setup Thin Provisioning in LVM

在LVM中设置精简资源调配

精简资源调配是什么?

精简资源调配用于LVM以在精简池中创建虚拟磁盘。我们假定我服务器上有15GB的存储容量,而我已经有2个客户各自占去了5GB存储空间。你是第三个客户,你也请求5GB的存储空间。在以前,我们会提供整个5GB的空间(富卷)。然而,你可能只使用5GB中的2GB,其它3GB以后再去填满它。

而在精简资源调配中我们所做的是,在其中一个大卷组中定义一个精简池,再在精简池中定义一个精简卷。这样,不管你写入什么文件,它都会保存进去,而你的存储空间看上去就是5GB。然而,这所有5GB空间不会全部铺满整个硬盘。对其它客户也进行同样的操作,就像我说的,那儿已经有两个客户,你是第三个客户。

那么,让我们想想,我到底为客户分配了总计多少GB的空间呢?所有15GB的空间已经全部分配完了,如果现在有某个人来问我是否能提供5GB空间,我还可以分配给他么?答案是“可以”。在精简资源调配中,我可以为第四位客户分配5GB空间,即使我已经把那15GB的空间分配完了。

警告:从那15GB空间中,如果我们对资源调配超过15GB了,那就是过度资源调配了。

它是怎么工作的?我们又是怎样为客户提供存储空间的?

我已经提供给你5GB空间,但是你可能只用了2GB,而其它3GB还空闲着。在富资源调配中,我们不能这么做,因为它一开始就分配了整个空间。

在精简资源调配中,如果我为你定义了5GB空间,它就不会在定义卷时就将整个磁盘空间全部分配,它会根据你的数据写入而增长,希望你看懂了!跟你一样,其它客户也不会使用全部卷,所以还是有机会为一个新客户分配5GB空间的,这称之为过度资源调配。

但是,必须对各个卷的增长情况进行监控,否则结局会是个灾难。在过度资源调配完成后,如果所有4个客户都尽量写入数据到磁盘,你将碰到问题了。因为这个动作会填满15GB的存储空间,甚至溢出,从而导致这些卷下线。

前置阅读

我的服务器设置

操作系统 — 安装有LVM的CentOS 6.5
服务器IP — 192.168.0.200

步骤1: 设置精简池和卷

理论讲太多了,让我们还是来点实际的吧,我们一起来设置精简池和精简卷。首先,我们需要一个大尺寸的卷组。这里,我创建了一个15GB的卷组用于演示。现在,用下面的命令来列出卷组。

# vgcreate -s 32M vg_thin /dev/sdb1

Listing Volume Group

列出卷组

接下来,在创建精简池和精简卷之前,检查逻辑卷有多少空间可用。

# vgs
# lvs

Check Logical Volume

检查逻辑卷

我们可以在上面的lvs命令输出中看到,只显示了一些默认逻辑用于文件系统和交换分区。

创建精简池

使用以下命令在卷组(vg\_thin)中创建一个15GB的精简池。

# lvcreate -L 15G --thinpool tp_tecmint_pool vg_thin
  • -L – 卷组大小
  • –thinpool – 创建精简池
  • tp\_tecmint\_poolThin - 精简池名称
  • vg\_thin – 我们需要创建精简池的卷组名称

Create Thin Pool

创建精简池

使用‘lvdisplay’命令来查看详细信息。

# lvdisplay vg_thin/tp_tecmint_pool

Logical Volume Information

逻辑卷信息

这里,我们还没有在该精简池中创建虚拟精简卷。在图片中,我们可以看到分配的精简池数据为0.00%

创建精简卷

现在,我们可以在带有-V(Virtual)选项的‘lvcreate’命令的帮助下,在精简池中定义精简卷了。

# lvcreate -V 5G --thin -n thin_vol_client1 vg_thin/tp_tecmint_pool

我已经在我的vg\_thin卷组中的tp\_tecmint\_pool内创建了一个精简虚拟卷,取名为thin\_vol\_client1。现在,使用下面的命令来列出逻辑卷。

# lvs 

List Logical Volumes

列出逻辑卷

刚才,我们已经在上面创建了精简卷,这就是为什么没有数据,显示为0.00%M

好吧,让我为其它2个客户再创建2个精简卷。这里,你可以看到在精简池(tp\_tecmint\_pool)下有3个精简卷了。所以,从这一点上看,我们开始明白,我已经使用所有15GB的精简池。

Create Thin Volumes

创建文件系统

现在,使用下面的命令为这3个精简卷创建挂载点并挂载,然后拷贝一些文件进去。

# mkdir -p /mnt/client1 /mnt/client2 /mnt/client3

列出创建的目录。

# ls -l /mnt/

Creating Mount Points

创建挂载点

使用‘mkfs’命令为这些创建的精简卷创建文件系统。

# mkfs.ext4 /dev/vg_thin/thin_vol_client1 && mkfs.ext4 /dev/vg_thin/thin_vol_client2 && mkfs.ext4 /dev/vg_thin/thin_vol_client3

Create File System

创建文件系统

使用‘mount’命令来挂载所有3个客户卷到创建的挂载点。

# mount /dev/vg_thin/thin_vol_client1 /mnt/client1/ && mount /dev/vg_thin/thin_vol_client2 /mnt/client2/ && mount /dev/vg_thin/thin_vol_client3 /mnt/client3/

使用‘df’命令来列出挂载点。

# df -h

Print Mount Points

显示挂载点

这里,我们可以看到所有3个客户卷已经挂载了,而每个客户卷只使用了3%的数据空间。那么,让我们从桌面添加一些文件到这3个挂载点,以填充一些空间。

Add Files To Volumes

添加文件到卷

现在列出挂载点,并查看每个精简卷使用的空间,然后列出精简池来查看池中已使用的大小。

# df -h
# lvdisplay vg_thin/tp_tecmint_pool

Check Mount Point Size

检查挂载点大小

Check Thin Pool Size

检查精简池大小

上面的命令显示了3个挂载点及其使用大小百分比。

13% of datas used out of 5GB for client1
29% of datas used out of 5GB for client2
49% of datas used out of 5GB for client3

在查看精简池时,我们看到总共只有30%的数据被写入,这是上面3个客户虚拟卷的总使用量。

过度资源调配

现在,第四个客户来申请5GB的存储空间。我能给他吗?因为我已经把15GB的池分配给了3个客户。能不能再给另外一个客户分配5GB的空间呢?可以,这完全可能。在我们使用过度资源调配时,就可以实现。过度资源调配可以给我们比我们所拥有的更大的空间。

让我来为第四位客户创建5GB的空间,然后再验证一下大小吧。

# lvcreate -V 5G --thin -n thin_vol_client4 vg_thin/tp_tecmint_pool
# lvs

Create thin Storage

创建精简存储

在精简池中,我只有15GB大小的空间,但是我已经在精简池中创建了4个卷,其总量达到了20GB。如果4个客户都开始写入数据到他们的卷,并将空间填满,到那时我们将面对严峻的形势。如果不填满空间,那不会有问题。

现在,我已经创建在thin\_vol\_client4中创建了文件系统,然后挂载到了/mnt/client4下,并且拷贝了一些文件到里头。

# lvs

Verify Thin Storage

验证精简存储

我们可以在上面的图片中看到,新创建的client 4总计使用空间达到了89.34%,而精简池的已用空间达到了59.19。如果所有这些用户不再过度对卷写入,那么它就不会溢出,下线。要避免溢出的话,我们需要扩展精简池大小。

重要:精简池只是一个逻辑卷,因此,如果我们需要对其进行扩展,我们可以使用和扩展逻辑卷一样的命令,但我们不能缩减精简池大小。

# lvextend

这里,我们可以看到怎样来扩展逻辑精简池(tptecmintpool)。

# lvextend -L +15G /dev/vg_thin/tp_tecmint_pool

Extend Thin Storage

扩展精简存储

接下来,列出精简池大小。

# lvs

Verify Thin Storage

验证精简存储

前面,我们的tptecmintpool大小为15GB,而在对第四个精简卷进行过度资源配置后达到了20GB。现在,它扩展到了30GB,所以我们的过度资源配置又回归常态,而精简卷也不会溢出下线了。通过这种方式,我们可以添加更多的精简卷到精简池中。

在本文中,我们已经了解了怎样来使用一个大尺寸的卷组创建一个精简池,以及怎样通过过度资源配置在精简池中创建精简卷和扩着精简池。在下一篇文章中,我们将介绍怎样来移除逻辑卷。


via: http://www.tecmint.com/setup-thin-provisioning-volumes-in-lvm/

作者:Babin Lonston 译者:GOLinux 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出