Linux/centos下 扩容磁盘

一、背景

        linux使用中经常遇到磁盘空间不足,需要对磁盘进行扩容。根据自己的经验进行归纳整理,多种场景,帮助需要者和备查

本文执行的命令,均在centos7 环境下运行的,其他环境思路和相似,命令基本一致。

分区情况说明:

sda是单独的一块磁盘总大小50G,sda1、sda2是两个分区,sda2下面有三个逻辑分区centos-root 、centos-home、centos-swap (df命令时可以看到的挂载点); 

centos-root 对应的挂载点是 根目录

centos-home对应的挂载点是 /home

卷组名称为centos (通过pvdisplay查看

 
  1. [root@vm-210 templates]# lsblk

  2. NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

  3. sda 8:0 0 50G 0 disk

  4. ├─sda1 8:1 0 1G 0 part /boot

  5. └─sda2 8:2 0 49G 0 part

  6. ├─centos-root 253:0 0 40G 0 lvm /

  7. ├─centos-home 253:1 0 7G 0 lvm /home

  8. └─centos-swap 253:2 0 2G 0 lvm [SWAP]

 
  1. [root@vm-210 templates]# pvdisplay

  2. --- Physical volume ---

  3. PV Name /dev/sda2

  4. #卷组名称

  5. VG Name centos

  6. PV Size <49.00 GiB / not usable 3.00 MiB

  7. Allocatable yes

  8. PE Size 4.00 MiB

  9. Total PE 12543

  10. Free PE 1

  11. Allocated PE 12542

  12. PV UUID 1Fpioh-HkxD-f4Pd-78An-on4A-vGS1-B9UXr4

二、场景

出现以下问题参考文章:http://t.csdn.cn/cbViW

扩容磁盘不显示扩容后的磁盘或者磁盘大小两种情况:
                情况一:修改原来磁盘大小
                情况二:新增磁盘

场景一:将centos-home分区移动到根分区centos-root

        由于分区时,centos-home分区空间非常大,centos-root分区非常小,需要删除centos-home分区,扩容到centos-root分区

操作思路括号中是用到的命令):

  1. 先备份/home下文件
  2. 卸载(umount) /home (注意:卸载不掉时,请将所有使用/home的进程关闭  参考http://t.csdn.cn/cbViW
  3. 从逻辑卷中删除(lvremove)  home 分区
  4. 扩展:将腾出的空间扩展(lvextend)到 centos-root分区下
  5. 使扩展生效(xfs_growfs
  6. 注释掉fstab中的启动挂载项
  7. 恢复备份数据到/home 下
详细代码如下:
 
  1. #!/bin/bash

  2. #【功能】 将centos-home分区的空间移动到根centos-root分区下

  3. #1.先备份 /home下文件: 将/home下的所有内容备份到/backup下,下面的命令自动创建/backup目录

  4. mkdir /backup && mv /home/* /backup

  5. # 2.卸载 centos-home

  6. umount /home

  7. ## 如提示失败则用下面的命令终止/home 分区下的进程 再进行卸载

  8. ## fuser 安装方法 yum install -y psmisc

  9. ## fuser -m -v -i -k /home

  10. ## 判断是哪个进程占用了此目录,请kill掉那个进程也可以

  11. # 3.从逻辑卷中删除(lvremove)  centos-home 分区

  12. echo y|lvremove /dev/mapper/centos-home

  13. # 4.扩展:将腾出的空间扩展(lvextend)到 centos-root分区下

  14. lvextend -l+100%FREE /dev/mapper/centos-root

  15. # 5.使扩展生效(xfs_growfs)

  16. xfs_growfs /dev/mapper/centos-root

  17. # 6.注释掉fstab中的启动挂载项

  18. sed -i 's;/dev/mapper/centos-home;#/dev/mapper/centos-home;g' /etc/fstab

  19. # 7.恢复 原来home下的数据 并删除/backup

  20. mv /backup/* /home && rm -rf /backup

  21. # 8.查看

  22. df -H

说明:

        思路是一样的,如果是其他分区,请修改里面的分区目录即可

场景二:新增磁盘扩容到根目录或者home下

        磁盘空间不足,新增加了一块硬盘的场景。此处举例新增的一块磁盘名称为/dev/sdb

操作思路括号中是用到的命令):

  1. 查看磁盘情况(lsblk、fdisk -l、pvdisplay)
  2. 创建物理卷(pvcreate
  3. 将磁盘扩展到卷组(vgextend
  4. 扩展逻辑分区(lvextend
  5. 使扩展生效(xfs_growfs
  6. 查看(df -H
 
  1. # 1.查看磁盘情况(lsblk、fdisk -l、pvdisplay)

  2. lsblk

  3. # 2.创建物理卷(pvcreate)

  4. pvcreate /dev/sdb

  5. # 3.将磁盘扩展到卷组(vgextend)

  6. vgextend centos /dev/sdb

  7. # 4.扩展逻辑分区(lvextend)

  8. # 根据自己的情况选择扩容到centos-root

  9. # 还是centos-home逻辑分区,请修改注释

  10. # 100%是将所有的磁盘空间扩容到指定分区,也可以根据需要进行调整比例

  11. # 也支持指定大小比如10G等等(指定固定值时参数-l需要修改为-L)

  12. lvextend -l+100%FREE /dev/mapper/centos-root

  13. #lvextend -l+100%FREE /dev/mapper/centos-home

  14. # 5.使扩展生效(xfs_growfs)根据扩容的分区进行选择使用

  15. # xfs_growfs /dev/mapper/centos-home

  16. xfs_growfs /dev/mapper/centos-root

  17. # 6.查看(df -H)

  18. df -H

    场景三:在原始磁盘上增加空间(常在虚拟化环境中)

        虚拟化或者超融合环境中、或者VMware虚拟机中;磁盘空间不足,增加了已有磁盘的大小的场景,把增加的空间扩容到根目录或者centos-home下。

操作思路括号中是用到的命令):

方法一:fdisk进行分区,操作步骤与场景二基本一样,多了一步分区

  1. 查看磁盘情况(lsblk、fdisk -l、pvdisplay)
  2. 创建分区(fdisk 磁盘名称)
  3. 创建物理卷(pvcreate
  4. 将磁盘扩展到卷组(vgextend
  5. 扩展逻辑分区(lvextend
  6. 使扩展生效(xfs_growfs
  7. 查看(df -H

方法二:用parted命令调整大小

  1. 查看磁盘情况(parted /dev/sda  print free)
  2. 分配剩余的可用空间(parted /dev/sda resizepart 2 100%
  3. 刷新物理卷(pvresize /dev/sda2
  4. 扩展逻辑分区(lvextend
  5. 使扩展生效(xfs_growfs
  6. 查看(df -H
 方法一:fdisk进行分区,操作步骤与场景二基本一样,多了一步分区
 
  1. # 1.创建分区(fdisk)

  2. fdisk /dev/sda

  3. #在进入命令环境中,按n键 一路按回车,最后一步按w键保存,最后按q键退出

  4. # 2.创建物理卷(pvcreate) sda3根据第一步中创建的分区名称进行替换

  5. pvcreate /dev/sda3

  6. # 3.将磁盘扩展到卷组(vgextend) sda3根据第一步中创建的分区名称进行替换

  7. vgextend centos /dev/sda3

  8. # 4.扩展逻辑分区(lvextend)

  9. # 根据自己的情况选择扩容到centos-root

  10. # 还是centos-home逻辑分区,请修改注释

  11. # 100%是将所有的磁盘空间扩容到指定分区,也可以根据需要进行调整比例

  12. # 也支持指定大小比如10G等等(指定固定值时参数-l需要修改为-L)

  13. lvextend -l+100%FREE /dev/mapper/centos-root

  14. #lvextend -l+100%FREE /dev/mapper/centos-home

  15. # 5.使扩展生效(xfs_growfs)根据扩容的分区进行选择使用

  16. # xfs_growfs /dev/mapper/centos-home

  17. xfs_growfs /dev/mapper/centos-root

  18. # 6.查看(df -H)

  19. df -H

   方法二:用parted命令调整大小

举例:系统只有一个磁盘,2个分区:需要将新扩容的磁盘空间扩容到分区2上,下图中number 为2的,实际上对应的是/dev/sda2

 
  1. [root@vm-210 templates]# parted /dev/sda print free

  2. Model: ATA QEMU HARDDISK (scsi)

  3. Disk /dev/sda: 53.7GB

  4. Sector size (logical/physical): 512B/512B

  5. Partition Table: msdos

  6. Disk Flags:

  7. Number Start End Size Type File system Flags

  8. 32.3kB 1049kB 1016kB Free Space

  9. 1 1049kB 1075MB 1074MB primary xfs boot

  10. 2 1075MB 53.7GB 52.6GB primary lvm

 
  1. 方法二:用parted命令进行操作

  2. #1. 查看磁盘情况:打印可用空间

  3. parted /dev/sda print free

  4. #2.分配剩余的可用空间

  5. #将剩余的可用空间分配到 /dev/sda2,根据实际修改磁盘

  6. # resizepart 中的2 只的是第二个分区即:/dev/sda2

  7. # 100% 将所有的空闲空间分配给/dev/sda2,也可以用单位和百分比

  8. parted /dev/sda resizepart 2 100%

  9. # 3.刷新物理卷

  10. #分区的空间修改了,也要刷新一下pv物理卷的大小,这样pv才能识别变动的空间

  11. pvresize /dev/sda2

  12. # 4.查看物理卷是否变化

  13. #查看pv中free 项中是否显示了可用的空间

  14. pvdisplay

  15. # 5.扩展逻辑分区

  16. #开始增加到逻辑卷中

  17. lvextend -l+100%FREE /dev/mapper/centos-root

  18. # 6.使扩展生效(xfs_growfs)

  19. xfs_growfs /dev/mapper/centos-root

  20. # 7.查看(df -H)

  21. df -H

三、总结

        自己在工作中遇到磁盘扩容的问题进行了汇总。按照我的命令可以一步一步执行,如果还想进行了解更深,需要了解什么是物理卷(pv)、逻辑卷、逻辑分组、逻辑分区等等

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值