问题引出:

在测试过程中替换so文件,报磁盘空间不足的错误。

▲问题分析:

由于当时系统部署架构的考虑,把软件和数据库部署在了同一台机器上,并且给了30G的磁盘空间。系统上占用磁盘空间的有2部分,一是软件本身,二是安装的oracle数据库。使用du命令,查看了下所写磁盘大小,发现都是在长期操作中,由于写到后台数据库的数据越来越大,导致数据库的表空间越来越大,对应的物理文件就是datafile,占用了很大的表空间。

▲问题解决方法分析:

1、 系统不做改变,删除数据库的一些log、不用的数据

2、 注意到系统还有一块20G的空磁盘没有使用(/dev/sdb1),把数据库生成的数据迁移一部分到这块新的磁盘并指定新生成数据到这块磁盘上

3、 注意到系统的磁盘部署是使用LVM逻辑卷进行管理的,LVM的一个优点就是方便进行逻辑卷的动态增加,可以把/dev/sdb1这块物理磁盘加到根目录所在的卷组里面,然后对根目录所在的逻辑卷进行扩容

最后决定:方法1,2都是可行的,对自己的oracle稍有把握的人都可以实现。本人决定采用方法3,一是考虑系统本身会不断的产生日志等增加空间,这样整个磁盘都被系统所用,当然包括我们的软件和数据库;二是当时设计这个系统构架是采用LVM管理的,可能也想到了后面虽然业务的增加,磁盘空间将不够,将要进行动态扩容的情况。这种设计的理念的是OK的,但是这种设计也有很大的局限性,下面再进行分析。

▲LVM逻辑卷扩容的3种模式介绍

以下是本人对LVM逻辑卷进行扩容的实际应用中的3种模式的归纳和总结(个人观点)

1、 不涉及根目录的磁盘(自己用画图附件画的简易示意图)

如上图所示:sdb1只是普通的数据卷组的逻辑卷,没有被linux的根目录所用。此时,可以把第一块磁盘未使用的分区(sdb2)以及第二块磁盘sdc,第三块磁盘sdd等都可以通过LVM管理并加进逻辑卷组,然后对逻辑卷进行扩容。

2、 涉及根目录的磁盘1

如图所示:sdb1被根目录使用,组的逻辑卷,sdb2是平常所说的linux的swap分区,和根目录在同一个卷组下,只是属于不同的逻辑卷。此时,如果根目录磁盘空间不足,要对其进行扩容。如果这块sdb当时设计的时候还有很大一部分空余磁盘空间未用,那么很庆幸的告诉你,这样也是很容易把剩余的磁盘空间通过LVM加到逻辑卷组,然后对逻辑卷进行扩容的。

3、 涉及根目录的磁盘2

如图所示:sdb1被根目录使用,组了逻辑卷1,sdb2是swap分区,第一块磁盘sdb空间已经用完,必须通过新加的磁盘sdc,对根目录所在的逻辑卷1进行扩容。那么,恭喜你,中奖了,这是最麻烦的一种情况。要对逻辑卷进行动态调整,调整的时候要重新挂载文件系统。因此根目录的调整与其它lvm管理的文件系统的调整稍有不同,必须先进入rescue模式。如果没有linux系统相关经验,很可能就死在最后一步linux rescue上。

▲具体解决问题步骤

1、 对系统做快照

这是我们测试组的真实测试环境,以下所做的操作涉及到根目录逻辑卷的调整,万一把系统给弄挂了,那肯定是要挨批的。

事实上,本人在解决这个问题之前,也只是理论分析,认为和LVM逻辑卷扩容的3种模式介绍中的1,2方式一样容易解决,结果造成系统多次崩溃,幸亏做了虚拟机快照,才能保证万一解决不成功可以回退或者进行多次实验的可能性。

2、使用LVM进行逻辑卷的扩容

(1)对系统新加磁盘并使用fdisk进行分区(这里已有省略)

(2)查看系统的逻辑卷组vg和逻辑卷lv

或者使用vgdisplay和lvdisplay

( 3 ) 对新磁盘创建pv

( 4 ) 把PV加入VG

并使用lvdisplay 和 vgdisplay进行检查确认

(5)扩展lv

由于我们的系统环境是LVM逻辑卷扩容的3种模式介绍中介绍的第3种情况,所以此时,系统就hang住了。

当时以为是在ssh远程操作的结果,后来在图形化界面的终端进行操作还是同样问题。后来经过查找资料,才知只是因为调整的时候要重新挂载文件系统。因此根目录的调整与其它LVM管理的文件系统的调整稍有不同,必须先进入rescue模式。进入rescue模式,需要挂载iso光盘。

2、 linux的rescue模式

重启系统,系统就变成下图显示状况了。

我们的解决方法是挂载iso镜像,并设置系统从CD ROM启动

在boot:里面输入 linux rescue进入linux系统救援模式

按照提示一步一步进行,在是否启用网络的时候选择不启用

进入下一步之后

选择continue之后,按照提示进行命令界面。df是查看分区挂载情况。由于要重置逻辑卷的大小,所以要使用umount把挂载的文件系统给卸载了。然后是vg的激活,vgchange和最后的调整文件系统大小,使用lvm vgchange 和 e2fsck,具体看截图。

这个时候,再shutdown -r系统,就OK了,但是启动系统之后出现以下问题:

是因为linux系统启动时读取的/etc/fstab的配置文件内容没有变。

但是我们调整了磁盘的部署,解决方法如下:

在以上界面输入root用户的密码,进行维护:

发现没有挂载/boot分区,使用vim /etc/fstab查看配置文件内容。

把 LABEL=/boot的分区类型由ext4修改为ext3,并把/dev/sdb1这段注释掉,如下:

