一、背景
公司传统的服务器不知道什么朝代的朝臣用lvm分区,1T的硬盘分了50G挂载到根目录“/”里面有/var、/usr……,剩下的挂载到了“/home"目录,逻辑卷组一点都不剩。后面用docker的时候容器镜像一股脑儿到了/var/lib/docker。空间严重不足,在万分紧急的情况下,我机智地削了home目录的空间,在没有卸载的情况下增加了根目录的空间。因为当初是直接挂载到根目录的,所以var目录没办法分开。
我按照扩容的步骤来做,先卸载,umount,然后lvreduce,然后resize2fs。根目录所在的逻辑卷只能在线扩容,不umount,直接lvextend,然后resize2fs。一切正常,但是home逻辑卷的数据不正确,其他正常使用,我就不管他了。
二、服务器正常启动
后来,个别目录执行失败,我重启服务器。很久ssh都连不上,估计服务器启动失败,我赶紧跑去机房在本机登录,想改了fstab.conf文件,好让服务器起码正常启动,然后我再ssh操作。但是没权限。
1、重新挂载: mount -o remount,rw /
2、然后可以:vi /etc/fstab,不然fstab是制度文件。然后注释掉home目录的挂在信息。
三、恢复home的正常使用
我先尝试挂载,看看有没有什么错误再试试修复。
1、查看服务器上面的lv信息:lvscan
2、尝试挂载: mount /dev/VolGroup/lv_home /home
报这个错误:
mount: wrong fs type, bad option, bad superblock on /dev/mapper/VolGroup-lv_home,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so
3、确定错误类型: dmesg | tail
EXT4-fs (dm-2): bad geometry: block count 226699264 exceeds size of device (200484864 blocks)
错误类型是文件系统块数超过设备块数。
主要的错误来自于我再缩小逻辑卷空间的时候没有事先缩小文件系统。这是个致命的错误。
4、构思
网上很多兄弟都说数据肯定没了,特别是我这种逻辑卷组已经没有空间给我还原之前的大小。后来综合了网上的资料和同僚讨论,拿一个移动硬盘去做成pv,加入vg。再按量分给home逻辑卷组,就挂上home盘,然后再按照正确的顺序把移动硬盘腾出来。这里我在腾讯互移动硬盘的时候先把home挂载上去,主要是不知道后面的操作风险多大,先把资料备份出来。
5、恢复操作
a、插入移动硬盘,执行fdisk -l|tail查看磁盘信息。
可以看到sdb一有已经建好的分区,提供直接使用。
b、创建物理卷,pvcreate /dev/sdb1
c、加入逻辑卷组, vgextend VolGroup /dev/sdb1
d、查看信息。vgs
vg已经像计划中变大。
e、扩大home逻辑卷。lvextend -L +55G /dev/mapper/VolGroup-lv_home
实质上是恢复home原有的容量。
f、把home挂在起来。mount /dev/mapper/VolGroup-lv_home /home
资料全部都在,有些文件夹损坏。赶紧备份数据了,后面还有更高风险的操作。
四、移除移动硬盘
1、卸载home盘。umount /home
没报错。
2、查看pv的使用情况。pvscan
3、检查修复损坏的逻辑卷。e2fsck -f -y /dev/mapper/VolGroup-lv_home
4、缩小文件系统。resize2fs -p /dev/mapper/VolGroup-lv_home 500G
压缩成功。
5、缩小逻辑卷。lvreduce -L 500G /dev/mapper/VolGroup-lv_home
6、移除pv。vgreduce VolGroup /dev/sdb1
7、检查有没有移除成功了。vgs&&lvs&&pvs
以上看来,移除都操作全部顺利
8、销毁物理卷。pvremove /dev/sdb1
9、复检物理卷。pvs
没有/dev/sdb1,我就放心拔移动硬盘了。
10、测试自动挂载。mount -a
五、总结
其实就一个简单的步骤,既然磁盘有问题,那就回复原来的状态,没什么问题。但是,我这里的情况是,reduce了空间,又extend了/root,然后只能借助外力了。

