草庐IT

【解决】linux磁盘扩容大全:新增磁盘、原磁盘扩容、home分区root分区扩容

太阳花先生可爱多 2023-05-14 原文

一、背景

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

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

分区情况说明:

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

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

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

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

[root@vm-210 templates]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   50G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   49G  0 part 
  ├─centos-root 253:0    0   40G  0 lvm  /
  ├─centos-home 253:1    0    7G  0 lvm  /home
  └─centos-swap 253:2    0    2G  0 lvm  [SWAP]
[root@vm-210 templates]# pvdisplay 
  --- Physical volume ---
  PV Name               /dev/sda2
  #卷组名称  
  VG Name               centos
  PV Size               <49.00 GiB / not usable 3.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              12543
  Free PE               1
  Allocated PE          12542
  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 下

详细代码如下:

#!/bin/bash
#【功能】 将centos-home分区的空间移动到根centos-root分区下

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

# 2.卸载 centos-home 
umount /home 
   ##  如提示失败则用下面的命令终止/home 分区下的进程 再进行卸载
   ##  fuser 安装方法  yum install -y psmisc
   ##  fuser -m -v -i -k /home
   ##  判断是哪个进程占用了此目录,请kill掉那个进程也可以

# 3.从逻辑卷中删除(lvremove)  centos-home 分区
echo y|lvremove /dev/mapper/centos-home 

# 4.扩展:将腾出的空间扩展(lvextend)到 centos-root分区下
lvextend -l+100%FREE /dev/mapper/centos-root 

# 5.使扩展生效(xfs_growfs)
xfs_growfs /dev/mapper/centos-root 

# 6.注释掉fstab中的启动挂载项
sed -i 's;/dev/mapper/centos-home;#/dev/mapper/centos-home;g' /etc/fstab 

