Unix系统中LVM硬盘管理的好帮手
平时在部署Unix操作系统规划分区的时候,最让我们头疼的问题是什么呢?恐怕就是硬盘空间大小的分配了。如刚开始可能只有少数几个同事需要用到这台unix电脑,为此只给home目录规划不多的空间。可是随着用户的增加,home目录的空间就逐渐被消耗光了。此时该如何处理呢?如果没有采用LVM机制来管理硬盘空间的话,则即使硬盘中还有剩余的空间,系统工程师也无法马上把剩余的空间跟当前采用的home目录合并。而是需要先把Home目录中的当前数据复制到其他空间中,然后把当前的目录与硬盘的剩余空间进行合并,并格式化成可用的文件系统。最后再把数据复制到新的Home目录中。可见类似的操作很麻烦,而且很容易导致原有数据的破坏。
如果需要增加swap分区的容量,那么还简单一点。可以把现有硬盘中的可用空间格式化成Swap文件系统并挂载到现有的swap空间即可。但是,这个后来挂载的swap空间虽然不需要格式化原有的swap 空间,可是这个后来增加的swap空间的执行效率并没有原始的swap分区那么好。为此采用挂栽的方式来增加Swap空间也是不得已而为之的事情。
那么在Unix操作系统中有否其他的解决方式呢?为了让Unix操作系统能够更加灵活的管理硬盘空间,专家们提出了LVM(逻辑卷管理器)的解决方案。通过这个解决措施,系统工程师可以在不格式化原有分区的情况下,便利的扩展原有的分区大小。如可以缩小某个分区的大小,把节省下来的空间给其他需要的分区等等。如下图所示,LVM可以帮助系统管理员解决如下问题:
一、任意调整Unix目录大小。
如在使用过程中,由于用户数量的增多,/home目录空间不能够满足当前的需求。为此系统工程师需要把硬盘中没有的空间划给/home 目录使用。此时如果采用了逻辑卷管理的话,则在不格式化原有/home目录分区的情况下,即可以扩大原有的/home目录大小。假设我们现在硬盘1中还有20个G的剩余空间。现在系统工程师需要把其中的10个G的容量给/home目录。在不需要重新格式化原有/home目录分区的情况下,只需要采用两个简单的命令即可以完成这个功能。
第一个命令:lvextend。
这个命令主要用来扩展逻辑卷的大小。如上图所示,如果采用LVM管理机制的话,可以把一个或者多个硬盘创建为逻辑卷组。然后Unix系统下的各个分区就是这个逻辑卷组下面的扩展逻辑卷。现在系统工程师想要扩展/home目录的空间,就只需要增加home目录所在分区的扩展逻辑卷大小即可。为了实现这个目的,就只需要使用lvextend命令即可。如lvextend –L +10240 /home即可。在使用这个命令的时候,需要注意一个问题,即其采取的单位都是以M为单位,而不是以G为单位。所以如果需要增加10个G的空间的话,就需要使用10240。这主要是因为传统的分区命令都是以M为单位的。为此在设计这个解决方案的时候,仍然沿用了M为单位。这或多或少给系统工程师维护硬盘带来了一定的麻烦。在利用这个命令的时候,需要注意这个细节问题。
第二个命令:resize_reiserfs
此时系统工程师可以利用lvdisplay命令来查看home目录所在的扩展逻辑卷组的大小,发现其容量确实增加了。但是如果使用df命令来查看home分区大小的话,会发现其仍然是原先的空间,还没有改变。这主要是因位新创建的空间并不能够直接拿来使用。这主要是因为新创建的空间文件系统跟Home目录原有的格式不兼容。为了使用这个新增加的空间,系统工程师还需要使用resize_reiserfs命令来格式化新增加的空间,让home目录可以使用这个新增加的空间。
注意,通过以上两个命令就可以扩展Home目录分区的大小。而在这整个过程中,笔者并没有备份原有home目录中的文件,也没有重新格式化Home目录所在的分区。也就是说,把HOME目录分区当作扩展逻辑卷来管理,其空间可以实现动态的调整。即在不格式化原有分区的情况下,可以实现动态的调整。不过为了系统文件的安全,如果系统工程师第一次使用这个管理方法的话,则最好还是先对原有的文件进行备份。以免因为误操作而导致文件被意外损坏。
二、LVM使用的限制。
虽然LVM提供了硬盘管理的一个捷径。但是在使用过程中,仍然有一些使用方面的限制。如在Unix操作系统下部署LVM解决机制的时候,需要注意/boot分区的部署。如果把/boot分区部署在逻辑卷管理器上面的话,将导致Unix操作系统无法正常启动。这主要是因为在操作系统启动的时候,开机管理程序需要读取一些文件。而因为现在Unix操作系统采用的任何一款开机管理程序都无法读取逻辑卷中的文件系统。所以如果把存放操作系统启动信息的/boot目录部署在逻辑卷中的话,将导致Unix操作系统无法正常启动。如上图所示,笔者在部署硬盘分区的时候,就没有把/boot分区部署在逻辑卷中。而是在硬盘中独立划分了一块区域,用来做/boot分区。还好这个分区往往是用来存放一些系统启动时的必要信息,为此其所需要的空间都是比较少的。为此在采用LVM解决方案时,系统工程师切记要把/boot分区部署在独立的分区中。即在硬盘上划分一个独立的分区给/boot用。
第一步:自定义硬盘分区。
如果要采用LVM并把/boot部署在一个独立的分区中(不采用逻辑卷中),那么在对硬盘进行分区的时候,就不能够选择默认配置。而需要进行自定义配置。在Unix系统的安装设置界面中,单击“正在分区、“建立自定义分区设置、“自定义磁盘分区-专家使用,然后根据向导来进行自定义硬盘分区。注意,不同的Unix操作系统版本,这个界面可能有所不同。不过这些选项都是类似的。凭着Unix系统工程师的专业知识,到这一步为止应该不会有多大的问题。重要的是注意下面第二步的配置。
第二步:建立Boot分区。
上面笔者多次强调,在部署LVM的过程中,需要把/boot分区部署在独立的硬盘分区中,否则的话会因为启动管理程序无法读取LVM卷中的数据而导致启动失败。所以在进入专家分区工具之后,系统工程师第一件要做的事情就是为/boot建立一个独立的分区。注意在建立这个分区的时候,文件系统的格式要选择为reiserfs文件系统格式。这一步不少系统工程师在部署的时候容易犯错误,希望大家注意。
三、与Windows操作系统动态磁盘的区别。
在微软操作系统中,也有类似的解决方案,叫做动态磁盘。动态磁盘也可以根据用户的需要,进行动态的分区调整。不过在具体实现上,两者还有很大的区别。如根据笔者的了解,好像在Windows操作系统中,无法对操作系统所在的分区进行调整。而在Unix操作系统中则没有这方面的限制。另外,在Windows操作系统的动态磁盘中,有一个比较较好的技术,就是即使刚开始没有采用动态磁盘,在以后需要的时候还可以进行调整。最关键的是,其后续进行调整的时候,不用对原有的硬盘进行重新格式化。为此也就可以避免数据的丢失。不过如果转换为动态磁盘后,就不能够再转回来。如果要转回来的话,就需要重新格式化硬盘了。而在Unix操作系统中,必须在刚开始格式化硬盘的时候,就选择采用LVM逻辑卷。而不能够再部署好操作系统后再进行调整。为此,如果系统工程师以前部署过动态磁盘的话,这次在部署Unix操作系统下的逻辑卷管理器时,就需要特别注意这两种技术在实现细节上的差异。
另外需要再提醒的一点就是,系统工程师在刚接触逻辑卷管理器的时候,为了操作系统中资料的安全,最好在调整分区之前把资料进行备份。等到熟悉了这门技术之后,就可以不这么麻烦了。毕竟在操作系统维护中,系统资料的安全性必须百分之百的保证。而刚开始接触这门技术的工程师,很容易会由于操作失误而导致系统分区调整失败。严重的话还会导致原有分区损坏而使得数据丢失。为此在第一次操作的时候,笔者认为对数据进行必要的备份是必须的。虽然这可能会耽误一点时间,但是这与数据的安全性相比则是值得的。