Linux系统上的磁盘扩展总结

目录

一、前言

二、相关基础知识

(1)术语理解

(2)相关命令学习

1、磁盘管理相关命令

2、LVM管理相关命令

三、磁盘操作场景汇总

(1)添加新硬盘后挂载到已有目录进行扩容

(2)虚拟机扩容后新建文件系统并分配内存

1、新建分区新增逻辑卷扩容

2、同卷组新增逻辑卷扩容

(3)文件系统间的容量调整 

四、后记


一、前言

说说为什么网上其实已经有一些不错的文章介绍linux系统磁盘扩容了,笔者还得写个博客来说一下这块的内容:

主要是之前用生产环境进行磁盘扩容时借鉴了一哥们文章上的方法,看着挺简单的,所以果断采取,当即采纳...结果磁盘不可逆损坏直接重装系统,丢失一天生产数据……,后面再看这哥们文章,评论下面全表示是坑,果然把我埋了半截身!

因此决定头悬梁锥刺股,决定把这块的知识点记录在案,希望可以作为自己的醒“世”恒言!以供后来的兄弟避坑。

二、相关基础知识

在聊怎么磁盘扩容前,我们先补一点理论基础,了解一下可能涉及操作的知识点。

(1)术语理解

首先搞明白在Linux系统中所谓的系统分区、磁盘分区和文件系统之间的关联关系,不然扯半天还容易把自己整迷糊:

在Linux系统中,系统分区是指安装操作系统的分区,包含引导加载程序、操作系统内核和系统文件。系统分区通常被称为根分区(root partition)。磁盘分区是指将硬盘划分成一个个分区,每个分区可以挂载不同的文件系统,它的目的主要是为了更好地管理数据和文件系统。文件系统则是指对数据进行组织和管理的一种方式,它定义了如何存储、访问、命名和保护文件和目录等。在Linux系统中,每个磁盘分区都需要被格式化为特定的文件系统,以便于对数据进行存储和管理。

系统分区、磁盘分区和文件系统之间的关系是密不可分的。系统分区必须包含用于引导操作系统的文件和其他必要的系统文件。磁盘分区则是用于将硬盘划分为多个逻辑部分,每个部分可以挂载为一个独立的文件系统。而文件系统则是将数据组织成文件和目录的方式,并提供对它们进行管理和访问的接口。

简单来说,磁盘分区是在硬盘上划分出逻辑部分,而文件系统则是在每个逻辑部分上进行数据存储和管理的方式。而系统分区则是必须存在的,它用于存放操作系统和其他必要的系统文件,以便于计算机能够正常启动和运行。

就拿咱们最熟悉的Windows系统来说,Linux系统中的系统分区类似于Windows的系统盘(通常是C盘),用于安装操作系统和系统文件。而磁盘分区在Linux和Windows系统中都是将硬盘划分成多个区域,但在Windows中,每个分区通常会有一个盘符(如C、D、E等)来表示。文件系统上

Linux系统中,常用的文件系统包括ext4、XFS等,用于组织和管理文件。而Windows系统常用的其实也有,其中就包括NTFS、FAT32等,也是用于存储和管理文件。只是由于Windows系统都是可视化的,所以平常不怎么常看到。比如这里我的两个盘就是NNTFS的,如图:

在Windows系统上磁盘扩容由于都是可视化操作,所以更方便些,而linux系统上“万物皆文件”所以咱们可能要生疏一点,因此理解上可能相对少一点。 

然后再谈谈一个在命令中可能涉及的逻辑卷管理器LVM(Logical Volume Manager)。

LVM是一个强大的硬盘系统工具,无论在linux或者其他类似的系统,都是非常的好用。 传统分区使用固定大小分区,重新调整大小十分麻烦,但是LVM可以创建和管理“逻辑”卷,而不是直接使用物理硬盘,也就是说在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。这样可以让管理员弹性的管理逻辑卷的扩大缩小,操作简单,而不损坏已存储的数据。可以随意将新的硬盘添加到LVM,以直接扩展已经存在的逻辑卷,LVM并不需要重启就可以让内核知道分区的存在。现在有两个Linux版本的LVM,分别是 LVM1,LVM2。LVM1是一种已经被认为稳定了几年的成熟产品,LVM2 是最新最好的LVM版本。 LVM2几乎完全向后兼容使用LVM1创建的卷。此例外是快照(在升级到LVM 2之前,必须删除快照卷)。

一般现在安装的CentOS7的系统可以通过命令查看是否安装过:

[root@localhost ~]# rpm -aq |grep lvm
lvm2-libs-2.02.187-6.el7_9.5.x86_64
llvm-private-7.0.1-1.el7.x86_64
lvm2-2.02.187-6.el7_9.5.x86_64