# 7.恢复 原来home下的数据 并删除/backup
mv /backup/* /home  && rm -rf /backup

# 8.查看
df -H

说明:

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

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

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

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

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

# 2.创建物理卷(pvcreate)
pvcreate /dev/sdb

# 3.将磁盘扩展到卷组(vgextend)
vgextend centos /dev/sdb

# 4.扩展逻辑分区(lvextend)
#   根据自己的情况选择扩容到centos-root
#                      还是centos-home逻辑分区,请修改注释
# 100%是将所有的磁盘空间扩容到指定分区,也可以根据需要进行调整比例
#      也支持指定大小比如10G等等(指定固定值时参数-l需要修改为-L)
lvextend -l+100%FREE /dev/mapper/centos-root
#lvextend -l+100%FREE /dev/mapper/centos-home

# 5.使扩展生效(xfs_growfs)根据扩容的分区进行选择使用
# xfs_growfs /dev/mapper/centos-home
xfs_growfs /dev/mapper/centos-root

# 6.查看(df -H)
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.创建分区(fdisk)
fdisk  /dev/sda
#在进入命令环境中,按n键  一路按回车,最后一步按w键保存,最后按q键退出

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

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

# 4.扩展逻辑分区(lvextend)
#   根据自己的情况选择扩容到centos-root
#                      还是centos-home逻辑分区,请修改注释
# 100%是将所有的磁盘空间扩容到指定分区,也可以根据需要进行调整比例
#      也支持指定大小比如10G等等(指定固定值时参数-l需要修改为-L)
lvextend -l+100%FREE /dev/mapper/centos-root
#lvextend -l+100%FREE /dev/mapper/centos-home

# 5.使扩展生效(xfs_growfs)根据扩容的分区进行选择使用
# xfs_growfs /dev/mapper/centos-home
xfs_growfs /dev/mapper/centos-root

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

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

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

[root@vm-210 templates]# parted /dev/sda  print free
Model: ATA QEMU HARDDISK (scsi)
Disk /dev/sda: 53.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
        32.3kB  1049kB  1016kB           Free Space
 1      1049kB  1075MB  1074MB  primary  xfs          boot
 2      1075MB  53.7GB  52.6GB  primary               lvm
方法二:用parted命令进行操作

#1. 查看磁盘情况:打印可用空间
parted /dev/sda  print free

#2.分配剩余的可用空间
#将剩余的可用空间分配到 /dev/sda2,根据实际修改磁盘
# resizepart 中的2 只的是第二个分区即:/dev/sda2 
#             100% 将所有的空闲空间分配给/dev/sda2,也可以用单位和百分比
parted /dev/sda resizepart 2 100%

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

# 4.查看物理卷是否变化
#查看pv中free 项中是否显示了可用的空间
pvdisplay

# 5.扩展逻辑分区
#开始增加到逻辑卷中
lvextend -l+100%FREE /dev/mapper/centos-root

# 6.使扩展生效(xfs_growfs)
xfs_growfs /dev/mapper/centos-root

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

三、总结

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

有关【解决】linux磁盘扩容大全:新增磁盘、原磁盘扩容、home分区root分区扩容的更多相关文章

  1. Ruby rpartition 与分区? - 2

    rpartition和partition有什么区别?我已经阅读了文档,但我认为它们是一样的。只是那些出现在后来的ruby​​版本中吗? 最佳答案 以下示例将有助于识别差异:"abccba".partition("b")#=>["a","b","ccba"]"abccba".rpartition("b")#=>["abcc","b","a"]所以区别在于rpartition搜索最右边的匹配项,而不是最左边的匹配项。 关于Rubyrpartition与分区?,我们在StackOverflow

  2. 屏幕录制为什么没声音?检查这2项,轻松解决 - 2

    相信很多人在录制视频的时候都会遇到各种各样的问题,比如录制的视频没有声音。屏幕录制为什么没声音?今天小编就和大家分享一下如何录制音画同步视频的具体操作方法。如果你有录制的视频没有声音,你可以试试这个方法。 一、检查是否打开电脑系统声音相信很多小伙伴在录制视频后会发现录制的视频没有声音,屏幕录制为什么没声音?如果当时没有打开音频录制,则录制好的视频是没有声音的。因此,建议在录制前进行检查。屏幕上没有声音,很可能是因为你的电脑系统的声音被禁止了。您只需打开电脑系统的声音,即可录制音频和图画同步视频。操作方法:步骤1:点击电脑屏幕右下侧的“小喇叭”图案,在上方的选项中,选择“声音”。 步骤2:在“声

  3. 【高数】用拉格朗日中值定理解决极限问题 - 2

    首先回顾一下拉格朗日定理的内容:函数f(x)是在闭区间[a,b]上连续、开区间(a,b)上可导的函数,那么至少存在一个,使得:通过这个表达式我们可以知道,f(x)是函数的主体,a和b可以看作是主体函数f(x)中所取的两个值。那么可以有,  也就意味着我们可以用来替换 这种替换可以用在求某些多项式差的极限中。方法: 外层函数f(x)是一致的,并且h(x)和g(x)是等价无穷小。此时,利用拉格朗日定理,将原式替换为 ,再进行求解,往往会省去复合函数求极限的很多麻烦。使用要注意:1.要先找到主体函数f(x),即外层函数必须相同。2.f(x)找到后,复合部分是等价无穷小。3.要满足作差的形式。如果是加

  4. 7个大一C语言必学的程序 / C语言经典代码大全 - 2

    嗨~大家好,这里是可莉!今天给大家带来的是7个C语言的经典基础代码~那一起往下看下去把【程序一】打印100到200之间的素数#includeintmain(){ inti; for(i=100;i 【程序二】输出乘法口诀表#includeintmain(){inti;for(i=1;i 【程序三】判断1000年---2000年之间的闰年#includeintmain(){intyear;for(year=1000;year 【程序四】给定两个整形变量的值,将两个值的内容进行交换。这里提供两种方法来进行交换,第一种为创建临时变量来进行交换,第二种是不创建临时变量而直接进行交换。1.创建临时变量来

  5. 深度学习部署:Windows安装pycocotools报错解决方法 - 2

    深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal

  6. ruby - 在没有 root 的情况下安装 Jekyll - 2

    我想在共享服务器上建立一个jekyll博客。当我尝试安装Jekyll时,我得到“您没有写权限”。我该如何在没有root或sudo的情况下解决这个问题?更多细节:我在共享服务器上有空间,但没有根访问权限。我无法安装Ruby,尽管托管公司应我的要求安装了它。当我尝试安装Jekyll时我使用user@hosting.org[~]#geminstalljekyll这是我得到的回应:ERROR:Whileexecutinggem...(Gem::FilePermissionError)Youdon'thavewritepermissionsintothe/usr/lib/ruby/gems/1.

  7. ruby - 如何更快地解决 project euler #21? - 2

    原始问题Letd(n)bedefinedasthesumofproperdivisorsofn(numberslessthannwhichdivideevenlyinton).Ifd(a)=bandd(b)=a,whereab,thenaandbareanamicablepairandeachofaandbarecalledamicablenumbers.Forexample,theproperdivisorsof220are1,2,4,5,10,11,20,22,44,55and110;therefored(220)=284.Theproperdivisorsof284are1,2,

  8. ruby-on-rails - Rails 3,在RAILS_ROOT上方显示来自本地文件系统的jpg图片 - 2

    我正在尝试找出一种方法来显示来自不在RAILS_ROOT下(在RedHat或Ubuntu环境中)的已安装文件系统的图像。我不想使用符号链接(symboliclink),因为这个应用程序实际上是通过Tomcat部署的,而当我关闭Tomcat时,Tomcat会尝试跟随符号链接(symboliclink)并删除挂载中的所有图像。由于这些文件的数量和大小,将图像放在public/images下也不是一种选择。我查看了send_file,但它只会显示一张图片。我需要在一个格式良好的页面中显示6个请求的图像。由于膨胀,我宁愿不使用Base64编码,但我不知道如何将图像数据与呈现的页面一起传递下去。

  9. ruby - 为什么这些方法没有解决? - 2

    这个问题在这里已经有了答案:WhydoRubysettersneed"self."qualificationwithintheclass?(3个答案)关闭29天前。给定这段代码:classSomethingattr_accessor:my_variabledefinitialize@my_variable=0enddeffoomy_variable=my_variable+3endends=Something.news.foo我收到这个错误:test.rb:9:in`foo':undefinedmethod`+'fornil:NilClass(NoMethodError)fromtes

  10. 电脑启动后显示器黑屏怎么办?排查下面4个问题,快速解决 - 2

    电脑启动出现显示器黑屏是一个相当常见的问题。如果您遇到了这个问题,不要惊慌,因为它有很多可能的原因,可以采取一些简单的措施来解决它。在本文中,小编将介绍下面4种常见的电脑启动后显示器黑屏的原因,排查这些原因,快速解决! 演示机型:联想Ideapad700-15ISK-ISE系统版本:Windows10一、显示器问题如果出现电脑启动后显示器黑屏的情况。那么首先您需要检查一下显示器是否正常工作。您可以通过更换另一个显示器或将当前显示器连接到另一台计算机来检查显示器是否存在问题。如果问题仍然存在,那么您可以排除显示器故障的可能性。 二、显卡问题如果您的电脑配备了独立显卡,那么显卡故障也可能是导致电脑

随机推荐