最近在公司gitlab服务器因为一个同事提交了一个4G大文件挂了,然后gitlab服务中的postgresql怎么也启不起来,查看一下服务日志发现了一直在报一个错误:

2016-09-23_01:34:20.36271 LOG:  could not write temporary statistics file "pg_stat_tmp/pgstat.tmp": No space left on device

此时怀疑是不是硬盘写满了,结果一查还真是:

[root@SH-GIT ~]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/vg_shgit-lv_root   50G   49G   16M 100% /
tmpfs                         1.9G     0  1.9G   0% /dev/shm
/dev/sda1                     485M   40M  420M   9% /boot
/dev/mapper/vg_shgit-lv_home  341G  195M  323G   1% /home
[root@SH-GIT gitlab]# du -sh /var/opt/gitlab
46G /var/opt/gitlab

估计是git的机制导致的,一开始想删文件,但一看git自己占了46G,也就没法下手了,于是乎只能从其它分区挪容量给git那个分区了,以后就是详细步骤。

1.umount,你要将你要减少的那个硬盘分区卸载

我这里是vg_shgit-lv_home那个分区

[root@SH-GIT ~]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/vg_shgit-lv_root   50G   49G   15M 100% /
tmpfs                         1.9G     0  1.9G   0% /dev/shm
/dev/sda1                     485M   40M  420M   9% /boot
/dev/mapper/vg_shgit-lv_home  341G -123M  324G   0% /home
[root@SH-GIT ~]# umount /dev/mapper/vg_shgit-lv_home
[root@SH-GIT ~]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/vg_shgit-lv_root   50G   49G   15M 100% /
tmpfs                         1.9G     0  1.9G   0% /dev/shm
/dev/sda1                     485M   40M  420M   9% /boot

2.e2fsck,用e2fsck命令去检测一下卸载的分区,确保没有问题

[root@SH-GIT ~]# e2fsck -fy /dev/mapper/vg_shgit-lv_home
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Block bitmap differences:  +(85458944--85467167) +(85983232--85991455) +(86507520--86515743) +(87031808--87040031) +(87556096--87564319) +(88080384--88088607) +(88604672--88612895) +(89128960--89137183) +(89653248--89661471) +(90177536--90177549) +(90177552--90177565) +(90177568--90184735)
/dev/mapper/vg_shgit-lv_home: ***** FILE SYSTEM WAS MODIFIED *****
/dev/mapper/vg_shgit-lv_home: 11/22675456 files (0.0% non-contiguous), 1472951/90701824 blocks

3.resize2fs,用resize2fs命令调整分区文件容量,这里说一下,linux分区大小有着两种概念,一个是分区文件容量,一个是分区空间容量,这两个容量都要调整才能达到容量调整的目的,少一步都会出错,我这里将分区容量调整为300G

[root@SH-GIT ~]# resize2fs -p /dev/mapper/vg_shgit-lv_home 300G
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/mapper/vg_shgit-lv_home to 78643200 (4k) blocks.
Begin pass 3 (max = 2768)
Scanning inode table          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
The filesystem on /dev/mapper/vg_shgit-lv_home is now 78643200 blocks long.

4.lvreduce,此处设置分区空间大小

[root@SH-GIT ~]# lvreduce -L 300G /dev/mapper/vg_shgit-lv_homeWARNING: Reducing active logical volume to 300.00 GiBTHIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv_home? [y/n]: yReducing logical volume lv_home to 300.00 GiBLogical volume lv_home successfully resized

5.e2fsck,再次检测分区,确保没有出现问题

[root@SH-GIT ~]# e2fsck -fy /dev/mapper/vg_shgit-lv_home
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/mapper/vg_shgit-lv_home: 11/19660800 files (0.0% non-contiguous), 1282774/78643200 blocks

6.mount,装载已卸载分区

[root@SH-GIT ~]# mount /dev/mapper/vg_shgit-lv_home
[root@SH-GIT ~]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/vg_shgit-lv_root   50G   49G   15M 100% /
tmpfs                         1.9G     0  1.9G   0% /dev/shm
/dev/sda1                     485M   40M  420M   9% /boot
/dev/mapper/vg_shgit-lv_home  296G  191M  281G   1% /home

7.vgdisplay,查看分区剩余空间,也就是刚缩小分区时,减出来的空间,也就是下面那个Free PE那一行

[root@SH-GIT ~]# vgdisplay--- Volume group ---VG Name               vg_shgitSystem ID             Format                lvm2Metadata Areas        2Metadata Sequence No  13VG Access             read/writeVG Status             resizableMAX LV                0Cur LV                3Open LV               3Max PV                0Cur PV                2Act PV                2VG Size               400.50 GiBPE Size               4.00 MiBTotal PE              102529Alloc PE / Size       90592 / 353.88 GiBFree  PE / Size       11937 / 46.63 GiBVG UUID               Tr86tt-x1NU-9RRi-8pqK-Fuo0-rzqZ-8wwG70

8.lvextend,扩展需要扩展的分区,将余出来的容量都加上去

