欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux根目录扩容方法及其涉及的相关磁盘操作

程序员文章站 2022-07-03 15:23:10
...

Linux根目录扩容方法及其涉及的相关磁盘操作

linux下与存储相关的命令

命令 作用
free 查看内存使用情况
df 查看文件系统/挂载点的存储使用情况
mkfs 对磁盘进行格式化
du 查看某个文件或者目录所占用的存储空间大小
fdisl 查看系统所有的磁盘和磁盘分区;对物理磁盘进行分区

fdisk

fdisk -l

Linux根目录扩容方法及其涉及的相关磁盘操作

fdisk /dev/sdb

Linux根目录扩容方法及其涉及的相关磁盘操作

LVM简介

LVM全称Logical Volume Manager,逻辑卷管理,在linux系统下对磁盘分区进行管理的机制,是建立在物理磁盘上的抽象层。

物理卷(pv,physical volume)

可以理解为linux下的物理磁盘或者磁盘分区,如/dev/sdb(磁盘)、/dev/sdb1(磁盘分区,通过fdisk对/dev/sdb进行操作划分出来的磁盘分区,类似于windows下的C、D、E盘),但是和物理磁盘以及磁盘分区不同的是,物理卷含有和LVM相关的参数

卷组(vg,volume group)

由一个或者多个物理卷组成的卷组

逻辑卷(lv,logical volume)

通过卷组划分出来的分区,可以用来建立文件系统,例如/dev/mapper/centos-root 是根目录的文件系统挂载点,它就是建立在一个逻辑卷之上的,该文件系统的大小就是这个逻辑卷的大小

物理块(PE,physical extent)

每个物理卷被分为若干个物理块,是LVM寻址中的最小单元,有唯一编号,可以设置大小,默认为4MB

逻辑块(LE,logical extent)

每个逻辑卷被分为若干个逻辑卷,与PE是一一对应的

案例:centos根目录扩容

[root@slave01 ~]# df
文件系统                  1K-块    已用    可用 已用% 挂载点
/dev/mapper/centos-root 6981632 6086596  895036   88% /
devtmpfs                1232124       0 1232124    0% /dev
tmpfs                   1242128       0 1242128    0% /dev/shm
tmpfs                   1242128   24092 1218036    2% /run
tmpfs                   1242128       0 1242128    0% /sys/fs/cgroup
/dev/sda1                508588  124772  383816   25% /boot
tmpfs                    248428       0  248428    0% /run/user/0

可以看到根目录只有12%的空间可用了,需要扩容一下

1.假设系统中有一块硬盘或者虚拟机的虚拟硬盘 /dev/sdb

2.通过上面 fdisk 部分的 fdisk /dev/sdb 操作来分出一块分区/dev/sdb1

[aaa@qq.com ~]# fdisk /dev/sd
sda   sda1  sda2  sdb   
[aaa@qq.com ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0x4472a336 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-4194303,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-4194303,默认为 4194303):+1G
分区 1 已设置为 Linux 类型,大小设为 1 GiB

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。

[aaa@qq.com ~]# fdisk -l
···
磁盘 /dev/sdb:2147 MB, 2147483648 字节,4194304 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x4472a336

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
···

3.通过 pvcreate 命令创建物理卷

[root@slave01 ~]# pvcreate /dev/sdb1 
  Physical volume "/dev/sdb1" successfully created.

4.查看刚刚创建的物理卷/dev/sdb1

[root@slave01 ~]# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               centos
  PV Size               7.51 GiB / not usable 3.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              1922
  Free PE               10
  Allocated PE          1912
  PV UUID               SFY7mk-Tkm3-pvih-tydL-zNaQ-3OcT-hv7hES

  "/dev/sdb1" is a new physical volume of "1.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name               
  PV Size               1.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               MLLBUH-e9bY-2eMd-Lgpk-70px-4uan-nTRfHQ

5.vgdisplay 查看系统中的卷组,看到Free PE(空闲物理块)只有10块

[aaa@qq.com ~]# vgdisplay 
  --- Volume group ---
  VG Name               centos
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <7.51 GiB
  PE Size               4.00 MiB
  Total PE              1922
  Alloc PE / Size       1912 / <7.47 GiB
  Free  PE / Size       10 / 40.00 MiB
  VG UUID               O40ce2-OEPo-N8l1-tuu7-vmf8-kDHE-mHQdY9

6.通过 vgextend 将物理卷sdb1加入卷组centos

[aaa@qq.com ~]# vgextend centos /dev/sdb1
  Volume group "centos" successfully extended

7.再次查看卷组,可以看到Free PE(空闲物理块)已经是265块

[aaa@qq.com ~]# vgdisplay 
  --- Volume group ---
  VG Name               centos
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               8.50 GiB
  PE Size               4.00 MiB
  Total PE              2177
  Alloc PE / Size       1912 / <7.47 GiB
  Free  PE / Size       265 / <1.04 GiB
  VG UUID               O40ce2-OEPo-N8l1-tuu7-vmf8-kDHE-mHQdY9

8.通过 lvextend 命令扩展根目录挂载点 /dev/mapper/centos-root

[aaa@qq.com ~]# lvextend -L +1G /dev/mapper/centos-root 
  Size of logical volume centos/root changed from <6.67 GiB (1707 extents) to <7.67 GiB (1963 extents).
  Logical volume centos/root successfully resized.

到此只是对逻辑卷进行了扩容,通过df还看不到根目录的空间扩充,还要对文件系统进行扩容才能完成

9.通过 resize2fs 或者 xfs_growfs 命令对文件系统进行扩容

[root@slave01 ~]# resize2fs /dev/mapper/centos-root 
resize2fs 1.42.9 (28-Dec-2013)
resize2fs: Bad magic number in super-block 当尝试打开 /dev/mapper/centos-root 时
找不到有效的文件系统超级块.

这里有时候使用 resize2fs 会出错,查看一下根目录的文件系统

查看/dev/mapper/centos-root文件系统

[root@slave01 ~]# cat /etc/fstab | grep centos-root
/dev/mapper/centos-root /                       xfs     defaults        0 0

10.看到文件系统xfs,使用 xfs_growfs 命令

[root@slave01 ~]# xfs_growfs /dev/mapper/centos-root 
meta-data=/dev/mapper/centos-root isize=256    agcount=4, agsize=436992 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=1747968, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 1747968 to 2010112

11.df 查看扩容后的各个目录和挂载点大小

[root@slave01 ~]# df
文件系统                  1K-块    已用    可用 已用% 挂载点
/dev/mapper/centos-root 8030208 6090720 1939488   76% /
devtmpfs                1232124       0 1232124    0% /dev
tmpfs                   1242128       0 1242128    0% /dev/shm
tmpfs                   1242128   24096 1218032    2% /run
tmpfs                   1242128       0 1242128    0% /sys/fs/cgroup
/dev/sda1                508588  124772  383816   25% /boot
tmpfs                    248428       0  248428    0% /run/user/0

可以看到现在现在根目录 / 现在有24%的可用空间了