使用条块化I/O管理多个LVM磁盘（第五部分）
在本文中，我们将了解逻辑卷是如何通过条块化I/O来写入数据到磁盘的。逻辑卷管理的酷炫特性之一，就是它能通过条块化I/O跨多个磁盘写入数据。  LVM条块化是什么？ LVM条块化是LVM功能之一，该技术会跨多个磁盘写入数据，而不是对单一物理卷持续写入。  使用条块化I/O管理LVM磁盘 条块化特性  它会改善磁盘性能。 避免对单一磁盘的不断的大量写入。 使用对多个磁盘的条块化写入，可以减少磁盘填满的几率。  在逻辑卷管理中，如果我们需要创建一个逻辑卷，扩展的卷会完全映射到卷组和物理卷。在此种情形中，如果其中一个PV（物理卷）被填满
LVM
124.126.152.57
@我的印象笔记
微博评论
2014-12-15T17:03:03.000
222.131.232.106
作为多硬盘用户，码。
微博评论
2014-12-15T20:03:02.000
在本文中，我们将了解逻辑卷是如何通过条块化I/O来写入数据到磁盘的。逻辑卷管理的酷炫特性之一，就是它能通过条块化I/O跨多个磁盘写入数据。  LVM条块化是什么？ LVM条块化是LVM功能之一，该技术会跨多个磁盘写入数据，而不是对单一物理卷持续写入。  使用条块化I/O管理LVM磁盘 条块化特性  它会改善磁盘性能。 避免对单一磁盘的不断的大量写入。 使用对多个磁盘的条块化写入，可以减少磁盘填满的几率。  在逻辑卷管理中，如果我们需要创建一个逻辑卷，扩展的卷会完全映射到卷组和物理卷。在此种情形中，如果其中一个PV（物理卷）被填满
在本文中，我们将了解逻辑卷是如何通过条块化I/O来写入数据到磁盘的。逻辑卷管理的酷炫特性之一，就是它能通过条块化I/O跨多个磁盘写入数据。


![](/data/attachment/album/201412/15/161740rxmkog9vxthmfpvp.jpg)


### LVM条块化是什么？


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


![Manage LVM Disks Using Striping I/O](/data/attachment/album/201412/15/161745rnhcb8ye3c8wywxl.jpeg)


*使用条块化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](/data/attachment/album/201412/15/161746uqy6y6qqam6rlaen.png)


*列出硬盘驱动器*


现在，我们必须为这4个硬盘驱动器**sdb**，**sdc**，**sdd**和**sde**创建分区，我们将用‘**fdisk**’命令来完成该工作。要创建分区，请遵从本文**[第一部分](http://linux.cn/article-3965-1.html)**中**步骤#4**的说明，并在创建分区时确保你已将类型修改为**LVM（8e）**。



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

```

![Create Physical Volumes in LVM](/data/attachment/album/201412/15/161748wisvmzmspm2rvrii.png)


*在LVM中创建物理卷*


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



```
# pvs

```

![Verify Physical Volumes](/data/attachment/album/201412/15/161749j0npmjqzvn12vplw.png)


*验证物理卷*


现在，我们需要使用这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](/data/attachment/album/201412/15/161750f8ov2s4i52bb5vsz.png)


*验证卷组*


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



```
# vgdisplay vg_strip -v

```

![Volume Group Information](/data/attachment/album/201412/15/161752pp5b62gfvb6z6p85.png)


*卷组信息*


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


这里，我创建了一个名为**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](/data/attachment/album/201412/15/161754brn6irraqhqpijrr.png)


*创建逻辑卷*


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



```
# lvdisplay vg_strip/lv_tecmint_strp1

```

![Confirm Logical Volumes](/data/attachment/album/201412/15/161755kfrnxczcql66ncrn.png)


*确认逻辑卷*


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



```
# lvdisplay vg_strip/lv_tecmint_strp1 -m

```

![Check Logical Volumes](/data/attachment/album/201412/15/161758pziip7i5ixxz5day.png)


*检查逻辑卷*


要创建自定义的条块尺寸，我们需要用我们自定义的条块大小**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](/data/attachment/album/201412/15/161800hmkwk9850ym0v9vy.png)


*定义条块大小*


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



```
# lvdisplay vg_strip/lv_tecmint_strp2 -m

```

![Check Stripe Size](/data/attachment/album/201412/15/161802yfebdtyfqeqfoiaj.png)


*检查条块大小*


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



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

```

![Device Mapper](/data/attachment/album/201412/15/161803anbdt5n5qnltdlcc.png)


*设备映射*


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


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


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




---


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


作者：[Babin Lonston](http://www.tecmint.com/author/babinlonston/) 译者：[GOLinux](https://github.com/GOLinux) 校对：[wxy](https://github.com/wxy)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译，[Linux中国](http://linux.cn/) 荣誉推出