[root@SH-GIT ~]# lvextend -L +46G /dev/mapper/vg_shgit-lv_rootExtending logical volume lv_root to 96.00 GiBLogical volume lv_root successfully resized

9.resize2fs,调整扩展后分区的文件大小

[root@SH-GIT ~]# resize2fs -p /dev/mapper/vg_shgit-lv_root
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/vg_shgit-lv_root is mounted on /; on-line resizing required
old desc_blocks = 4, new_desc_blocks = 6
Performing an on-line resize of /dev/mapper/vg_shgit-lv_root to 25165824 (4k) blocks.
The filesystem on /dev/mapper/vg_shgit-lv_root is now 25165824 blocks long.

如出现报错:

[root@192 ~]# resize2fs -p /dev/mapper/vg_shgit-lv_root
resize2fs 1.42.9 (28-Dec-2013)
resize2fs: Bad magic number in super-block while trying to open /dev/mapper/vg_shgit-lv_root
Couldn't find valid filesystem superblock.

则需要使用xfx扩展方式

[root@192 ~]# xfs_growfs /dev/mapper/vg_shgit-lv_root
meta-data=/dev/mapper/centos-root isize=512    agcount=4, agsize=1965312 blks=                       sectsz=512   attr=2, projid32bit=1=                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=7861248, imaxpct=25=                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=3838, version=2=                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 7861248 to 13104128

这样就调整好了,然后我的gitlab服务也如愿以偿的启动起来了

[root@SH-GIT ~]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/vg_shgit-lv_root   95G   49G   45G  53% /
tmpfs                         1.9G     0  1.9G   0% /dev/shm
/dev/sda1                     485M   40M  420M   9% /boot
/dev/mapper/vg_shgit-lv_home  296G  191M  281G   1% /home

注意:在这里提醒一下,千万别手残或眼残,漏了一步或没完成就重启服务器,那样会造成机器都没法用的,我就手残了一把,把调整文件大小那步给忘了,导致服务器没法用了,重启后提示减小的那个分区加载不了

/dev/mapper/vg_shgit-lv_home:unexpected inconsistency; run fsck manually

在网上查了一下,网上各种说法千篇一律,基本都是用fsck -y这个命令,但在这里是没用的,最后经过探索发现,最好的办法就是把减掉的空间还回去,步骤如下:

1.fstab,编辑这个文件,手动卸载出问题的分区,在出问题那行前加上#,将其注释掉,再保存退出,重启服务器,就手动卸载掉了

[root@SH-GIT ~]# mount -o rw,remount / #此处命令很重要,有了这个命令才能编辑fstab文件
[root@SH-GIT ~]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed Oct  1 02:08:57 2014
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/vg_shgit-lv_root /                       ext4    defaults        1 1
UUID=10415223-0d62-46a6-a4ab-fac2e03c9284 /boot                   ext4    defaults        1 2
/dev/mapper/vg_shgit-lv_home /home                   ext4    defaults        1 2
/dev/mapper/vg_shgit-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0

2.lversize,使用这个命令把加在root分区的空间减掉,再把空间加回到home分区上

[root@SH-GIT ~]# lvresize -L -20G /dev/mapper/vg_shgit-lv_root[root@SH-GIT ~]# lvresize -L +20G /dev/mapper/vg_shgit-lv_home

3.fstab,重复第一步,只不过这次将注释掉的那行再加回来,然后重启,这一次服务器就可正常进入了,这之后便可以再按最上面说的调整容量的正确顺序,调整分区容量了

附记:在查找怎么修复问题的时候,发现了一篇的文章,就是给硬盘再分些空间,然后调整到出问题的分区,虽然对于恢得分区没用,不过对额外增加硬盘容量比较有用

因为我这边是虚拟机搭建的服务器,所以以虚拟机为例,步骤如下:

2.fdisk,这里用fdisk命令将加上的硬盘容量加入到系统中,通用命令为fdisk /dev/sda,之后输入n,就会出现选择磁盘类型选项,这里选择建立P型磁盘,输入p,然后回车

[root@SH-GIT ~]# fdisk /dev/sdaWARNING: DOS-compatible mode is deprecated. It's strongly recommended toswitch off the mode (command 'c') and change display units tosectors (command 'u').Command (m for help):
Command (m for help): n
Command actione   extendedp   primary partition (1-4)

3.查看,再次输入v,查看新装载的分区,此处要把新加入的分区名字记下来,最后输入w保存,然后重启机器

Disk /dev/sda: 430.6 GB, 430570471424 bytes
255 heads, 63 sectors/track, 52347 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0001fce8Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64       52217   418917376   8e  Linux LVM
/dev/sda3           52217       52347     1046877+  83  Linux

4.lvm,加入lvm分区类型

[root@SH-GIT ~]# lvmlvm> pvcreate /dev/sda3 ##创建一个LVM硬分区,此处sda3就是上面新加上的分区空间
Physical volume “/dev/sda3” successfully created
lvm> vgextend vg_shgit /dev/sda3 ##加入与vg_shgit-lv_home目录同一个LVM组
Volume group “vg_shgit” successfully extended
lvm> pvdisplay #查看一下容量是否已加入lvm分区