修复lvm的逻辑卷的更多相关文章

  1. 2.lvm动态逻辑卷

    Lvm动态逻辑卷 一.             基本概念 LVM 把实际的物理磁盘数据映射到一个简单而灵活的虚拟逻辑存储视图上,藉以控制磁盘资源: 也就是重新考虑了管理文件系统和卷的方法,在文件系统管 ...

  2. [翻译]LVM中逻辑卷的最大大小限制

    前言: 本文是对这篇博客Maximum Size Of A Logical Volume In LVM的翻译,敬请尊重原创和翻译劳动成果,那些随意转载的大爷们,好歹也自觉注明出处.谢谢! 英文原文地址 ...

  3. LVM(逻辑卷管理)

    一.LVM概念 LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管 ...

  4. LVM(逻辑卷管理器)部署、扩容、缩小

    物理卷 -- Physical Volume -- PV 卷组  -- Volume Group  -- VG 逻辑卷 -- Logical Volume -- LV 1.硬盘设备管理技术虽然能够有效 ...

  5. 10-3 LVM(逻辑卷管理器)

    LVM(逻辑卷管理器) 允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小 允许在多个物理设备间重新组织文件系统 将设备指定为物理卷 用一个或者多个物理卷来创建一个卷组 物理卷是用固定大小的物理 ...

  6. LVM中逻辑卷的最大大小限制

    前言: 本文是对这篇博客Maximum Size Of A Logical Volume In LVM的翻译,敬请尊重原创和翻译劳动成果,那些随意转载的大爷们,好歹也自觉注明出处.谢谢! 英文原文地址 ...

  7. CentOS 6.3下配置LVM(逻辑卷管理)

    一.简介 LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵 ...

  8. lvm拉伸逻辑卷分区小总结

    文件系统                                      容量     已用      可用     已用% 挂载点 /dev/mapper/vg_znl-lv_root   ...

  9. LVM (逻辑卷管理器)

    图片来自:https://www.cnblogs.com/linuxprobe/p/5381538.html 参考博客:https://www.cnblogs.com/linuxprobe/p/538 ...

随机推荐

  1. 关于iOS socket的讲解介绍

    socket(套接字)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程 ...

  2. 手持机设备公司(WINCE/ANDROID/LINUX)

    1.深圳扬创科技有限公司网址: http://www.yctek.com/ 2.无锡盈达聚力科技有限公司 点击打开链接 3.上海鲲博通信技术有限公司(主要为用WINCE开发导航产品) 点击打开链接 4 ...

  3. Mahout Bayes分类

    Mahout Bayes分类器是按照<Tackling the Poor Assumptions of Naive Bayes Text Classiers>论文写出来了,具体查看论文 实 ...

  4. C++之标准输入输出

    由于在公司,无法上传图片,往后补上. 关于C++的标准输入输出,其实就相当于C语言的scanf和printf,只不过C++用cin和cout这样称为流的机制. #include <iostrea ...

  5. 细说Android事件传递

    一.View的dispatchTouchEvent和onTouchEvent 探讨Android事件传递机制前,明确android的两大基础控件类型:View和ViewGroup.View即普通的控件 ...

  6. Android Notification 版本适配方案

    Notification 介绍见:https://developer.android.com/reference/android/app/Notification.html Android api 一 ...

  7. NOSQL schema创建原则

    (1)数据规模 Bigtable类数据库系统(HBase,Cassandra等)是为了解决海量数据规模的存储需要设计的.这里说的海量数据规模指的是单个表存储的数据量是在TB或者PB规模,单个表是由千亿 ...

  8. IOS常见的加密方法,常用的MD5和Base64

    iOS代码加密常用加密方式 iOS代码加密常用加密方式,常见的iOS代码加密常用加密方式算法包括MD5加密.AES加密.BASE64加密,三大算法iOS代码加密是如何进行加密的,且看下文 MD5 iO ...

  9. Android的Binder的起源-android学习之旅(100)

    George Hoffman任职1991年Be公司的工程师,他启动了一个"openBinder"的项目,该项目的宗旨是研究一个高效的信号传递工具,允许多个软件相互合作,构成一个软件 ...

  10. ios中block访问外部变量的一些注意点

    Block类型是一个C级别的语法和运行机制.它与标准的C函数类似,不同之处在于,它除了有可执行代码以外,它还包含了与堆.栈内存绑定的变量.因此,Block对象包含着一组状态数据,这些数据在程序执行时用 ...