以前写过一篇云服务器磁盘扩容的文章。那次的方案使用动态扩容。

动态扩容虽好,不过对系统内核版本有要求。经测试,需要3.10以上。即CentOS7以上。

如果是CentOS6,一般内核版本是2.6.这个版本是不支持动态扩容的。

如果还想磁盘扩容,有两种思路。思路1:升级内核,以前写过 一篇关于CentOS6升级内核的文章,可以升级到4.1,有兴趣可以看看;思路2:在合适的目录下挂在一块硬盘。

下面说说按思路2来执行的一些问题。

以我实际遇到的情况,磁盘通常是某几个目录文件存储较多,占用空间大。因此,可以将新磁盘用于这几个目录。

实现这个目的,首先想到的是直接将新磁盘mount到这几个目录上。这个方法最直接,不过也有些问题。

每个目录都需要挂载新硬盘。看上去简单,但是实际操作有问题。一个是可能磁盘过多,管理不便。另一个问题,是对磁盘空间需求的判断,如果判断过低,可能短时间又需要扩容,过高则会浪费空间。扩展性不好。

如果这些目录的上层目录,或者该磁盘的根目录使用了nfs共享服务。那么问题更严重。这些挂载了新磁盘的目录在其他服务器访问nfs时,无法看到新挂载的磁盘空间。

考虑到上面描述的问题,换一种思路来实现。在系统根目录下创建一个新目录,然后将新磁盘挂载到这个目录下。

将原磁盘部分目录(预定扩容目标)移动到新磁盘,并在原磁盘创建软连接,指向新磁盘。如果不需要nfs服务,这样就可以了。当新磁盘空间再次不足,再买一块新磁盘,如法炮制,将部分目录转移到新磁盘,同时修改软连接指向即可。

如果需要nfs服务,那么不要创建软连接,在nfs配置中,添加新磁盘共享权限。创建同名的空目录在原磁盘位置。在需要访问nfs的服务器上,先保证访问原先磁盘的nfs目录已经成功。此时你看到的是空目录。再将新磁盘通过nfs方式挂载到这个空目录上即可。

按照这个思路,第二次nfs挂载不一定是同一个服务器,不过我没有尝试过,理论上可以。