与LVM相关的术语如下:

  1. 物理存储介质(The physical media):这里指系统的存储设备:硬盘,如:/dev/hda1、/dev/sda等等,是存储系统最低层的存储单元。
  2. 物理卷(physical volume):物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
  3. 卷组(Volume Group):LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。
  4. 逻辑卷(logical volume):LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。
  5. PE(physical extent):每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。
  6. LE(logical extent):逻辑卷也被划分为被称为LE(Logical Extents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。

简单来说就是:

  • VG(Volume Group): 假设我们有一块硬盘,可以将其视为一个存储池,这个存储池就是Volume Group(VG)。VG是由一个或多个物理卷(PV)组成的逻辑概念,用于管理存储空间。
  • PV(Physical Volume): 在这个硬盘中,我们将硬盘的一个区域划分为一个物理卷(PV)。PV是实际的硬盘分区,它是VG的基本组成单元,用于存储数据。多个PV可以组成一个VG。
  • LV(Logical Volume): 在VG中,我们可以划分出逻辑卷(LV),就像从存储池中划分出一部分空间给特定用途。LV是用户可以使用的逻辑存储单元,它类似于硬盘上的一个分区。
  • PE(Physical Extent): PV被划分为一个个的物理区块,每个物理区块称为物理扩展(PE)。PE是VG的最小分配单元,用于分配给逻辑卷。
  • LE(Logical Extent): LV也被划分为一个个的逻辑区块,每个逻辑区块称为逻辑扩展(LE)。LE是LV的最小分配单元,用于存储数据。

他们间的概念关系:

  1. 一个VG可以包含多个PV,PV是硬盘的物理分区。
  2. VG内的空间以PE为单位管理,每个PE由一个PV提供。
  3. LV是从VG中分配出来的逻辑存储单元,逻辑上划分为LE。
  4. 用户在LV上进行文件系统的操作,而LV的空间由PE提供。

(2)相关命令学习

1、磁盘管理相关命令

Linux 磁盘管理常用三个命令为 df、du 和 fdisk。

  • df(英文全称:disk free):列出文件系统的整体磁盘使用量
  • du(英文全称:disk used):检查磁盘空间使用量
  • fdisk:用于磁盘分区
  • mkfs(英文全拼:make file system):用于在磁盘分区建立文件系统

df命令

参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

语法:df [-ahikHTm] [目录或文件名]

选项与参数:

  • -h:以人类可读的方式显示输出结果(例如,使用 KB、MB、GB 等单位)。

  • -T:显示文件系统的类型。

  • -t <文件系统类型>:只显示指定类型的文件系统。

  • -i:显示 inode 使用情况。

  • -H:该参数是 -h 的变体,但是使用 1000 字节作为基本单位而不是 1024 字节。这意味着它会以 SI(国际单位制)单位(例如 MB、GB)而不是二进制单位(例如 MiB、GiB)来显示磁盘使用情况。

  • -k:这个选项会以 KB 作为单位显示磁盘空间使用情况。

  • -a:该参数将显示所有的文件系统,包括虚拟文件系统,例如 procsysfs 等。如果没有使用该选项,默认情况下,df 命令不会显示虚拟文件系统。

比如我现在列出系统内的所有文件系统:

[root@localhost ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 1.9G     0  1.9G    0% /dev
tmpfs                    1.9G     0  1.9G    0% /dev/shm
tmpfs                    1.9G   13M  1.9G    1% /run
tmpfs                    1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root   46G   17G   29G   37% /
/dev/sda1               1014M  242M  773M   24% /boot
overlay                   46G   17G   29G   37% /var/lib/docker/overlay2/540f4b07210a20acbc4c81c5d33cde8281be3c5c89e7a1d49d57c73b904b6ec1/merged
overlay                   46G   17G   29G   37% /var/lib/docker/overlay2/7bf9d0fdf4fcbfb17691d268808de5fa0ed21dd130f28efba863375c182f0bc3/merged
overlay                   46G   17G   29G   37% /var/lib/docker/overlay2/175994a19cf40607424f6ac691332e4289fcd068f527ad64db8a3a05f594ae0c/merged
overlay                   46G   17G   29G   37% /var/lib/docker/overlay2/5dacbb3123a0976e9b407c3efd7c33807d5856d5bf2305baf8ec9daee8d41b0a/merged
overlay                   46G   17G   29G   37% /var/lib/docker/overlay2/31cdd48d2dcb17c688e71ed1d978107b6ddc1049b761b3b80f49ad3b245e524f/merged
overlay                   46G   17G   29G   37% /var/lib/docker/overlay2/ac7261b87347d35eb3446a8183a28a71e0056279979b26c2f546a606ad3f4a48/merged
overlay                   46G   17G   29G   37% /var/lib/docker/overlay2/5be703dea08e60db244458e386d705b5cc026907b5d2dc3d3226f151a5622111/merged
tmpfs                    378M   32K  378M    1% /run/user/0
/dev/sr0                 4.5G  4.5G     0  100% /run/media/root/CentOS 7 x86_64

或者如果我们想知道某个目录挂载在那个文件系统下:

[root@localhost ~]# df -h /opt
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   46G   17G   29G   37% /

这样在做文件系统扩容时就可以为相应的文件目录做数据备份了。

du命令

Linux du(英文全拼:disk usage)命令用于显示目录或文件的大小。du命令也是查看使用空间的,但是与 df 命令不同的是du 命令是对文件和目录磁盘使用的空间的查看,显示指定的目录或文件所占用的磁盘空间。。

语法:du [-ahskm] 文件或目录名称

参数说明

  • -a或-all 显示目录中个别文件的大小。
  • -b或-bytes 显示目录或文件大小时,以byte为单位。
  • -c或--total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
  • -D或--dereference-args 显示指定符号连接的源文件大小。
  • -h或--human-readable 以K,M,G为单位,提高信息的可读性。
  • -H或--si 与-h参数相同,但是K,M,G是以1000为换算单位。
  • -k或--kilobytes 以1024 bytes为单位。
  • -l或--count-links 重复计算硬件连接的文件。
  • -L<符号连接>或--dereference<符号连接> 显示选项中所指定符号连接的源文件大小。
  • -m或--megabytes 以1MB为单位。
  • -s或--summarize 仅显示指定目录或文件的总大小,而不显示其子目录的大小。
  • -S或--separate-dirs 显示个别目录的大小时,并不含其子目录的大小。
  • -x或--one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
  • -X<文件>或--exclude-from=<文件> 在<文件>指定目录或文件。
  • --exclude=<目录或文件> 略过指定的目录或文件。
  • --max-depth=<目录层数> 超过指定层数的目录后,予以忽略。
  • --help 显示帮助。
  • --version 显示版本信息。

比如我现在检查根目录底下每个目录所占用的容量

[root@localhost ~]# du -sm /*
0	/bin
209	/boot
695	/data
0	/dev
43	/etc
0	/home
0	/lib
0	/lib64
0	/media
0	/mnt
6987	/opt
0	/proc
6	/root
4598	/run
0	/sbin
0	/srv
0	/sys
1	/tmp
4145	/usr
9253	/var

通配符 * 来代表每个目录。可以看到与 df 不一样的是,du其实会直接到文件系统内去搜寻所有的文件数据。

 fdisk命令

fdisk 是一个创建和维护分区表的程序,它兼容 DOS 类型的分区表、BSD 或者 SUN 类型的磁盘列表。

语法 fdisk [必要参数][选择参数]

必要参数:

  • -l 列出素所有分区表
  • -u 与 -l 搭配使用,显示分区数目

选择参数:

  • -s<分区编号> 指定分区
  • -v 版本信息

菜单操作说明

  • m :显示菜单和帮助信息
  • a :活动分区标记/引导分区
  • d :删除分区
  • l :显示分区类型
  • n :新建分区
  • p :显示分区信息
  • q :退出不保存
  • t :设置分区号
  • v :进行分区检查
  • w :保存修改
  • x :扩展应用,高级功能

 比如我现在查看系统内的所有磁盘分区信息:

[root@localhost ~]# fdisk -l

磁盘 /dev/sda:53.7 GB, 53687091200 字节,104857600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0000d1ab

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   104857599    51379200   8e  Linux LVM
# 设备文件名       开始磁柱    结束磁柱  1K大小容量  Hex代码  磁盘分区槽内的系统

磁盘 /dev/mapper/centos-root:48.4 GB, 48444211200 字节,94617600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/mapper/centos-swap:4160 MB, 4160749568 字节,8126464 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

早期的Linux发行版在磁盘分区时采用的是柱面表示法,现在通常会采用扇区的表示方法,通常会更直观一些,fdisk默认使用扇区的表示方法。所以这段展示信息详情如下:

首先第一个磁盘名为: /dev/sda

  • 容量: 53.7 GB,即53687091200字节,拥有104857600个扇区。
  • 扇区大小: 每个扇区大小为512字节,逻辑扇区和物理扇区大小均为512字节。
  • I/O大小: 最小和最佳I/O大小均为512字节。
  • 磁盘标签类型: dos,表示采用传统的MBR分区表。
  • 磁盘标识符: 0x0000d1ab,用于唯一标识磁盘。

然后再它的基础上系统进行了自动分区,分区信息信息如下:

/dev/sda1:

  • 起始扇区: 2048
  • 结束扇区: 2099199
  • 容量: 1 GB (1048576个扇区)
  • Id: 83,表示Linux分区
  • Boot: *,表示引导分区

/dev/sda2:

  • 起始扇区: 2099200
  • 结束扇区: 104857599
  • 容量: 48.8 GB (51379200个扇区)
  • Id: 8e,表示Linux LVM分区

而/dev/mapper/centos-root和/dev/mapper/centos-swap则是在/dev/sda2分区下建立的两个文件系统前者主要挂载了系统根目录,占用磁盘大小为48.4GB。后者则代表交换分区,也就类似Windows的虚拟内存,当系统的物理内存不够用的时候,Swap分区就会把硬盘内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap分区中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。它们间的空间关系也可以用lsblk命令来查看:

[root@localhost ~]# 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 45.1G  0 lvm  /
  └─centos-swap 253:1    0  3.9G  0 lvm  [SWAP]
sr0              11:0    1  4.4G  0 rom  /run/media/root/CentOS 7 x86_64

显示字段信息如下:

  • NAME:设备名称,如/dev/sda

  • MAJ:MIN:设备的主次设备号。

  • RM:如果设备是可移动设备(如USB),则显示1,否则为0

  • SIZE:设备的总大小。

  • RO:如果设备是只读的,则显示1,否则为0

  • TYPE:设备的类型,如磁盘、分区等。

  • MOUNTPOINT:设备的挂载点,如果已经挂载。

可见centos-root和centos-swap的设备类型都是lvm的,也就是说这两个分区都是LVM(逻辑卷管理)格式的,后面可以使用lvm系列命令进行磁盘管理。

fdisk除了用于查看磁盘分区信息外,也可以用作磁盘管理,比如磁盘的增删改,这里仅对功能菜单简单介绍:

[root@localhost ~]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.23.2)。

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


命令(输入 m 获取帮助):m
命令操作
   a   toggle a bootable flag         #设置可引导标记
   b   edit bsd disklabel             #修改bsd的磁盘标签
   c   toggle the dos compatibility flag  #设置DOS操作系统兼容标记
   d   delete a partition             #删除一个分区
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types #显示已知的分区类型,其中82为Linux swap分区,83为Linux分区
   m   print this menu                #显示帮助信息
   n   add a new partition            #增加一个新的分区
   o   create a new empty DOS partition table #创建一个新的空白的DOS分区表
   p   print the partition table      #显示磁盘当前的分区表
   q   quit without saving changes    #退出fdisk程序,不保存任何修改
   s   create a new empty Sun disklabel #创建一个新的空白的Sun磁盘标签
   t   change a partition's system id #改变一个分区的系统号码(比如把Linux Swap分区改为Linux分区)
   u   change display/entry units     #改变显示记录单位
   v   verify the partition table     #对磁盘分区表进行验证
   w   write table to disk and exit   #保存修改结果并退出fdisk程序
   x   extra functionality (experts only) #特殊功能

命令(输入 m 获取帮助):q

mkfs命令 

Linux mkfs(英文全拼:make file system)命令用于在特定的分区上建立 linux 文件系统。

使用方式 : mkfs [-V] [-t fstype] [fs-options] filesys [blocks]

参数 

  • device : 预备检查的硬盘分区,例如:/dev/sda1
  • -V : 详细显示模式
  • -t : 给定档案系统的型式,Linux 的预设值为 ext2
  • -c : 在制做档案系统前,检查该partition 是否有坏轨
  • -l bad_blocks_file : 将有坏轨的block资料加到 bad_blocks_file 里面
  • block : 给定 block 的大小

 比如现在需要将sda6分区格式化为ext3格式:

[root@localhost ~]# mkfs -t ext3 /dev/sda6 

除了这个以外,也有一些有一些特定文件系统的格式化命令,比如mkfs.ext4、mkfx.xfs等等。例如将一个设备块格式化为ext4格式的:

[root@localhost ~]# mkfs.ext4 /dev/sda4   //将sda4格式成ext4格式
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5241540 blocks
262077 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
    4096000

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 22 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

2、LVM管理相关命令

物理卷工具

  1. pvcreate:用于创建物理卷(Physical Volume),即将物理磁盘划分成逻辑卷管理的一部分。使用方式:pvcreate <物理磁盘>

  2. pvresize:用于调整物理卷的大小。使用方式:pvresize <物理卷名称>

  3. pvdisplay:用于显示物理卷的信息,包括物理卷名称、物理卷大小、使用情况等。使用方式:pvdisplay [<物理卷名称>]

  4. pvmove:用于迁移物理卷上的数据到其他物理卷。使用方式:pvmove <源物理卷> <目标物理卷>

  5.  pvremove:删除一个物理卷(也就是从物理卷中删除一个LVM标签)

卷组工具

  1. vgcreate:用于创建卷组(Volume Group),即将一个或多个物理卷组织在一起以创建逻辑卷。使用方式:vgcreate <卷组名称> <物理卷1> [<物理卷2> ...]

  2. vgextend:用于将物理卷添加到已存在的卷组中。使用方式:vgextend <卷组名称> <物理卷>

  3. vgdisplay:用于显示卷组的信息,包括卷组名称、卷组大小、物理卷使用情况等。使用方式:vgdisplay [<卷组名称>]

  4.  vgreduce:从卷组中删除一个物理卷(也就是缩小卷组)    

  5.  vgremove:删除一个卷组

逻辑卷工具

  1. lvdisplay:用于显示逻辑卷的信息,包括逻辑卷名称、逻辑卷大小、所在卷组等。使用方式:lvdisplay [<逻辑卷名称>]

  2. lvextend:用于调整逻辑卷的大小。使用方式:lvextend -L [+|-]<大小> <逻辑卷名称>

  3. lvcreate:用于创建逻辑卷(Logical Volume),即在卷组中创建逻辑容器以存储数据。使用方式:lvcreate -L <逻辑卷大小> -n <逻辑卷名称> <卷组名称>

  4.  lvreduce:缩小逻辑卷(也就是从一个逻辑卷中减少一些LE)    

  5.  lvremove:从系统中删除一个逻辑卷 

三、磁盘操作场景汇总

(1)添加新硬盘后挂载到已有目录进行扩容

第一种就是我们给服务器添加新的硬盘时,需要把新增的内存扩充到内存不足的目录,比如我们将新添加的硬盘内存扩充到根目录下。那么通常如果已添加硬盘后列出可用设备块信息时是这样的信息:

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   80G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   49G  0 part 
  ├─centos-root 253:0    0 45.1G  0 lvm  /
  └─centos-swap 253:1    0  3.9G  0 lvm  [SWAP]
sdb               8:16   0    1T  0 disk
sr0              11:0    1  4.4G  0 rom  /run/media/root/CentOS 7 x86_64

这里就表示一个新增的外部设备块sdb已经被识别出来了。但是这个硬盘还有没有创建分区,因此下一步需要通过fdisk来创建分区。

但是在这之前我们为了预防万一,建议先把服务器上的重要信息先做一个备份!!!因为涉及到扩容操作,如果期间有操作失误,导致数据不慎丢失就傻逼了。 

Step1:重要数据备份

[root@localhost ~]# tar -cf /tmp/home_bak.tar /home/ #或其他目录下的重要数据

Step2:创建新分区

[root@localhost dev]# fdisk /dev/sdb      
欢迎使用 fdisk (util-linux 2.23.2)。

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


命令(输入 m 获取帮助):m
命令操作
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

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

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

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

此时可以看到分区已经新建完成:

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   80G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   49G  0 part 
  ├─centos-root 253:0    0 45.1G  0 lvm  /
  └─centos-swap 253:1    0  3.9G  0 lvm  [SWAP]
sdb               8:16   0    1T  0 disk
└─sdb1            8:17   0 1024G  0 part 
sr0              11:0    1  4.4G  0 rom  /run/media/root/CentOS 7 x86_64

Step3:创建物理卷

[root@localhost dev]# pvcreate /dev/sdb1
 Physical volume "/dev/sdb1" successfully created.
[root@localhost dev]# 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               tyCr3t-QebO-CRBN-qBci-m7d6-vcix-YpqTNq

 "/dev/sdb1" is a new physical volume of "<1024.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name               
  PV Size               <1024.00 GiB 
  Allocatable           NO 
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               r5oBD6-5Bf0-41E9-A3B4-aA54-FaA9-U9011a

Step4:扩展卷分组 

 这里需要先查看一下系统卷分组名称:

[root@localhost ~]# 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               <49.00 GiB
  PE Size               4.00 MiB
  Total PE              12543
  Alloc PE / Size       12542 / 48.99 GiB
  Free  PE / Size       1 / 4.00 MiB
  VG UUID               wsUv5j-JYh8-FmCi-Cw3b-II8l-5oOf-GS1rzm
[root@localhost ~]# vgdisplay -v
  --- 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               <49.00 GiB
  PE Size               4.00 MiB
  Total PE              12543
  Alloc PE / Size       12542 / 48.99 GiB
  Free  PE / Size       1 / 4.00 MiB
  VG UUID               wsUv5j-JYh8-FmCi-Cw3b-II8l-5oOf-GS1rzm
   
  --- Logical volume ---
  LV Path                /dev/centos/swap
  LV Name                swap
  VG Name                centos
  LV UUID                LNIkPN-sTSF-2jK0-K7da-RXpW-3zon-PLo3AC
  LV Write Access        read/write
  LV Creation host, time localhost, 2024-05-06 10:19:07 +0800
  LV Status              available
  # open                 2
  LV Size                <3.88 GiB
  Current LE             992
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:1
   
  --- Logical volume ---
  LV Path                /dev/centos/root
  LV Name                root
  VG Name                centos
  LV UUID                mFEGy0-W4kH-GpJg-WKy1-CzTQ-MXlr-AJJAAC
  LV Write Access        read/write
  LV Creation host, time localhost, 2024-05-06 10:19:07 +0800
  LV Status              available
  # open                 1
  LV Size                <45.12 GiB
  Current LE             11550
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0
   
  --- Physical volumes ---
  PV Name               /dev/sda2     
  PV UUID               tyCr3t-QebO-CRBN-qBci-m7d6-vcix-YpqTNq
  PV Status             allocatable
  Total PE / Free PE    12543 / 1

可以看到该服务器上VG Name都是centos,并且现在只有两个逻辑卷分别是root和swap,所以接下来对改卷组进行扩展,也就是相当于把物理卷资源添加到centos这个卷组里。

[root@localhost dev]# vgextend centos /dev/sdb1
  Volume group "centos" successfully extended.

Step5:扩展逻辑卷

首先查看一下当前的逻辑卷信息:

[root@localhost ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/centos/swap
  LV Name                swap
  VG Name                centos
  LV UUID                LNIkPN-sTSF-2jK0-K7da-RXpW-3zon-PLo3AC
  LV Write Access        read/write
  LV Creation host, time localhost, 2024-05-06 10:19:07 +0800
  LV Status              available
  # open                 2
  LV Size                <3.88 GiB
  Current LE             992
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:1
   
  --- Logical volume ---
  LV Path                /dev/centos/root
  LV Name                root
  VG Name                centos
  LV UUID                mFEGy0-W4kH-GpJg-WKy1-CzTQ-MXlr-AJJAAC
  LV Write Access        read/write
  LV Creation host, time localhost, 2024-05-06 10:19:07 +0800
  LV Status              available
  # open                 1
  LV Size                <45.12 GiB
  Current LE             11550
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

此时可以看到挂载根目录的文件系统/dev/centos/root的lv大小是<45.12GB的,之前硬盘创建出来的物理卷大小时<1024GB的,并且已经扩展了卷分组。那么现在可以将扩展出来的内存大小分配到/dev/centos/root下了。因为不足1024GB,所以我们扩大1023GB即可。

[root@localhost ~]# lvextend -L +1023G /dev/centos/root
  Size of logical volume centos/root changed from 45GiB (11550 extents) to <1.04 TiB (287488 extents).
  Logical volume centos/root successfully resized.

如果添加全部磁盘资源可使用这个:

#添加全部新的磁盘资源
[root@localhost ~]#lvextend -l +100%FREE /dev/mapper/centos-root 

扩展完成后我们看一下磁盘分区情况:

[root@localhost ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 1.9G     0  1.9G    0% /dev
tmpfs                    1.9G     0  1.9G    0% /dev/shm
tmpfs                    1.9G   13M  1.9G    1% /run
tmpfs                    1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root   46G   17G   29G   37% /
/dev/sda1               1014M  242M  773M   24% /boot
tmpfs                    378M   24K  378M    1% /run/user/0
/dev/sr0                 4.5G  4.5G     0  100% /run/media/root/CentOS 7 x86_64

不难发现虽然我们扩展了 root的逻辑卷,但是实际内存大小并没有变化,因为这里展示的是文件系统。所以我们最后还得执行最后一步操作去同步/dev/mapper/centos-root文件系统。

Step6:同步文件系统

#针对xfs(centos7默认的文件系统)格式的文件系统进行格式化
[root@localhost ~]#xfs_growfs /dev/centos/root
meta-data=/dev/mapper/centos-root isize=512    agcount=4, agsize=6553360 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=128000, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=855, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 26214400 to 294387712

如果是ext4格式用resize2fs /dev/mapper/center-root 。

等待较长时间后就能看到下面的输出信息了。然后重新查看一下 磁盘使用情况:

[root@localhost ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 1.9G     0  1.9G    0% /dev
tmpfs                    1.9G     0  1.9G    0% /dev/shm
tmpfs                    1.9G   13M  1.9G    1% /run
tmpfs                    1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root    1T   17G    1T    1% /
/dev/sda1               1014M  242M  773M   24% /boot
tmpfs                    378M   24K  378M    1% /run/user/0
/dev/sr0                 4.5G  4.5G     0  100% /run/media/root/CentOS 7 x86_64

这样外部硬盘扩容就搞定了,检查一下文件情况是否正常可用,一般不会有影响,如果不慎丢失就将之前的将备份文件还原重新挂载一下就ok了。 

(2)虚拟机扩容后新建文件系统并分配内存

第二种情况就是在虚拟机上进行扩容,或者新增文件系统挂载扩容。比如:现在我的centos系统只有一个centos-root的文件系统,并且挂载了根目录,我希望扩容后新建文件系统挂载一个指定目录,比如/home,便于文件分区管理。

这里可以看到其实虚拟机上的扩容只是扩大虚拟磁盘大小,相当于扩大了默认的sda大小,但是他并不会应用到其他已在用的磁盘分区或者文件系统上: 

 实际区别我们可以启动centos系统后再看一看:

由于是在/dev/sda硬盘下新建文件系统分配内存,一般来说也可以分为两种划分方式:

(1)新建分区新增文件系统扩容。这种结果新增扩容后文件系统树状信息大概如下:

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   80G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
├─sda2            8:2    0   49G  0 part 
│ ├─centos-root 253:0    0 45.1G  0 lvm  /
│ └─centos-swap 253:1    0  3.9G  0 lvm  [SWAP]
└─sda3            8:3    0   30G  0 part 
  └─linux-home  253:2    0   29G  0 lvm  
sr0              11:0    1  4.4G  0 rom  

(2)同卷组新增文件系统扩容。文件系统树状信息大概如下:

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  100G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   99G  0 part 
  ├─centos-root 253:0    0 45.1G  0 lvm  /
  ├─centos-swap 253:1    0  3.9G  0 lvm  [SWAP]
  └─centos-home 253:2    0   40G  0 lvm  
sr0              11:0    1  4.4G  0 rom  

下面根据这两种情况我分别进行操作说明。开始操作流程:

首先仍然是重要数据备份,特别是涉及到挂载的目录文件,这里我们主要是需要重新挂载的home目录。这里第一步都是一致的。

 Step1:重要数据备份

[root@localhost ~]# tar -zcf /tmp/home_bak.gz /home/ #或其他目录下的重要数据

1、新建分区新增逻辑卷扩容

区别主要在第二步操作,如果我们新建分区那么第二部就可以直接新建磁盘分区了:

Step2:新建分区

[root@localhost ~]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.23.2)。

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


命令(输入 m 获取帮助):m
命令操作
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

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

命令(输入 m 获取帮助):t
分区号 (1-3,默认 3):3
Hex 代码(输入 L 列出所有代码):L

 0  空              24  NEC DOS         81  Minix / 旧 Linu bf  Solaris        
 1  FAT12           27  隐藏的 NTFS Win 82  Linux 交换 / So c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 隐藏的 C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux 扩展      c7  Syrinx         
 5  扩展            41  PPC PReP Boot   86  NTFS 卷集       da  非文件系统数据 
 6  FAT16           42  SFS             87  NTFS 卷集       db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux 纯文本    de  Dell 工具      
 8  AIX             4e  QNX4.x 第2部分  8e  Linux LVM       df  BootIt         
 9  AIX 可启动      4f  QNX4.x 第3部分  93  Amoeba          e1  DOS 访问       
 a  OS/2 启动管理器 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O        
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor      
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad 休 eb  BeOS fs        
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT            
 f  W95 扩展 (LBA)  54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC  
11  隐藏的 FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor      
12  Compaq 诊断     5c  Priam Edisk     a9  NetBSD          f4  SpeedStor      
14  隐藏的 FAT16 <3 61  SpeedStor       ab  Darwin 启动     f2  DOS 次要       
16  隐藏的 FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS    
17  隐藏的 HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
18  AST 智能睡眠    65  Novell Netware  b8  BSDI swap       fd  Linux raid 自动
1b  隐藏的 W95 FAT3 70  DiskSecure 多启 bb  Boot Wizard 隐  fe  LANstep        
1c  隐藏的 W95 FAT3 75  PC/IX           be  Solaris 启动    ff  BBT            
1e  隐藏的 W95 FAT1 80  旧 Minix       
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”

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

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
正在同步磁盘。

这里我们顺便修改了分区类型为lvm,主要是为了方便系统识别和管理,另外就是这样会顺便帮我们把分区格式化为ext4的文件系统格式。看到设备忙的情况下可以reboot重启一下系统,等待分区创建完成。

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   80G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
├─sda2            8:2    0   49G  0 part 
│ ├─centos-root 253:0    0 45.1G  0 lvm  /
│ └─centos-swap 253:1    0  3.9G  0 lvm  [SWAP]
└─sda3            8:3    0   30G  0 part 
sr0              11:0    1  4.4G  0 rom  

可以看到重启后新的分区sda3已经新建完成,并且将80G-50G=30G分配给了sda3。并且sda3已经变成ext4格式了,这是因为我们设置分区类型为lvm后,在创建LVM分区时,系统通常会默认将该分区格式化为ext4文件系统。

[root@localhost ~]# lsblk -f
NAME            FSTYPE      LABEL           UUID                                   MOUNTPOINT
sda                                                                                
├─sda1          xfs                         9b684762-37b4-4773-a8c7-b3bdb414c6d9   /boot
├─sda2          LVM2_member                 tyCr3t-QebO-CRBN-qBci-m7d6-vcix-YpqTNq 
│ ├─centos-root xfs                         8965db25-01db-435a-b64c-a7fd8dbf0d7b   /
│ └─centos-swap swap                        dc885773-c65a-4e33-85df-764380eecffe   [SWAP]
└─sda3          ext4                        992f20d7-329e-4830-8ab6-2f15d221d4ba   
sr0             iso9660     CentOS 7 x86_64 2022-07-26-15-09-17-00                 /run/media/root/CentOS 7 x86_64

这样就可以省一步格式化过程。然后就可以进行我们之前的常规操作了:

Step3:创建物理分区

[root@localhost ~]# pvcreate /dev/sda3
WARNING: ext4 signature detected on /dev/sda3 at offset 1080. Wipe it? [y/n]: y
  Wiping ext4 signature on /dev/sda3.
  Physical volume "/dev/sda3" successfully created.

 这里有个ext4的警告,输入y即可。

Step4:卷组扩容

没啥可说的,只要注意vg名称别搞错就行了,可以加到已有的卷组centos,也可以把这个物理卷加到新的卷组并创建。这里我新建一个名叫linux的卷组:

[root@localhost ~]# vgcreate linux /dev/sda3
  Volume group "linux" successfully created
[root@localhost ~]# vgdisplay
  --- Volume group ---
  VG Name               linux
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <30.00 GiB
  PE Size               4.00 MiB
  Total PE              7679
  Alloc PE / Size       0 / 0   
  Free  PE / Size       7679 / <30.00 GiB
  VG UUID               aHBUGi-C6FS-ggqY-c0UR-R6i5-vqkK-m2knhu
   
  --- Volume group ---
  VG Name               centos
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  15
  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               <49.00 GiB
  PE Size               4.00 MiB
  Total PE              12543
  Alloc PE / Size       12542 / 48.99 GiB
  Free  PE / Size       1 / 4.00 MiB
  VG UUID               wsUv5j-JYh8-FmCi-Cw3b-II8l-5oOf-GS1rzm

 Step5:创建逻辑分区

[root@localhost ~]# lvcreate -n home -L 30G linux
  Volume group "linux" has insufficient free space (7679 extents): 7680 required.
[root@localhost ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree  
  centos   1   2   0 wz--n- <49.00g   4.00m
  linux    1   0   0 wz--n- <30.00g <30.00g
[root@localhost ~]# lvcreate -n home -L 29G linux
  Logical volume "home" created.

这里开始用30G的时候发现可用的PE free已经不够了,实际能使用的大概7679*4Mb/1024大约29.99G。所以后面以29G分配分区内存。这样就建立了一个linux-home了。

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   80G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
├─sda2            8:2    0   49G  0 part 
│ ├─centos-root 253:0    0 45.1G  0 lvm  /
│ └─centos-swap 253:1    0  3.9G  0 lvm  [SWAP]
└─sda3            8:3    0   30G  0 part 
  └─linux-home  253:2    0   29G  0 lvm  
sr0              11:0    1  4.4G  0 rom  

Step6:挂载文件目录

顺带一提:如果前面没有sda3在第一步没有修改分区类型格式化文件系统(我上面已格式化为ext4)的话,这里一般需要执行个格式化文件系统操作。例如格式化为ext4类型的:

[root@localhost data]# mkfs.ext4 /dev/mapper/linux-home
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1966080 inodes, 7864320 blocks
393216 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2155872256
240 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成 

我们这里由于之前格式化过了,就不需要操作了,直接开始挂载文件目录就行了:

#查看fstype
[root@localhost data]# lsblk -f
NAME            FSTYPE      LABEL           UUID                                   MOUNTPOINT
sda                                                                                
├─sda1          xfs                         9b684762-37b4-4773-a8c7-b3bdb414c6d9   /boot
├─sda2          LVM2_member                 tyCr3t-QebO-CRBN-qBci-m7d6-vcix-YpqTNq 
│ ├─centos-root xfs                         8965db25-01db-435a-b64c-a7fd8dbf0d7b   /
│ └─centos-swap swap                        dc885773-c65a-4e33-85df-764380eecffe   [SWAP]
└─sda3          LVM2_member                 xwedB5-eG6l-PYDN-FCnB-3Vf1-q5Lt-wMh5ez 
  └─linux-home  ext4                                                                    
sr0             iso9660     CentOS 7 x86_64 2022-07-26-15-09-17-00                 /run/media/root/CentOS 7 x86_64
#临时挂载
[root@localhost data]# mount /dev/mapper/linux-home /home/
[root@localhost data]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 1.9G     0  1.9G    0% /dev
tmpfs                    1.9G     0  1.9G    0% /dev/shm
tmpfs                    1.9G   13M  1.9G    1% /run
tmpfs                    1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root   46G   17G   29G   37% /
/dev/sda1               1014M  242M  773M   24% /boot
tmpfs                    378M   32K  378M    1% /run/user/0
/dev/sr0                 4.5G  4.5G     0  100% /run/media/root/CentOS 7 x86_64
/dev/mapper/linux-home    30G   45M   28G    1% /home

采用mount挂载只是一种临时挂载方式, 重启后它就不会自动挂载,我们需要将这个挂载信息在/etc/fstab上配置一下,让他可以永久挂载。

/etc/fstab是用来存放文件系统的静态信息的文件,当系统启动的时候,系统会自动地从这个文件读取信息,并且会自动将此文件中指定的文件系统挂载到指定的目录。随便看一下吧:

[root@localhost data]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Mon May  6 10:19:09 2024
#
# 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/centos-root /                       xfs     defaults        0 0
UUID=9b684762-37b4-4773-a8c7-b3bdb414c6d9 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0

一般而言它包含6个字段,从前之后依次如下:

  1. 设备:设备字段指定要挂载的设备的路径或UUID。可以是硬盘分区、光盘、网络文件系统等。
  2. 挂载点:挂载点字段指定设备要挂载到的目录路径。当设备被挂载后,其内容将会在该目录下可见。
  3. 文件系统类型:文件系统类型字段指定设备上的文件系统类型,如ext4、NTFS、FAT32等。
  4. 挂载选项:挂载选项字段包含了挂载设备时的各种选项,如读写权限、自动挂载、权限控制等。
  5. 第一个0:第一个数字在/etc/fstab中表示文件系统的备份频率,通常用于磁盘备份工具。含义如下:0:不需要备份。1:每天备份。2:每周备份。3:每月备份。4:每年备份。5:根文件系统,需要备份。其中由于默认用户是没有安装备份工具的,所以这里它是0;
  6. 第二个0:指定了文件系统检查顺序,用于fsck命令检查文件系统时的顺序。具体含义如下:0:不需要进行文件系统检查。1:如果需要检查根文件系统,则在开机时进行检查。2:如果需要检查根文件系统,但不强制检查,则在开机时进行检查。其他数字:在开机时按照数字的顺序检查文件系统。

一般情况我们可以在文件末尾追加挂载信息来实现永久挂载,第一种就是用文件系统名挂载:

[root@localhost data]# cat >>/etc/fstab<<EOF
> /dev/mapper/linux-home /                     ext4     defaults        0 0
> EOF
[root@localhost data]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Mon May  6 10:19:09 2024
#
# 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/centos-root /                       xfs     defaults        0 0
UUID=9b684762-37b4-4773-a8c7-b3bdb414c6d9 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
/dev/mapper/linux-home /home                     ext4     defaults        0 0

另外也可以查到对应文件系统的UUID进行添加:

[root@localhost data]# blkid
/dev/sda1: UUID="9b684762-37b4-4773-a8c7-b3bdb414c6d9" TYPE="xfs" 
/dev/sda2: UUID="tyCr3t-QebO-CRBN-qBci-m7d6-vcix-YpqTNq" TYPE="LVM2_member" 
/dev/sda3: UUID="TYfFcq-fjQr-d0rY-1swD-IGwU-1Fwt-DJLebf" TYPE="LVM2_member" 
/dev/sr0: UUID="2022-07-26-15-09-17-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 
/dev/mapper/centos-root: UUID="8965db25-01db-435a-b64c-a7fd8dbf0d7b" TYPE="xfs" 
/dev/mapper/centos-swap: UUID="dc885773-c65a-4e33-85df-764380eecffe" TYPE="swap" 
/dev/mapper/centos-home: UUID="1e2d0e18-b617-4d37-93f6-773a3b301064" TYPE="ext4" 
[root@localhost data]# cat >>/etc/fstab<<EOF
> UUID="1e2d0e18-b617-4d37-93f6-773a3b301064"       ext4     defaults        0 0
> EOF
[root@localhost data]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Mon May  6 10:19:09 2024
#
# 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/centos-root /                       xfs     defaults        0 0
UUID=9b684762-37b4-4773-a8c7-b3bdb414c6d9 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
#/dev/mapper/linux-home /home                        ext4     defaults        0 0
UUID=1e2d0e18-b617-4d37-93f6-773a3b301064   /home      ext4     defaults        0 0

任选其一即可。 重启一下就能看到挂载用就可以生效了:

[root@localhost ~]# reboot

连接断开
连接主机...
连接主机成功
Last login: Thu May 23 16:55:25 2024 from 192.168.100.1
[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   80G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
├─sda2            8:2    0   49G  0 part 
│ ├─centos-root 253:0    0 45.1G  0 lvm  /
│ └─centos-swap 253:1    0  3.9G  0 lvm  [SWAP]
└─sda3            8:3    0   30G  0 part 
  └─linux-home 253:2    0   30G  0 lvm  /home
sr0              11:0    1  4.4G  0 rom  
[root@localhost ~]# df -h /home
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/linux-home   30G   45M   28G    1% /home

最后把备份文件恢复一下搞定。

2、同卷组新增逻辑卷扩容

如果是同卷组下新增,我们就不需要重新新增一个磁盘分区,而是想办法将新增的内存分配到sda2上即可。而sda2上的内存大小其实在LVM管理下都在卷组centos下,所以我们相当于想办法扩大卷组容量即可。

但是如果直接进行卷组扩容操作就会出现这种情况:

[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  100G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   49G  0 part 
  ├─centos-root 253:0    0 45.1G  0 lvm  /
  └─centos-swap 253:1    0  3.9G  0 lvm  [SWAP]
sr0              11:0    1  4.4G  0 rom  
[root@localhost ~]# vgextend centos /dev/sda2
  Physical volume '/dev/sda2' is already in volume group 'centos'
  Unable to add physical volume '/dev/sda2' to volume group 'centos'
  /dev/sda2: physical volume not initialized.

也就是说我们要重新初始化sda2才能进行分区 ,也就是需要重新对系统已有的/dev/sda2进行重新分区,另外分区时务必注意起始的扇区位置和之前保持一致。

Step2:/dev/sda2重新分区

[root@localhost data]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  100G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   49G  0 part 
  ├─centos-root 253:0    0 45.1G  0 lvm  /
  └─centos-swap 253:1    0  3.9G  0 lvm  [SWAP]
sr0              11:0    1  4.4G  0 rom  
[root@localhost data]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.23.2)。

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


命令(输入 m 获取帮助):m
命令操作
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

命令(输入 m 获取帮助):p

磁盘 /dev/sda:107.4 GB, 107374182400 字节,209715200 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0000d1ab

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   104857599    51379200   8e  Linux LVM

命令(输入 m 获取帮助):d
分区号 (1,2,默认 2):2
分区 2 已删除

命令(输入 m 获取帮助):p

磁盘 /dev/sda:107.4 GB, 107374182400 字节,209715200 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0000d1ab

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux

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

命令(输入 m 获取帮助):t
分区号 (1,2,默认 2):
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):p

磁盘 /dev/sda:107.4 GB, 107374182400 字节,209715200 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0000d1ab

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   209715199   103808000   8e  Linux LVM

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

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
正在同步磁盘。

[root@localhost data]# reboot

首先我们的操作需要通过fdisk将系统现有的sda2给删除掉,然后重新新建sda2并格式化分区类型。重启系统后执行一个重读分区信息表的命令:

[root@localhost ~]# partprobe
Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。

partprobe这个命令来自英文词组partition probe的缩写,其功能是重读分区表信息。该命令可将磁盘分区表变化信息通知给系统内核,请求操作系统重新加载分区表。有时我们在创建或删除分区设备后,系统并不会立即生效,这时就需要使用partprobe命令在不重启系统的情况下重新读取分区表信息,使新设备信息与系统同‍步。这里虽然出现了一个警告,但是没报错就代表重读成功了。接下来就可以进行LVM扩容了。

Step3:物理卷/dev/sda2扩容

 这里我们可以看到虽然重新对sda2进行分区了,但是sda2容量并没有发生变化。

[root@localhost ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sda2  centos lvm2 a--  <49.00g 4.00m

此时需要对这个物理卷进行扩容:

[root@localhost ~]# pvresize /dev/sda2
  Physical volume "/dev/sda2" changed
  1 physical volume(s) resized or updated / 0 physical volume(s) not resized
[root@localhost ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree 
  /dev/sda2  centos lvm2 a--  <99.00g 50.00g

这样此时的物理卷dev/sda2的内存大小就扩大了。 

Step4:新增逻辑卷并格式化文件系统

这个就与上一个场景下创建逻辑卷的操作流程没啥区别了:

[root@localhost ~]# lvcreate -L 40G -n home centos
  Logical volume "home" created.
[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  100G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   99G  0 part 
  ├─centos-root 253:0    0 45.1G  0 lvm  /
  ├─centos-swap 253:1    0  3.9G  0 lvm  [SWAP]
  └─centos-home 253:2    0   40G  0 lvm  
sr0              11:0    1  4.4G  0 rom  

如果sda2还有剩余空间可以顺便分给root,但是这里我的已经不够分了也就算了:

[root@localhost ~]# lvextend -l 100%FREE /dev/centos/root
  New size given (2561 extents) not larger than existing size (11550 extents)
[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  100G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   99G  0 part 
  ├─centos-root 253:0    0 45.1G  0 lvm  /
  ├─centos-swap 253:1    0  3.9G  0 lvm  [SWAP]
  └─centos-home 253:2    0   40G  0 lvm  
sr0              11:0    1  4.4G  0 rom  
[root@localhost ~]# lsblk -f
NAME            FSTYPE      LABEL           UUID                                   MOUNTPOINT
sda                                                                                
├─sda1          xfs                         9b684762-37b4-4773-a8c7-b3bdb414c6d9   /boot
└─sda2          LVM2_member                 tyCr3t-QebO-CRBN-qBci-m7d6-vcix-YpqTNq 
  ├─centos-root xfs                         8965db25-01db-435a-b64c-a7fd8dbf0d7b   /
  ├─centos-swap swap                        dc885773-c65a-4e33-85df-764380eecffe   [SWAP]
  └─centos-home                                                                    
sr0             iso9660     CentOS 7 x86_64 2022-07-26-15-09-17-00 

 但是意外发现centos-home这个对应的文件系统还未格式化,所以还得补充格式化一下:

[root@localhost ~]# mkfs.ext4 /dev/mapper/centos-home
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
2621440 inodes, 10485760 blocks
524288 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2157969408
320 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
[root@localhost ~]# lsblk -f
NAME            FSTYPE      LABEL           UUID                                   MOUNTPOINT
sda                                                                                
├─sda1          xfs                         9b684762-37b4-4773-a8c7-b3bdb414c6d9   /boot
└─sda2          LVM2_member                 tyCr3t-QebO-CRBN-qBci-m7d6-vcix-YpqTNq 
  ├─centos-root xfs                         8965db25-01db-435a-b64c-a7fd8dbf0d7b   /
  ├─centos-swap swap                        dc885773-c65a-4e33-85df-764380eecffe   [SWAP]
  └─centos-home ext4                        579c6093-871a-43c2-a531-b18d9605b250   
sr0             iso9660     CentOS 7 x86_64 2022-07-26-15-09-17-00  

这样后续就可以检查一下重要文件是否存在丢失情况了,如果丢失就将备份数据还原一下。然后就是上一个操作一样可以进行文件挂载操作了,这里就不重复赘述了。 

(3)文件系统间的容量调整 

这种就是当文件系统间初始内存分配不均时可能会涉及到的操作。比如我们安装docker后docker的日志文件没过多限制,造成其中对应的文件系统内存爆满了影响容器运行,此时可以将其他文件系统上的内存分配到该文件系统下 实现文件系统间的容量调整。

这里我们以现有系统进行操作,这里我们centos-root有21G左右可用,centos-home有刚分配的40G左右可用。

[root@localhost ~]# df -h /home /root
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-home 40G   45M   39G    1% /home
/dev/mapper/centos-root 46G   25G   21G   54% /

我们可以试一下将刚才centos-home下的内存分配10G左右到centos-root下,开始操作:

Step1:文件备份

这个不用多说,由于我们涉及到两个文件系统扩容操作, 数据备份也就更重要了,这里因为centos-home要缩减容量,因此优先要对centos-home挂载的/home目录内的数据进行备份,否则可能调整逻辑卷时可能造成文件丢失:

[root@localhost ~]# tar -cf /tmp/home_bak.tar /home/

然后可以将这个压缩包scp到其他服务器上,毕竟/tmp也属于根目录挂载范围。至于centos-root下的文件,由于是被扩容文件系统,在文件扩容时丢失文件的可能性比centos-home进行缩减操作来说相对较小,可根据个人意愿选择性备份,一般来说推荐备份。以防万一~ 

Step2:卸载需要缩减容量的文件系统对应的文件目录

这里顾名思义就是/home目录了,使用umount命令进行卸载即可:

[root@localhost ~]# umount /home

 如果有时候卸载时出现系统正忙,可根据提示使用fuser先终止使用/home文还能系统的进程然后再进行卸载操作。

[root@localhost ~]# fuser -km /home

 Step3:删除/home对应的逻辑卷

[root@localhost ~]# lvremove /dev/mapper/centos-home
Do you really want to remove active logical volume centos/home? [y/n]: y
  Logical volume "home" successfully removed

Step4:扩展根目录容器卷并扩展文件系统

[root@localhost ~]# lvextend -L +10G /dev/mapper/centos-root
  Size of logical volume centos/root changed from <45.12 GiB (11550 extents) to <55.12 GiB (14110 extents).
  Logical volume centos/root successfully resized.
[root@localhost ~]# lsblk -f
NAME            FSTYPE      LABEL           UUID                                   MOUNTPOINT
sda                                                                                
├─sda1          xfs                         9b684762-37b4-4773-a8c7-b3bdb414c6d9   /boot
└─sda2          LVM2_member                 tyCr3t-QebO-CRBN-qBci-m7d6-vcix-YpqTNq 
  ├─centos-root xfs                         8965db25-01db-435a-b64c-a7fd8dbf0d7b   /
  └─centos-swap swap                        dc885773-c65a-4e33-85df-764380eecffe   [SWAP]
sr0             iso9660     CentOS 7 x86_64 2022-07-26-15-09-17-00                 
[root@localhost ~]# xfs_growfs /dev/mapper/centos-root
meta-data=/dev/mapper/centos-root isize=512    agcount=4, agsize=2956800 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=11827200, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=5775, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 11827200 to 14448640
[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  100G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   99G  0 part 
  ├─centos-root 253:0    0 55.1G  0 lvm  /
  └─centos-swap 253:1    0  3.9G  0 lvm  [SWAP]
sr0              11:0    1  4.4G  0 rom  

 Step5:重建home文件系统

首先需要将删除的逻辑卷重新创建回来,但是这里在计算磁盘容量时要比正常小1G左右较为合适,比如我这块原来/home是40G,现在分配10G后正常可以用30G,但是系统自行计算不一定刚好够,所以建议29G。

[root@localhost ~]# lvcreate -L 29G -n /dev/mapper/centos-home
  Logical volume "home" created.
[root@localhost ~]# mkfs.xfs /dev/mapper/centos-home
meta-data=/dev/mapper/centos-home isize=512    agcount=4, agsize=1900544 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=7602176, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=3712, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  100G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   99G  0 part 
  ├─centos-root 253:0    0 55.1G  0 lvm  /
  ├─centos-swap 253:1    0  3.9G  0 lvm  [SWAP]
  └─centos-home 253:2    0   29G  0 lvm  
sr0              11:0    1  4.4G  0 rom  

Step6:挂载原目录并恢复文件

[root@localhost data]# cat >>/etc/fstab<<EOF
> /dev/mapper/centos-home /                     xfs     defaults        0 0
> EOF
[root@localhost data]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Mon May  6 10:19:09 2024
#
# 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/centos-root /                       xfs     defaults        0 0
UUID=9b684762-37b4-4773-a8c7-b3bdb414c6d9 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
/dev/mapper/centos-home /home                     xfs     defaults        0 0
[root@localhost data]#reboot
连接断开
连接主机...
连接主机成功
Last login: Thu May 30 15:52:13 2024 from 192.168.100.1
'abrt-cli status' timed out
[root@localhost ~]#tar -zxf /tmp/home_bak.gz -C /home/
[root@localhost ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 1.9G     0  1.9G    0% /dev
tmpfs                    1.9G     0  1.9G    0% /dev/shm
tmpfs                    1.9G   13M  1.9G    1% /run
tmpfs                    1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root   56G   25G   31G   45% /
/dev/mapper/centos-home   29G   33M   29G    1% /home
/dev/sda1               1014M  242M  773M   24% /boot
tmpfs                    378M     0  378M    0% /run/user/0

这样磁盘就完成了文件系统间的扩容调整了。

四、后记

关于磁盘扩容涉及文件系统大小调整这块,一定要切记:没把握先备份!!!先备份!!!备份!!!

码字不易,希望这篇磁盘扩容类的汇总文章能帮助有需要的同学~

文章不足之处欢迎指正~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/673119.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python 二叉数的实例化及遍历

首先创建一个这样的二叉树&#xff0c;作为我们今天的实例。实例代码在下方。 #创建1个树类型 class TreeNode:def __init__(self,val,leftNone,rightNone):self.valvalself.leftleftself.rightright #实例化类 node1TreeNode(5) node2TreeNode(6) node3TreeNode(7) node4Tre…

【数据结构与算法】七大排序算法(下)

【数据结构与算法】七大排序算法(下) &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;数据结构与算法&#x1f345; &#x1f33c;文章目录&#x1f33c; 2.3 交换排序 2.3.1 冒泡排序 2.3.2 快速排序 2.3.3 快速排序(非递归) 2.4 归并…

【一刷《剑指Offer》】面试题 30:最小的 k 个数

牛客对应题目链接&#xff1a;最小的K个数_牛客题霸_牛客网 (nowcoder.com) 力扣对应题目链接&#xff1a;LCR 159. 库存管理 III - 力扣&#xff08;LeetCode&#xff09; 核心考点 &#xff1a; topK 问题。 一、《剑指Offer》内容 二、分析题目 1、排序&#xff08;O(Nlo…

数据结构之二叉搜索树(TreeSetTreeMap)

目录 一.搜索树 1.1概念 1.2适用场景 2.二叉搜索树的基本操作 2.1二叉搜索树的定义 2.2查找 2.1.1基本思路 2.3插入 2.3.1基本思路 2.4删除 2.4.1基本思路 2.5遍历 2.6性能分析 二.TreeSet Map和Set 1.概念 2.模型 1.定义 2.基本操作 三.TreeMap 1.定义 2.基…

C语言笔记第9篇:字符函数和字符串函数

在编程的过程中&#xff0c;我们经常要处理字符和字符串&#xff0c;为了方便操作字符和字符串&#xff0c;C语言标准库中提供了一系列库函数&#xff0c;接下来我们就学习一下这些函数。 一、字符函数 1、字符分类函数 C语言中有一系列的函数是专门做字符分类的&#xff0c;…

MyBatis一、MyBatis简介

MyBatis一、MyBatis简介 MyBatis 简介MyBatis 定义MyBatis 历史MyBatis 特性1. 灵活性和易用性2. 性能优化3. 易于集成4. 支持多种数据库5. 插件机制6. 其他特性 MyBatis 下载和其他持久化层技术对比 MyBatis 简介 MyBatis 定义 MyBatis 是一个优秀的持久层框架&#xff0c;它…

240602-通过命令行实现HuggingFace文件上传

A. 登录显示 A.1 MacOS A.2 Windows B. 操作步骤 B.1 操作细节 要通过命令行将文件上传到 Hugging Face&#xff0c;可以使用 huggingface-cli 工具。以下是详细步骤&#xff1a; 安装 huggingface_hub 包&#xff1a; 首先&#xff0c;确保已经安装了 huggingface_hub 包。可…

MySQL—函数—数值函数(基础)

一、引言 首先了解一下常见的数值函数哪些&#xff1f;并且直到它们的作用&#xff0c;并且演示这些函数的使用。 二、数值函数 常见的数值函数如下&#xff1a; 注意&#xff1a; 1、ceil(x)、floor(x) &#xff1a;向上、向下取整。 2、mod(x,y)&#xff1a;模运算&#x…

Wpf 使用 Prism 开发MyToDo应用程序

MyToDo 是使用 WPF &#xff0c;并且塔配Prism 框架进行开发的项目。项目中进行了前后端分离设计&#xff0c;客户端所有的数据均通过API接口获取。适合新手入门学习WPF以及Prism 框架使用。 首页统计以及点击导航到相关模块功能待办事项增删改查功能备忘录增删改查功能登录注册…

跨模型知识融合:大语言模型的知识融合

大语言模型&#xff08;LLMs&#xff09;在多个领域的应用日益广泛&#xff0c;但确保它们的行为与人类价值观和意图一致却充满挑战。传统对齐方法&#xff0c;例如基于人类反馈的强化学习&#xff08;RLHF&#xff09;&#xff0c;虽取得一定进展&#xff0c;仍面临诸多难题&a…

7-18 对象关系映射(orm_name)---PTA实验C++

一、题目描述 一开始看到对象关系映射&#xff0c;其实我是拒绝的。这三个词凑一块&#xff0c;能是给C初学者的题吗&#xff1f; 再仔细读需求&#xff0c;才发现在课设项目已经用过这功能。Object Relational Mapping&#xff08;ORM&#xff09;就是面向对象&#xff08;O…

大降分!重邮计算机专硕复试线大降50分!重庆邮电计算机考研考情分析!

重庆邮电大学&#xff08;Chongqing University of Posts and Telecommunications&#xff09;简称重邮&#xff0c;坐落于中国重庆市主城区南山风景区内&#xff0c;是中华人民共和国工业和信息化部与重庆市人民政府共建的教学研究型大学&#xff0c;入选国家“中西部高校基础…

【30天精通Prometheus:一站式监控实战指南】第13天:graphite_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细

亲爱的读者们&#x1f44b;   欢迎加入【30天精通Prometheus】专栏&#xff01;&#x1f4da; 在这里&#xff0c;我们将探索Prometheus的强大功能&#xff0c;并将其应用于实际监控中。这个专栏都将为你提供宝贵的实战经验。&#x1f680;   Prometheus是云原生和DevOps的…

企业im即时通讯WorkPlus私有化部署适配国产信创环境

在信息化时代&#xff0c;高效的沟通和协作对于企业的运营至关重要。企业IM即时通讯平台提供了一种便捷、实时的沟通工具&#xff0c;旨在改善企业的内部和外部沟通效率。然而&#xff0c;随着企业对数据安全性和隐私保护的要求不断提高&#xff0c;许多企业开始选择私有化部署…

【Qt知识】disconnect

在Qt框架中&#xff0c;disconnect函数用于断开信号与槽之间的连接。当不再需要某个信号触发特定槽函数时&#xff0c;或者为了防止内存泄漏和重复执行问题&#xff0c;你可以使用disconnect来取消这种关联。disconnect函数的基本用法可以根据不同的需求采用多种形式&#xff0…

【ORB_SLAM系列3】—— 如何在Ubuntu18.04中使用自己的单目摄像头运行ORB_SLAM3(亲测有效,踩坑记录)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、ORB_SLAM3源码编译二、ORB_SLAM3实时单目相机测试1. 查看摄像头的话题2. 运行测试 三. 运行测试可能的报错1. 报错一(1) 问题描述(2) 原因分析(3) 解决 2. …

Windows下如何把Oracle从C盘整体迁移到D盘?

&#xff08;一&#xff09;写这篇文章的起因 这篇文章适合刚接触的技术小白follow操作&#xff0c;整理文章不易&#xff0c;大家多多点赞转发 起因是昨天有会员在群里发问&#xff0c;客户要把Oracle整个目录从C盘挪到D盘怎么弄 客户那边的人把Oracle整个程序数据文件都安装…

使用 Kali Linux 实现 Smurf 攻击

一、介绍 Smurf攻击是一种分布式拒绝服务&#xff08;DDoS&#xff09;攻击&#xff0c;利用IP协议中的ICMP&#xff08;Internet Control Message Protocol&#xff09;请求和网络的广播特性&#xff0c;使目标系统被大量ICMP回复包淹没&#xff0c;从而导致系统无法正常提供…

ZDH-数据管理模块

目录 主题 项目源码 预览地址 安装包下载地址 数据管理服务 数据资源管理 数据资源权限 数据资源血缘 总结 感谢支持 主题 本篇文章主要介绍ZDH-数据管理服务及应用场景 项目源码 zdh_web: GitHub - zhaoyachao/zdh_web: 大数据采集,抽取平台 预览地址 后台管理…

【C++】类和对象——构造和析构函数

目录 前言类的六个默认构造函数构造函数1.构造函数的概念2.构造函数的特性 初始化列表1.构造函数整体赋值2.初始化列表 析构函数1.析构函数的概念2.析构函数的特性 前言 类和对象相关博客&#xff1a;【C】类和对象   我们前面一个内容已经讲了关于类好对象的初步的一些知识&…