保存退出,重启,之后就OK了。

调整之后的分区情况如下:

转://如何增加linux根目录的磁盘空间(基于LVM)?的更多相关文章

  1. Linux磁盘空间扩容(LVM)

    Linux磁盘空间扩容(lvm) 随着系统的运行时间增长,业务数据的增长,原有磁盘的空间会存在空间不足情况,导致系统不能正常运行,或者系统管理员磁盘没有完全划完,根据使用者的需求自行划分.那么怎么才能 ...

  2. Linux:查看磁盘空间占用情况

    Linux:查看磁盘空间占用情况 工作中有时被分配的测试机空间不大,经常遇到磁盘空间占满的情况.排查过程如下: 一.首先使用df -h 命令查看磁盘剩余空间,通过以下图看出/目录下的磁盘空间已经被占满 ...

  3. 增加VirtualBox虚拟机的磁盘空间大小(Host:Win7 VirtualBox5.0.16 VM:Win10)

    1 前言 网上关于增加VirtualBox虚拟机的磁盘空间大小的文章非常非常多,这里我之所以再写一篇,是因为在参照这些文章做的时候,由于VirtualBox的版本更新以及其他一些环境问题,碰到到一些问 ...

  4. LINUX下添加磁盘空间的方法详解

    给Linux系统添加磁盘空间在工作会经常遇到. 在添加第二块磁盘一般系统默认为hdb(IDE硬盘)sdb(SCSI 硬盘),以hdb为例. linux-isep:~ # fdisk /dev/hdb ...

  5. linux 小技巧(磁盘空间搜索)

    这里记录一些linux 管理中可能会用到的又容易忘的一些小技巧. linux磁盘写入失败,提示磁盘空间不足.一般都会用df -h 或者df -i看是不是磁盘空间不足或者是inode空间不足.发生这种情 ...

  6. VirtualBox下Linux(centos)扩展磁盘空间

    最近在Linux里做文件合并,做分词,磁盘空间不够,把扩展磁盘空间方法记录一下. 1.在VirtualBox安装路径下(例如C:\Program Files\Oracle\VirtualBox> ...

  7. Linux下监控磁盘空间的四个命令

    无论是运行简单的Linux桌面还是大型Linux服务器,都需要了解可供应用程序使用的空间,并跟踪系统的磁盘使用情况.下面介绍四个核心命令行命令来管理Linux系统上的介质环境. 一.mount命令 m ...

  8. linux系统的磁盘空间限制的两种方法

    最近在搞VPS,要用到磁盘的限额,在网上找了一些相关的资料,总结起来,有两个方法能实现,一是用quota,另外一种是限制目录大小,下面我就将这两种方法写出来,与大家一起分享! 首先我们来看第一种方法, ...

  9. 【Linux】查看磁盘空间大小

    Ubuntu 查看磁盘空间大小命令 df -h Df命令是linux系统以磁盘分区为单位查看文件系统,可以加上参数查看磁盘剩余空间信息, 命令格式: df -hl  显示格式为:  文件系统 容量 已 ...

随机推荐

  1. 性能监控(4)–linux下的pidstat命令

    pidstat是一个可以监控到线程的监控工具,可以使用-p指定进程ID. pidstat–p <PID> [delay] [times] –u –t 可以监控线程的CPU使用率 当某一个线 ...

  2. JVM 垃圾回收机制

    首先JVM的内存结构包括五大区域: 程序计数器.虚拟机栈.本地方法栈.方法区.堆区.其中程序计数器.虚拟机栈和本地方法栈3个区域随线程启动与销毁, 因此这几个区域的内存分配和回收都具有确定性,不需要过 ...

  3. 快速掌握JavaScript面试基础知识(二)

    译者按: 总结了大量JavaScript基本知识点,很有用! 原文: The Definitive JavaScript Handbook for your next developer interv ...

  4. 【20190219】CSS-知识点整理:float、em、浏览器的渲染过程

    一.float与absolute 昨天看到一篇博客总结CSS中的一些关键知识点,里面对float元素进行了比较深入的解析,才发现我之前对float的理解不到位.float实际上最初的目的是为了实现图片 ...

  5. CSS 定位与Z-index

    position: static   Z-index 固定是0 position: absolute/relative/fixed   Z-index 有效 在层叠显示上,所有static定位元素看作 ...

  6. 如何用ABP框架快速完成项目(10) - ABP只要加人即可马上加快项目进展- 全栈篇(1) - 发挥DDD理论优势的时候到了!

    正如我在<程序员英语二三事(2) - 从听开始>里说的, 任何技术/工具/语言都有其适用场景和上下文环境. DDD理论同样是如此.   现在, 终于到了发挥DDD理论优势的时候啦!   一 ...

  7. AIOps 平台的误解,挑战及建议(下)— AIOps 挑战及建议

    本文篇幅较长,分为上,中,下,三个部分进行连载.内容分别为:AIOps 背景/所应具备技术能力分析(上),AIOps 常见的误解(中),挑战及建议(下). 前言 我大概是 5,6 年前开始接触 ITO ...

  8. Centos7开启ssh免密码登录

    1.输入命令:cd .ssh进入rsa公钥私钥目录(清空旧秘钥) 2.在当前目录下执行ssh-keygen -t rsa,三次回车后生成新的公钥(id_rsa.pub)私钥(id_rsa)文件(每个节 ...

  9. 获取spring applicationcontext数据连接connection

    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); ...

  10. solidity高级理论(三):时间单位与view

    solidity高级理论(三):时间单位与view 关键字:时间单位.view.Gas优化 solidity使用自己的本地时间单位 变量 now 将返回当前的unix时间戳(自1970年1月1日以来经 ...