Chinaunix首页 | 论坛 | 博客
  • 博客访问: 44799
  • 博文数量: 28
  • 博客积分: 1080
  • 博客等级: 少尉
  • 技术积分: 265
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-12 10:38
文章分类

全部博文(28)

文章存档

2011年(1)

2009年(27)

我的朋友

分类: LINUX

2009-06-24 11:09:38

 # rm /mnt/a.test.file
    # ls /snap
    total 13
    -rw-r--r-- 1 root root 1 Apr 2 00:28 a.test.file
    drwxr-xr-x 2 root root 12288 Apr 2 00:28 lost+found
    太令人惊讶了!
    7.1 它是如何工作的?
    记得我们不得不设置“--size”参数吗?真正发生的事情是,“snap”卷需要有那些当LVM调用时,在原处要被改变的所有块的一个拷贝。
    当我们删除a.test.file时,它的i节点被删除。这引起64KB要被标注成“脏的”--同时原始数据的一个拷贝被写到“snap”卷。这个例子中,我们分配了16MB给快照,因此如果多于16MB的块要被修改,快照就会无效了。
    要决定一个快照分区的正确大小,你将不得不推测基于主LV的使用模式、快照要激活的总时间。例如,在午夜,当无人使用系统的情况下,一个几小时的备份可能要求很小的空间。
    请注意,快照不是永久的。如果你卸下LVM或重启,它们就丢失了,需要重新创建。

    --------------------------------------------------------------------------------
    8. 冗余 & 性能
    为了性能的考虑,可以将数据分散在几个条块化的磁盘上。这意味着块1在PV A上,块2在PV B上,块3又在PV A上。你也可以条块化跨多余2块磁盘。
    这样的安排意味着你有更多有效的磁盘带宽。也就是说包含了更多的“轴”。以后会详述。
    除此之外,为了提高性能,也可以将你的数据在多个磁盘上有多份拷贝。这叫做镜像。目前,LVM本身还不支持它,但是有多种方法能实现镜像。
    8.1 为何要条块化?
    磁盘的性能至少受三种因素的影响。最明显的是一块磁盘上的数据能连续被读或写的速度。这是当读或写仅连接了一个单一的磁盘的SCSI/IDE总线上的一个大文件时的限制因素。
    接着是到磁盘的有效带宽。如果你在一个SCSI总线上有7块盘,这也许会小于你的磁盘本身写的速度。如果你愿意花足够的钱,你可以避免这个瓶颈成为一个问题。
    然后是响应时间。当成谚语说,响应时间总是坏消息。甚至更坏的是,你不可能通过花更多的钱来降低响应时间!现在出产的大多数磁盘有一个大约7ms的响应时间。还有SCSI响应时间,通常是大约25ms。
    FIXME: need recent numbers!
    这意味着什么?在一个典型情形,总的响应时间大约是30ms。因此你每秒钟只能执行大约33个磁盘操作。如果你想每秒钟能做数千个查询,并且你没有大量的缓存,那么你就非常不走运了。
    如果你有多个磁盘,或者“轴”,在并行工作,那么你可以有多个命令很好地围绕你的响应问题同时执行。有些应用程序,比如一个大的新闻服务器,如果没有条块化或其它I/O敏捷性它甚至不再工作。
    这就是条块化做的事。如果你的总线能胜任,甚至连续的读和写可能会更快。
    8.2 为何不条块化
    条块化没有进一步的措施来解除你的错误机会,按一个“每次一比特”的基本原则。如果你的磁盘任一块死了,你全部的逻辑卷都会丢失。如果你正好连接数据,仅仅文件系统部分丢失。
    最终的选项是镜像的条块化。
    FIXME: make a mirrored stripe with LVM and md
    8.3 LVM本身的条块化
    当用lvcreate创建LV时,指定条块化配置项。有两个相关参数。-i参数告诉LVM应该在多少个PV上分散数据。条块化不是真的按一次一比特的基础来做的,而是按块。-I参数指定单位为KB的块大小。注意它必须是2的一个幂,而且最大的块大小为128KB。
    例如:

    # lvcreate -n stripedlv -i 2 -I 64 mygroup -L 20M
    lvcreate -- rounding 20480 KB to stripe boundary size 24576 KB / 6 PE
    lvcreate -- doing automatic backup of "mygroup"
    lvcreate -- logical volume "/dev/mygroup/stripedlv" successfully created
    性能注意事项
    如果跨同一块磁盘的两个分区来条块化,性能的“增加”可能会是非常消极的--注意避免这样。跨单一的IDE总线上的两个磁盘来条块化也是没用的--除非IDE已经改进了我所记忆的。
    FIXME: is this still true?
    很老的主板可能有两个IDE总线,但是第二个通常是用于一个相对慢的cdrom驱动器。你可以用几个工具来执行基准,最令人注目的是“Bonnie”。ReiserFS人们已经发布了Bonnie++,它可以用来测试性能数据。
    8.4 硬件RAID
    多数高速的Inter x86服务器有硬件RAID控制器。它们中大部分至少有2个独立的SCSI通道。幸运的是,这些在LVM上很少有关系。在Linux能看到如此一个控制器上的任何东西之前,管理员必须在RAID控制器自身里定义一个逻辑驱动器。举一个例子,他(她)可能选择条块化在SCSI通道A上的两个磁盘,然后镜像它们到通道B上的两块磁盘上。这是一个典型的RAID 0/1配置,最佳化性能和数据安全。当Linux在一台采用这种配置的机器上启动时,它只能“看”到在RAID控制器上的一块磁盘,那就是包含了RAID 0/1条块组上四块磁盘的逻辑驱动器。这就是说,至于LVM关心的,仅仅是在这台机器上的一块磁盘,它将被同样地使用。如果这些磁盘中的一个失败了,LVM甚至不知道。当管理员替换了磁盘(甚至很快的用热备硬件),LVM也不知道任一种情况发生了。控制器会重新同步镜像的数据,一切都良好。这里多数人会退一步来询问“那么使用这个RAID控制器,LVM为我带来什么好处呢?”最容易的回答是,多数情况下,你在RAID控制器里定义了一个逻辑驱动器后,你不可能在以后添加更多的磁盘到那个驱动器了。因此,如果你误算了所要求的空间,或者你只是需要更多的空间,你都不可能添加一个新的磁盘或一组磁盘到原来的条块组里。这意味着你必须在这个控制器里创建一个新的RAID条块组,然后用LVM你可以简单的扩展LVM的LV,以致它无缝的跨越RAID控制器里的两个条块组。
    FIXME: Is there more needed on this subject ?
    8.5 Linux软件RAID
    Linux 2.4带着一个非常好的RAID代替出现了。Linux 2.2缺省的,当被Alan Cox发布时,是一个初期的RAID版本的特写,它没有被很好的重视。2.2仍然是早期版本特色的原因是写内核的人们不想在一个稳定的版本里做改动,那样会要求使用者更新。
    更多的人们,包括Red Hat,Mandrake和SuSE,选择用表现得很完美的0.90版本来替换它。
    这里我们只论述0.90版本。
    FIXME: write more of this

    --------------------------------------------------------------------------------
    9. Cookbook
    9.1 在计算机之间移动LVM磁盘
    使用这些新技术,简单的任务象从一台计算机移动磁盘到另一台计算机就变得有些机警了。在用LVM之前,用户只需要把这块盘放到新的机器上并且mount这些文件系统。使用LVM,就多一点事情要做。LVM结构既保存在磁盘上也保存在/etc/lvmconf目录里,因此,移动一个或一组包含了一个VG的磁盘所要做的唯一的事情是确保这个VG属于的机器不会破坏它的数据。这是通过vgexport命令来实现的。vgexport仅仅从/etc/lvmconf删除关于这个VG的结构,而不会更改磁盘上的任何内容。一旦磁盘放到新的机器上(他们没必要有相同的ID),唯一要做的事情就是修改/etc/lvmconf。这是通过vgimport来做的。
    例如:
    在机器#1:

    vgchange -a n vg01
    vgexport vg01
    在机器#2:

    vgimport vg01 /dev/sda1 /dev/sdb1
    vgchange -a y vg01
    注意你没必要为这个VG使用相同的名字。如果vgimport命令没有保存配置的备份,那就用vgcfgbackup来做。
    9.2 重建/etc/lvmtab 和/etc/lvmtab.d
    FIXME: write about more neat stuff

    --------------------------------------------------------------------------------
    10. 进一步阅读
    LVM站点
    主要的有效LVM资源
    德文LVM HOWTO
    如果你能读懂德文,它就已经包含了许多信息
    德文HOWTO的翻译
    正在将德文HOWTO翻译成英语。看来他们会花许多时间在上面。如果你怀疑我们的HOWTO,或者想知道些什么,请试试他们的努力。
    HP/UX管理磁盘向导
    因为Linux LVM几乎就是HP/UX执行的一个原样,他们的文档对我们也是非常有用的。是一个很好的资料。
    11. 致谢
    我们尝试在这里列出所有帮助我们写这篇HOWTO的人。包括呈报更新、修复或投稿的人,还有帮助我们理解这个主题的人。
 
阅读(337) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~