锁定老帖子 主题:LVM - 很好很强大
该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-11-29
最后修改:2008-11-30
还是拿JavaEye的网站服务器随便举个小例子吧。话说今天晚上我登录JavaEye网站服务器随便这么一查看磁盘使用状况: df -h 竟然发现/home分区的磁盘消耗的很快 Filesystem Size Used Avail Use% Mounted on /dev/mapper/system-home 40G 32G 8G 80% /home 有点出乎意料,已经使用了80%,如果用光了,可就有点麻烦了,所以为了安全,把/home分区扩大5GB,多给它点硬盘空间,敲入两条shell命令 lvextend -L +5G /dev/system/home resize_reiserfs -s +5G /dev/system/home 先把逻辑卷扩大5GB,再把上面的reiserfs文件系统扩大5GB,前后耗时不超过3秒钟。再df -h查看一下: Filesystem Size Used Avail Use% Mounted on /dev/mapper/system-home 45G 32G 13G 71% /home 哈哈,/home立刻多了5GB,搞定收工,这是不是很像变戏法,我没停任何服务,没重起服务器,大家没有任何感觉,就一切搞定,说实话我也一直觉得LVM很cool,所以我一直是LVM+Reiserfs的忠实拥趸。有兴趣学习LVM的同学可以下载后面的附件,这可是我珍藏多年的LVM秘籍! 另外强烈推荐Daniel Robbins在IBM DW网站上面关于LVM的系列文章: 通用线程: 学习 Linux LVM,第 1 部分 通用线程:学习 Linux LVM,第 2部分 另外,在大规模的生产系统上面,文件系统的管理是一个错综复杂的工作,如果你对这个方面的知识很感兴趣,你可以继续了解一下EVMS(Enterprise Volume Management System,企业级文件卷管理系统)。EVMS 为 Linux 下的所有存储技术提供了统一的、可扩展的、基于插件的 API。这意味着什么?它意味着由于 EVMS,您可以使用单个工具来对磁盘分区、创建 LVM 对象以及甚至创建 Linux 软件 RAID 卷。并且可以使用这一工具以强有力的方式合并这些技术。还是推荐看Daniel Robbins的文章: 通用线程: 高级文件系统实现者指南,第 12 部分 EVMS 简介 通用线程: 高级文件系统实现者指南,第 13 部分EVMS 详情 BTW:Daniel Robbins在IBM DW所有的文章都值得一读,特别是《通用线程: 高级文件系统实现者指南》这个系列。 介绍点背景知识:Daniel Robbins是Gentoo Linux的创始人,Linux社区赫赫有名的牛人。早几年微软公司成立了一个开源实验室,把Daniel Robbins给忽悠过去了,此事曾经在Linux社区闹的沸沸扬扬。Daniel Robbins当时是报着推动微软公司开源,并且促进微软和开源社区之间交流的目的而去的,但是Daniel Robbins在微软公司不到一年就辞职离开了,原因是发现被微软忽悠了,微软根本没有足够开源的诚意,他在微软也就是一个闲职。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-11-29
最后修改:2008-11-29
有时间改改自己的不太合理硬盘分区
引用 3.9 扩展LV 为逻辑卷增加容量可用使用lvextend,即可以指定要增加的尺寸也可以指定扩容后的尺寸,如 # lvextend -L12G /dev/testvg/testlv lvextend -- extending logical volume "/dev/testvg/testlv" to 12 GB lvextend -- doing automatic backup of volume group "testvg" lvextend -- logical volume "/dev/testvg/testlv" successfully extended 将扩大逻辑卷testlv的容量为12GB。 # lvextend -L+1G /dev/testvg/testlv lvextend -- extending logical volume "/dev/testvg/testlv" to 13 GB lvextend -- doing automatic backup of volume group "testvg" lvextend -- logical volume "/dev/testvg/testlv" successfully extended 将为LV testlv再增大容量1GB至13GB。 为LV扩容的一个前提是:LV所在的VG有足够的空闲存储空间可用。 在为LV扩容之后,应同时为LV之上的文件系统扩容,使二者相匹配。对不同的文件系统有相对应的扩容方法。 3.9.1 ext2/ext3 除非内核已有ext2online 补丁,否则在改变ext2/ext3文件系统的大小时应卸载它: # umount /dev/testvg/testlv # resize2fs /dev/testvg/testlv # mount /dev/testvg/testlv /home 这里假设testlv安装点为/home。在es2fsprogs-1.19或以上版本中包含resize2fs命令。 在LVM发行包中有一个称为e2fsadm的工具,它同时包含了lvextend与resize2fs的功能,如: # e2fsadm -L+1G /dev/testvg/testlv 等价于下面两条命令: # lvextend -L+1G /dev/testvg/testlv # resize2fs /dev/testvg/testlv 但用户仍需首先卸载文件系统。 3.9.2 reiserfs 与ext2不同,Reiserfs不必卸载文件系统,如: # resize_reiserfs -f /dev/testvg/testvl 3.9.3 xfs SGI XFS文件系统必须在安装的情况下才可改变大小,并且要使用安装点而不是块设备,如: # xfs_growfs /home 3.10 缩小LV 逻辑卷可扩展同样也可缩小,但应在缩小LV之前首先减小文件系统,否则将可能导致数据丢失。 3.10.1 ext2/ext3 可以使用LVM的工具e2fsadm操作,如: # umount /home # e2fsadm -L-1G /dev/testvg/testvl # mount /home 如果采用resize2fs,就必须知道缩少后卷的块数: # umount /home # resize2fs /dev/testvg/testvl 524288 # lvreduce -L-1G /dev/testvg/testvl # mount /home 3.10.2 reiserfs 在缩小reiserfs时,应首先卸载它,如: # umount /home # resize_reiserfs -s-1G /dev/testvg/testvl # lvreduce -L-1G /dev/testvg/testvl # mount -treiserfs /dev/testvg/testvl /home 3.10.3 xfs 无法实现。 |
|
返回顶楼 | |
发表时间:2008-11-30
哈哈,谢谢robbin的私人珍藏
|
|
返回顶楼 | |
发表时间:2008-11-30
对LVM不了解,一直感觉很神秘,不敢去深究。原来一直总以为LVM是一种虚拟的磁盘分区,看robbin的这篇文章,时候又是用来操作实际的磁盘分区的。
不知道自己的看法是否贻笑大方了。还真希望robbin能把LVM给稍微详细介绍一下,也好让我等不了解之人不会让人笑话了。 |
|
返回顶楼 | |
发表时间:2008-11-30
jsea 写道 对LVM不了解,一直感觉很神秘,不敢去深究。原来一直总以为LVM是一种虚拟的磁盘分区,看robbin的这篇文章,时候又是用来操作实际的磁盘分区的。 不知道自己的看法是否贻笑大方了。还真希望robbin能把LVM给稍微详细介绍一下,也好让我等不了解之人不会让人笑话了。 你想了解的这些内容,我提供的附件文档里面介绍的很详细了。 |
|
返回顶楼 | |
发表时间:2008-12-01
最后修改:2008-12-01
为什么/home自己分一个区呢?
一般我都是/boot分100M,再分点给swap,剩下的都给/就行了 如果是多块硬盘,直接做好Raid。 Robbin遇到的问题不是严重的场景,因为不是你的硬盘不够用,而是当初分区的时候没有设计这么长远而已。真正的大问题是所有硬盘都快用光了,需要新增硬盘,这就需要服务器的RAID卡支持在线扩容,在线扩容后会新增一个逻辑分区,这才是LVM大展身手的时候,直接把新扩充出来的逻辑分区补充给/就行了。从这一点上来说,品牌服务器确实比DIY的服务器考虑周全的多。 不过一开始就用LVM也有应用场景,那就是服务器是用做存储的,对磁盘容量有要求,已经意识到了将来某一天必然要对这个服务器动手术。否则用LVM就没有必要了,系统管理员的工作之一就是整理磁盘上的非重要数据,将磁盘使用量控制在一定范围内,而不能任由其无限制地增长 BTW: JavaEye在google中国的rank真高,这个帖子昨天发的今天已经上搜索“LVM”的首页了,厉害 |
|
返回顶楼 | |
发表时间:2008-12-01
hongliang 写道 为什么/home自己分一个区呢?
一般我都是/boot分100M,再分点给swap,剩下的都给/就行了 如果是多块硬盘,直接做好Raid。 Robbin遇到的问题不是严重的场景,因为不是你的硬盘不够用,而是当初分区的时候没有设计这么长远而已。真正的大问题是所有硬盘都快用光了,需要新增硬盘,这就需要服务器的RAID卡支持在线扩容,在线扩容后会新增一个逻辑分区,这才是LVM大展身手的时候,直接把新扩充出来的逻辑分区补充给/就行了。从这一点上来说,品牌服务器确实比DIY的服务器考虑周全的多。 不过一开始就用LVM也有应用场景,那就是服务器是用做存储的,对磁盘容量有要求,已经意识到了将来某一天必然要对这个服务器动手术。否则用LVM就没有必要了,系统管理员的工作之一就是整理磁盘上的非重要数据,将磁盘使用量控制在一定范围内,而不能任由其无限制地增长 BTW: JavaEye在google中国的rank真高,这个帖子昨天发的今天已经上搜索“LVM”的首页了,厉害 菜鸟了吧,还是科普一下: 1、如果你因为各种不可预知的原因,需要格式化重装操作系统的话,你可以选择不格式化/home,否则你就得干净彻底的来装了,这对于很多上面跑了n多系统的服务器来说,是一件很恐怖的事情。 2、服务器掉电重起,在个别情况下会导致文件系统破坏,你是想整个服务器挂掉,还是幸运的只挂掉某个分区? 3、在多块物理硬盘的服务器,逻辑分区可以分到不同的物理硬盘上 LVM在高端Unix上面有很多玩法,不过那些玩法都是要接专用存储设备的,这个咱也是外行,不多提了。 |
|
返回顶楼 | |
发表时间:2008-12-01
最后修改:2008-12-01
robbin 写道 菜鸟了吧,还是科普一下: 1、如果你因为各种不可预知的原因,需要格式化重装操作系统的话,你可以选择不格式化/home,否则你就得干净彻底的来装了,这对于很多上面跑了n多系统的服务器来说,是一件很恐怖的事情。 以前这种做法狠流行,后来狠少遇到这种情景了。服务器经常重装系统(比如一年一次以上),我觉得是狠恐怖的事情了。 好吧,现在我明白你为什么如此用心良苦,把/home单独列出来一个分区了。可是这跟LVM也没啥关系,当初你把/home分的再大一点不就行了,既然大部分有用的东西都在/home下,当初干嘛给系统分区留那么多空间呢 另外,我狠少遇到需要LVM上阵的情景,没有LVM的相关管理经验。我想问一下,你的/home是建立在lvm上的逻辑分区上的逻辑卷,如果你重装系统,格式化硬盘分区,可以选择单独格式化LVM卷(除了/home的/卷)并将系统安装上去?我不太懂这个,按照我的菜鸟理解,重装系统格式化的应该是硬盘分区(disk partition)而不是LVM逻辑卷(LVM logic volume)吧,这样一来,你的LVM逻辑分区上的数据还能保留? robbin 写道 2、服务器掉电重起,在个别情况下会导致文件系统破坏,你是想整个服务器挂掉,还是幸运的只挂掉某个分区? 这个侥幸心理不可取,多一个分区不等于机会就减小一些,因为无论你是哪个分区,最容易挂掉的总是数据最热的那个 解决这个问题只能靠服务器硬件级别来增加可靠性,软件上怎么努力都于事无补啊。 robbin 写道 3、在多块物理硬盘的服务器,逻辑分区可以分到不同的物理硬盘上 这其实应该是RAID干的事 robbin 写道 LVM在高端Unix上面有很多玩法,不过那些玩法都是要接专用存储设备的,这个咱也是外行,不多提了。 同意。其实这也正是LVM真正有价值的地方。 我只是想说LVM最大的用处是跟RAID结合,提供诸如硬件级别的在线扩容等高端应用。你这种情景搞来搞去还是自己机器上已经有的几块硬盘,最多就是弥补一下当初分区的欠妥之处,使得日后能够灵活应对而已。这不是LVM的本意。而且如果你不是使用3(逻辑分区分到不同的物理硬盘上,类似Stripe模式)的话,LVM会对性能造成一定影响,也带来了一些管理复杂度。而如果用Stripe,那也必然影响数据可靠性,系统维护的好,硬盘挂了的几率比格式化系统要高的多。当然无论是性能影响还是管理复杂度,这些问题都几乎可以忽略不计。我只是觉得有些不必要。 我写这么多就怕有些菜鸟听你这么一忽悠,就呼啦啦不管3721全跑去学LVM了,哈哈,你的影响力可不小哦 LVM这东西是用到才觉得好,只可用,不可特意去学。用不用LVM要看具体的生产环境,如果就那么几块硬盘几百G空间在那搞来搞去,用不用LVM还是需要仔细分析才能决定的,免得带来不必要的系统复杂。 |
|
返回顶楼 | |
发表时间:2008-12-02
同意楼上 技术这东西 用的时候现学就管用。 关键是价值
|
|
返回顶楼 | |
发表时间:2008-12-02
hongliang 写道 我只是想说LVM最大的用处是跟RAID结合,提供诸如硬件级别的在线扩容等高端应用 能否更详细些 ?
|
|
返回顶楼 | |