为Linux操作系统所在的logical volumn扩容
感谢Lieven和Tom的协助,这个问题才得以解决。我在这里把解决问题的步骤总结一下,帮助自己学习。
问题描述
===========
笔者有一台linux的物理机,其上名为centos-root的logical volume没有空间了,
可以看到centos-root是mount在Linux系统的根目录的。也就是说,我的linux操作系统没空间了。
问题解决后的效果
============
达到这个结果可不容易呢。
第一次尝试-失败
============
由于logical volume,volume group, 和physical volume之间的关系如下:
所以,我们先想到的是直接修改当前centos-root这个lv的大小。
我的环境里,只有一个volume group,名叫centos。而这个vg也只包含一个physical volume,名为/dev/sda3. 大概长这个样子。
具体如下:
于是就想,如果直接增大/dev/sda3这个physical volume,那么centos这个volume group就自动扩大了,之后再扩大/dev/centos/root这个logical volume,那么我们的操作系统不就有空间了吗。
我们直接通过命令pvresize,扩大了/dev/sda3这个physical volume的大小. 之后运行了lvresize, 扩大了/dev/centos/root这个logical volume,之后就收到提示:logical volume is suspended。操作系统直接宕机了。
后来分析,发生这个问题的原因是,虽然pv和lv的大小都变大了,但是操作系统所在分区的分区大小并没有变大。相当于装东西的篮子没变大,东西却变大了,自然就装不下了。
通过插入Linux的启动盘,进入rescue mode,把lv的大小恢复回去,pv的大小恢复回去,系统才被救回来。
这里还涉及到一个紧张有趣的计算。我们往回改lv的时候,怕制定的大小过小了从而截断了原本的数据卷,所以制定的lv偏大了一些,系统提示了原来的lv的sector的数量,还有现在的sector的数量。通过这个提示,我们才精确的还原了LV和PV。
第二次尝试
============
这次换了方法,决定原来的pv不去动它,再加一个新的pv,然后把新建的pv加入vg里,之后再把lv扩容,一样可以解决问题。
开门就碰壁,fdisk居然无法创建新的分区,报错如下:
使用parted这个分区工具就可以了。网上讨论fdisk和parted哪个好,额,我这里投parted一票。
1. 使用parted工具创建分区的过程如下。注意这里为了追求保险,从17G处开始新分区。
2. 运行一下partprobe,让操作系统重新读取分区表,让新分区生效,避免重启。网上的文章解释如下:
If you are using hot swappable hard disk and created a new partition using the fdisk, then you need to reboot Linux based system to get partition recognized. Without reboot, you will NOT be able to create a filesystem on your newly created or modified partitions with the mke2fs command. |
3. 之后再进入fdisk把分区的类型修改为Linux LVM。
修改好了,检查一下。
4. 创建pv:/dev/sda4.
5. 扩展vg。
6. 使用lvresize命令扩展lv。
7. 尝试用resize2fs命令来扩展文件系统的大小,失败。报错:Bad magic number in super-block while trying to open /dev/centos/root. Couldn’t find valid filesytem superblock.
8. LV已经扩大了,只剩下最后一步,扩大其上的文件系统了。改用xfs_growfs /dev/centos/root来扩展文件系统的大小,因为我们的文件系统在第1步的时候,配了文件系统为xfs,所以要用这个工具才可以修改。
9.大功告成。
总结:为了解决这个问题,一下子pv,vg,lv,partition,file system这些概念以及他们之间的关系都差不多搞清楚了。花了这么多时间整理这个问题,感觉还是值得的。
最新文章
- 新建 ASP.NET Core Web API 项目 -- RESTFul 风格 Hello World!
- ubuntu14.0.4.3 devstack 安装openstack
- (转)java中的进程与线程
- Shell配置_配置IP
- A Horrible Poem(bzoj 2795)
- API 进程、线程函数
- wxWidgets简单的多线程
- Java---练习:文件切割与合并(1)
- Struts ActionForm简单理解
- 伤不起的戴尔台式机XPS8700脆弱的蓝牙
- redis 3.2 报错 Redis protected-mode 配置文件没有真正启动
- JavaScript引用类型-Object类型
- CentOS 6 update curl
- BP神经网络 详解模板
- BZOJ1823[JSOI2010]满汉全席——2-SAT+tarjan缩点
- three.js 一幅图片多个精灵
- iOS实时查看App运行日志
- C语言中的补码与反码(-1的十六进制ffffffff)
- PHP反射获取当前函数的内容
- coinmarketcap.com爬虫