5.重启,这步新加的磁盘空间就加到系统中了

centos 硬盘分区容量调整相关推荐

  1. 增加ESXI中虚拟机CENTOS系统分区容量

    一.使用虚拟机安装的centos 6.2 x64,分区时把u01分小了,在原硬盘的基本上增加50G,可重启后需要调整分区容量. 原分区如下: [oracle@oracleone ~]$ df -h   ...

  2. 硬盘分区容量计算方法

    在实际操作中,大家是否遇到过这样一个问题,在对硬盘重新或者全新进行分区时,总得不到一个整数的硬盘容量.然而实际上我们在使用FDISK工具分区时并不想得到这样结果,我们的初衷是希望分区大小是一个整数,例 ...

  3. 计算机硬盘容量分盘计算,硬盘分区容量精确计算公式 -电脑资料

    硬盘分区如何精确计算所需要的容量呢? 大家在硬盘分区的时侯都会输入数字,比如你想得到一个2G的分区你也许会输入2000M或者2048M其实你输入的这些数字所分出来的区在Windows下面都不会被认成整 ...

  4. Linux centOS 硬盘分区挂载

    文章转载自:http://linux008.blog.51cto.com/2837805/548711 1.什么是分区?     分区是将一个硬盘驱动器分成若干个逻辑驱动器,分区是把硬盘连续的区块当做 ...

  5. centos 增加分区容量

    1. 登录到系统中,查看硬盘情况. /dev/sdb就是新增加的硬盘.(如果sda的空间没有用完,可以对sda进行以下操作) lsblk #也可以用fdisk -l 查看分区后重启或用partprob ...

  6. centos硬盘分区

    lsblk lsblk命令的英文是"list block",即用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系. parted /dev/sdb   #进入交互模式 G ...

  7. PQMagic调整磁盘分区容量大小【非格式化硬盘调整】

    本文转自:三知开发网 http://www.sunchis.com/html/sys/hsware/soft/2010/0301/27.html [引言] 近一年时间里,有不少网友发邮件向我询问,如何 ...

  8. windows 2003 server系统硬盘分区调整技巧

    很高兴,今天终于找到了2003 server 系统硬盘分区的调整方法. 新上的服务器系统盘分区都是10G.一般情况下应该够用,但个别机器由于安装了多个数据库,C盘空间越来越小,虚拟内存都改到了其它盘, ...

  9. linux格式化4t硬盘分区,详解:Linux 硬盘,格式化,分区 详解

    disk是Linux自带的硬盘分区工具,可以对硬盘进行分区,或者对硬盘分区进行调整. 首先选择要进行操作的磁盘 [root@linuxidc ~]# fdisk /dev/sdb 输入m,列出可以执行 ...

最新文章

  1. 【机器视觉案例】(11) 眨眼计数器,人脸关键点检测,附python完整代码
  2. URL 去重的 6 种方案!(附详细代码)
  3. ++,--运算符的使用
  4. CentOS6.5环境使用keepalived实现nginx服务的高可用性及配置详解
  5. OpenGL tessmodes细分模式的实例
  6. 纯ASP上传图像文件到数据库的最佳例子
  7. 【helpdesk】启明星helpdesk7.0版本里,实现邮件提交功能介绍和原理
  8. 基于easyui开发Web版Activiti流程定制器详解(六)——Draw2d详解(二)
  9. 【MySQL】MySQL常见的读写分离方法
  10. 吴恩达机器学习(十)支持向量机(SVM)
  11. 印象笔记打开错误_印象笔记新增桌面便签功能
  12. vc对图像进行平移,转置等几何变换
  13. 谈 DevOps 自动化时,也应该考虑到 SOX 等法案
  14. 碰撞、子弹路径、参考
  15. WSL2 Ubuntu18.04 apt-get update失败
  16. grread使用例子 lisp_Autolisp编程心得
  17. Matlab使用高阶求解器解决天体力学问题
  18. 齐岳|脂质体磷酸钙纳米粒RNA核糖核酸|淫羊藿苷固体纳米脂质体(ICA-SLN)修饰负载RNA核糖核酸
  19. CompareTo和compare的区别
  20. 然后上传到linux主机上,Xshell实现Windows上传文件到Linux主机

热门文章

  1. 佐治亚理工计算机考研,美国佐治亚理工大学研究生专业排名多少?
  2. 如何看待何恺明最新一作论文Masked Autoencoders?
  3. python脚本批量更改图片大小
  4. 关于条形码的属性与一些自定义操作
  5. 微软宣布与神州数码合作希望利用区块链技术优化金融、电子商务、娱乐等行业!
  6. 【QT】翻金币小游戏·我的学习版
  7. 基于归一化互相关函数的语音基音周期检测
  8. JAVA 之POI导入批量新增、批量检查、日志记录、失败原因、失败条数、数据库映射
  9. 如何将原始SNP信息转化为0,1,2的矩阵形式
  10. 微信中扫一扫自动调用手机外部浏览器打开链接下载APP(APK)