感谢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.
The kernel still uses the old table. The new table will be utilized at the next reboot or after you run partprobe or kpartx command. Both of these programs informs the operating system kernel of partition table changes, by requesting that the operating system re-read the partition table.

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这些概念以及他们之间的关系都差不多搞清楚了。花了这么多时间整理这个问题,感觉还是值得的。

为Linux操作系统所在的logical volumn扩容的更多相关文章

  1. Linux操作系统相关资料

    玩转Linux操作系统 操作系统发展史 只有硬件没有软件的计算机系统被称之为"裸机",我们很难用"裸机"来完成计算机日常的工作(如存储和运算),所以必须用特定的 ...

  2. linux操作系统故障处理-ext4文件系统超级块损坏修复

    linux操作系统故障处理-ext4文件系统超级块损坏修复   背景 前天外面出差大数据测试环境平台有7台服务器挂了,同事重启好了五台服务器,但是还有两台服务器启动不起来,第二天回来后我和同事再次去机 ...

  3. 解决方案-问题001:物理机、虚机等等Linux操作系统/usr/bin目录权限误操作,导致无法切换root

    导语:平常运维人员会误操作一些目录权限,导致一些问题,那么如何恢复呢? 问题:物理机.虚机等等Linux操作系统/usr/bin目录权限误操作,导致无法切换root? 实验环境: ip地址 是否目录正 ...

  4. Linux操作系统与项目部署

    Linux操作系统与项目部署 注意:本版块会涉及到操作系统相关知识. 现在,几乎所有智能设备都有一个自己的操作系统,比如我们的家用个人电脑,基本都是预装Windows操作系统,我们的手机也有Andro ...

  5. 安装linux操作系统

    安装双操作系统; 1 0. 介绍: 1 1 实验环境: 2 2. 实验准备: 2 3.开始安装: 2 1 制作U盘启动工具: 2 2.安装LinuxOS. 3 2.1在windowOS中划分60G空间 ...

  6. Linux操作系统备份之一:使用LVM快照实现Linux操作系统数据的在线备份

    这里我们讨论Linux操作系统的备份. 在生产环境,客户都会要求做全系统的数据备份,用于系统崩溃后的一种恢复手段.这其中就包含操作系统数据的备份恢复. 由于是生产环境,客户都会要求备份不中断业务,也就 ...

  7. 使用 /proc 文件系统来访问 linux操作系统 内核的内容 && 虚拟文件系统vfs及proc详解

    http://blog.163.com/he_junwei/blog/static/19793764620152743325659/ http://www.01yun.com/other/201304 ...

  8. linux 操作系统下c语言编程入门

    2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理  ...

  9. [转载]Linux LVM硬盘管理及LVM扩容

    最近项目中一直在用Linux,其中涉及到了Linux的LVM,本来想自己写一篇关于LVM的文章,搜了一下,发现了一篇更好的,转载过来,也感谢作者gaojun 原文Linux LVM硬盘管理及LVM扩容 ...

随机推荐

  1. 将NX模型导入Process Designer的方法

    如何把一个有焊点的零件从nx中输入到process designer 中?   用户在NX中做了一个prt文件, 想把它输入到process designer中, 并且包括焊点信息, 该如何做? 解决 ...

  2. 【bfs】BZOJ1102- [POI2007]山峰和山谷Grz

    最后刷个水,睡觉去.Bless All! [题目大意] 给定一个地图,为FGD想要旅行的区域,地图被分为n*n的网格,每个格子(i,j) 的高度w(i,j)是给定的.若两个格子有公共顶点,那么他们就是 ...

  3. hdu 3853 概率dp

    题意:在一个R*C的迷宫里,一个人在最左上角,出口在右下角,在每个格子上,该人有几率向下,向右或者不动,求到出口的期望 现在对概率dp有了更清楚的认识了 设dp[i][j]表示(i,j)到(R,C)需 ...

  4. MySQL分析数据运行状态【SHOW PROCESSLIST】

    这个博文,将只是简单的记录一下,我们的数据库操作和使用中,加索引加不上去,分析的过程,其实比较简单,就是看有没有连接进程还在操作表.有的话,将其停掉(不影响业务的场景下). 今天的主角是: SHOW ...

  5. deeplearningbook-chinese

    https://exacity.github.io/deeplearningbook-chinese/

  6. AngularJS中实现显示或隐藏动画效果的3种方式

    本篇体验在AngularJS中实现在"显示/隐藏"这2种状态切换间添加动画效果. 通过CSS方式实现显示/隐藏动画效果 思路: →npm install angular-anima ...

  7. IEnumerable是集合,IEnumerator是集合的迭代器

    我们常用IEnumerable,却忽视IEnumerator.简单来说,IEnumerable是可以被循环遍历的集合,IEnumerator实施循环遍历. 接口分别是: public interfac ...

  8. Android按返回键退出程序但不销毁,程序后台运行,同QQ退出处理方式

    @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BA ...

  9. fastjson的日期格式化

    //SerializerFeature.WriteDateUseDateFormat 使用日期字段格式序列化(2017-01-01),而不是用时间戳表示日期 JSON.toJSONString(dat ...

  10. 基于jQuery的判断iPad、iPhone、Android是横屏还是竖屏的代码

    在ipad.iphone网页开发中,我们很可能需要判断是横屏或者竖屏.下面就来介绍如何用 jQuery 判断iPad.iPhone.Android是横屏还是竖屏的方法 其实主要是通过window.or ...