Linux磁盘管理

推荐链接:

菜鸟 Linux 磁盘管理

Linux磁盘管理—-分区格式化挂载fdisk、mkfs、mount

相关命令:

菜鸟 df 命令df (Unix) - 维基百科

菜鸟 du 命令du (Unix) - 维基百科

菜鸟 fdisk 命令

菜鸟 parted 命令GNU Parted - 维基百科

菜鸟 mkfs 命令

菜鸟 mount 命令mount (Unix) - 维基百科 —> 临时挂载

菜鸟 umount命令

菜鸟 fsck 命令fsck - 维基百科

菜鸟 lsblk 命令

菜鸟 partprobe 命令

菜鸟 resize2fs 命令

磁盘使用流程

  • 物理硬盘 -> 磁盘分区 -> LVM管理(PV-VG-LV) -> 格式化文件系统 -> 挂载使用
  • 物理硬盘 -> LVM管理 (PV-VG-LV) -> 格式化文件系统 -> 挂载使用 整块盘给LVM
  • 物理硬盘 -> RAID阵列 -> LVM管理(PV-VG-LV) -> 格式化文件系统 -> 挂载使用 多块盘组成的 RAID 阵列给LVM

查看文件/目录大小

duls 查看文件大小的核心区别在于:ls 显示的是文件的“逻辑大小”(文件本身的内容大小),而 du 显示的是文件的“物理占用空间”(在磁盘上实际占据的块大小)。通常情况下,du 统计的数值会大于或等于 ls 的数值。

1
2
3
4
5
6
7
8
9
du -sh *                # 查看当前目录下每个文件和目录的大小。
du -sh /data # 查看指定目录大小。
du -sh /etc/profile # 查看指定文件大小。

ls # 显示 当前目录下的文件/目录。默认不会显示以 . 开头的隐藏文件。
ls * # 显示 当前目录下的文件 + 子目录下的文件。
ls -lh # 显示 当前目录下的文件/目录 的详细信息。-l 以长格式显示;-h 将文件大小从字节转换为人类易读的格式(如 KB、MB、GB)。
ls -lh /data # 显示 指定目录下的文件/目录 的详细信息。
ls -lh * # 显示 当前目录下的文件 + 子目录下的文件 的详细信息。

查看磁盘使用情况(已挂载分区)

1
2
3
4
5
6
7
root@ubuntu20-04:/# df -hT                # 查看系统中所有已挂载文件系统的磁盘使用情况。
root@ubuntu20-04:/# df -hT /opt/ # 查看指定目录所属文件系统的磁盘使用情况。
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda2 ext4 18G 4.6G 13G 28% /
root@ubuntu20-04:~# df -hT /dev/sda2 # 查看指定分区(文件系统)的磁盘使用情况。
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda2 ext4 18G 4.6G 13G 28% /

列出块设备(已挂载分区+未挂载分区)

磁盘扇区 sector - 维基百科

1
2
3
lsblk           # List Block Devices,用于列出系统中所有块设备(如硬盘、闪存盘、CD-ROM 等)的信息。
lsblk -f # 查看文件系统信息。会额外显示分区的 UUID、文件系统类型(如 ext4, xfs)以及标签。
lsblk -df # 只列出物理磁盘本身,不显示底下的分区信

磁盘分区管理(非 RAID)

查看磁盘分区

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
root@ubuntu20-04:~# fdisk -l /dev/sda # 查看指定磁盘分区
root@ubuntu20-04:~# fdisk -l # 列出系统检测到的所有磁盘及其分区表。常用场景:查看磁盘大小、分区类型、扇区信息,通常用于分区或格式化前。
Disk /dev/nvme0n1: 3.49 TiB, 3840755982336 bytes, 7501476528 sectors
Disk model: INSPUR-NS8500G2U384
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/nvme1n1: 3.49 TiB, 3840755982336 bytes, 7501476528 sectors
Disk model: INSPUR-NS8500G2U384
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/nvme2n1: 3.49 TiB, 3840755982336 bytes, 7501476528 sectors
Disk model: INSPUR-NS8500G2U384
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sda: 447.13 GiB, 480103981056 bytes, 937703088 sectors
Disk model: S32TTR-00T5W-ST
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 446C3720-6E4A-4117-ACEF-8247D7BAF754

Device Start End Sectors Size Type
/dev/sda1 2048 2000895 1998848 976M EFI System
/dev/sda2 2000896 195311615 193310720 92.2G Microsoft basic data
/dev/sda3 195311616 937701375 742389760 354G Linux filesystem


Disk /dev/sdb: 3.64 TiB, 4000787030016 bytes, 7814037168 sectors
Disk model: TOSHIBA MG08ADA4
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdc: 3.64 TiB, 4000787030016 bytes, 7814037168 sectors
Disk model: TOSHIBA MG08ADA4
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdd: 3.64 TiB, 4000787030016 bytes, 7814037168 sectors
Disk model: TOSHIBA MG08ADA4
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sde: 3.64 TiB, 4000787030016 bytes, 7814037168 sectors
Disk model: TOSHIBA MG08ADA4
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdf: 3.64 TiB, 4000787030016 bytes, 7814037168 sectors
Disk model: TOSHIBA MG08ADA4
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdg: 3.64 TiB, 4000787030016 bytes, 7814037168 sectors
Disk model: TOSHIBA MG08ADA4
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdi: 3.64 TiB, 4000787030016 bytes, 7814037168 sectors
Disk model: TOSHIBA MG08ADA4
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdh: 3.64 TiB, 4000787030016 bytes, 7814037168 sectors
Disk model: TOSHIBA MG08ADA4
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdj: 3.64 TiB, 4000787030016 bytes, 7814037168 sectors
Disk model: TOSHIBA MG08ADA4
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdk: 3.64 TiB, 4000787030016 bytes, 7814037168 sectors
Disk model: TOSHIBA MG08ADA4
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdl: 3.64 TiB, 4000787030016 bytes, 7814037168 sectors
Disk model: TOSHIBA MG08ADA4
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/md0: 32.75 TiB, 36005862703104 bytes, 70323950592 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 524288 bytes / 4718592 bytes


Disk /dev/mapper/vg_raid-data_vol: 32 TiB, 35184372088832 bytes, 68719476736 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 524288 bytes / 4718592 bytes

创建磁盘分区

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
root@ubuntu20-04:~# fdisk /dev/sda # 对磁盘进行分区操作(会进入交互界面,按提示一步步操作)。

Welcome to fdisk (util-linux 2.34).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

GPT PMBR size mismatch (41943039 != 419430399) will be corrected by write.

Command (m for help): m # 输出Help信息

Help:

GPT
M enter protective/hybrid MBR

Generic
d delete a partition # 删除分区
F list free unpartitioned space
l list known partition types
n add a new partition # 新建分区
p print the partition table # 打印分区表
t change a partition type # 修改分区类型
v verify the partition table
i print information about a partition

Misc
m print this menu # 输出Help信息
x extra functionality (experts only)

Script
I load disk layout from sfdisk script file
O dump disk layout to sfdisk script file

Save & Exit
w write table to disk and exit # 保存并退出
q quit without saving changes # 退出不保存

Create a new label
g create a new empty GPT partition table
G create a new empty SGI (IRIX) partition table
o create a new empty DOS partition table
s create a new empty Sun partition table


Command (m for help): n # 新建分区
Partition number (4-128, default 4): 4 # 分区号,即后来的sda4
First sector (41940992-419430366, default 41940992): # 开始扇区,分区起始位置。enter默认为下一个扇区
Last sector, +/-sectors or +/-size{K,M,G,T,P} (41940992-419430366, default 419430366): +100G # 结束扇区,分区结束位置。enter默认为最后一个扇区

Created a new partition 4 of type 'Linux filesystem' and of size 100 GiB.

Command (m for help): p # 打印分区表
Disk /dev/sda: 200 GiB, 214748364800 bytes, 419430400 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 9732D11F-D526-4419-8BCA-35D48F77AACE

Device Start End Sectors Size Type
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 4198399 4194304 2G Linux swap
/dev/sda3 4198400 41940991 37742592 18G Linux filesystem
/dev/sda4 41940992 251656191 209715200 100G Linux filesystem

Command (m for help): t # 修改分区类型
Partition number (1-4, default 4): 4 # 要改变的分区号
Partition type (type L to list all types): L # 输出所有类型
1 EFI System C12A7328-F81F-11D2-BA4B-00A0C93EC93B
2 MBR partition scheme 024DEE41-33E7-11D3-9D69-0008C781F39F
3 Intel Fast Flash D3BFE2DE-3DAF-11DF-BA40-E3A556D89593
4 BIOS boot 21686148-6449-6E6F-744E-656564454649
5 Sony boot partition F4019732-066E-4E12-8273-346C5641494F
6 Lenovo boot partition BFBFAFE7-A34F-448A-9A5B-6213EB736C22
7 PowerPC PReP boot 9E1A2D38-C612-4316-AA26-8B49521E5A8B
8 ONIE boot 7412F7D5-A156-4B13-81DC-867174929325
9 ONIE config D4E6E2CD-4469-46F3-B5CB-1BFF57AFC149
10 Microsoft reserved E3C9E316-0B5C-4DB8-817D-F92DF00215AE
11 Microsoft basic data EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
12 Microsoft LDM metadata 5808C8AA-7E8F-42E0-85D2-E1E90434CFB3
13 Microsoft LDM data AF9B60A0-1431-4F62-BC68-3311714A69AD
14 Windows recovery environment DE94BBA4-06D1-4D40-A16A-BFD50179D6AC
15 IBM General Parallel Fs 37AFFC90-EF7D-4E96-91C3-2D7AE055B174
16 Microsoft Storage Spaces E75CAF8F-F680-4CEE-AFA3-B001E56EFC2D
17 HP-UX data 75894C1E-3AEB-11D3-B7C1-7B03A0000000
18 HP-UX service E2A1E728-32E3-11D6-A682-7B03A0000000
19 Linux swap 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F
20 Linux filesystem 0FC63DAF-8483-4772-8E79-3D69D8477DE4
21 Linux server data 3B8F8425-20E0-4F3B-907F-1A25A76F98E8
22 Linux root (x86) 44479540-F297-41B2-9AF7-D131D5F0458A
23 Linux root (ARM) 69DAD710-2CE4-4E3C-B16C-21A1D49ABED3
24 Linux root (x86-64) 4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709
25 Linux root (ARM-64) B921B045-1DF0-41C3-AF44-4C6F280D3FAE
26 Linux root (IA-64) 993D8D3D-F80E-4225-855A-9DAF8ED7EA97
27 Linux reserved 8DA63339-0007-60C0-C436-083AC8230908
28 Linux home 933AC7E1-2EB4-4F13-B844-0E14E2AEF915
29 Linux RAID A19D880F-05FC-4D3B-A006-743F0F84911E
30 Linux extended boot BC13C2FF-59E6-4262-A352-B275FD6F7172
31 Linux LVM E6D6D379-F507-44C2-A23C-238F2A3DF928
32 FreeBSD data 516E7CB4-6ECF-11D6-8FF8-00022D09712B
33 FreeBSD boot 83BD6B9D-7F41-11DC-BE0B-001560B84F0F
34 FreeBSD swap 516E7CB5-6ECF-11D6-8FF8-00022D09712B
35 FreeBSD UFS 516E7CB6-6ECF-11D6-8FF8-00022D09712B
36 FreeBSD ZFS 516E7CBA-6ECF-11D6-8FF8-00022D09712B
37 FreeBSD Vinum 516E7CB8-6ECF-11D6-8FF8-00022D09712B

Partition type (type L to list all types): 20 # 20对应"Linux filesystem"类型

Changed type of partition 'Linux filesystem' to 'Linux filesystem'.

Command (m for help): w # 保存并退出
The partition table has been altered. # 分区表已更改
Syncing disks. # 正在同步磁盘

root@ubuntu20-04:~# fdisk -l /dev/sda # 查看磁盘分区
Disk /dev/sda: 200 GiB, 214748364800 bytes, 419430400 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 9732D11F-D526-4419-8BCA-35D48F77AACE

Device Start End Sectors Size Type
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 4198399 4194304 2G Linux swap
/dev/sda3 4198400 41940991 37742592 18G Linux filesystem
/dev/sda4 41940992 251656191 209715200 100G Linux filesystem

重复上面的操作,使用剩余的磁盘创建分区 /dev/sda5

磁盘分区后,可以直接格式化为 ext4 格式,然后挂载使用。

删除分区

更改分区类型

RAID(通常磁盘不分区)

介绍

RAID - 维基百科

独立磁盘冗余阵列RAID, Redundant Array of Independent Disks),简称磁盘阵列。它是一种存储虚拟化技术,通过将多个独立的硬盘驱动器组合成一个或多个逻辑单元(/dev/md0/dev/md1,、/dev/md2),以实现数据冗余、性能提升或两者的结合。

在 Linux 系统中,/dev/md0 通常代表一个由 [mdadm] 工具创建的软 RAID(Software RAID)设备的第一个设备文件。

  • md: 代表 Multiple Devices(多设备),即 Linux 下的软 RAID 技术。
  • 0: 代表这是第 0 个(第一个)创建的 RAID 阵列。如果创建更多,会依次命名为 /dev/md1, /dev/md2 等。
  • md0 是将多个独立的硬盘分区(Partition)或物理硬盘(Physical Disk)组合成一个逻辑上的虚拟硬盘来使用。

查看使用的是哪种 RAID

1
2
3
4
5
6
7
8
9
10
# 检查 LVM RAID。查看 Attr(属性)列。如果第一个字符是 r(例如 rwi-a-r---),说明这是一个 LVM RAID 卷。
lvs -a
lvs -a -o lv_name,lv_attr,lv_size,vg_name,vg_size,vg_attr,devices

# 检查传统 RAID 阵列,通常指 mdadm 创建的阵列。如果输出中显示有 md0 或 md127 等设备,并且状态为 active raid5,说明系统中存在 mdadm 管理的阵列。
cat /proc/mdstat
mdadm --detail /dev/md0

# 检查硬件 RAID。如果上述两个命令都没有查到明显的阵列信息,但 lsblk 显示系统只有一块巨大的磁盘(即使物理上有好几块),那可能是硬件 RAID。
lspci | grep -i raid # 查看是否存在物理 RAID 控制器

LVM RAID传统 RAID 阵列 对比:

  • 性能:两者在数据读写性能上几乎没有区别,因为底层都是利用 Linux 内核的 MD 驱动。
  • 恢复(Rebuild):LVM RAID 的恢复过程通常与 LVM 的命令集成,查看状态也是通过 lvs 命令,而传统 RAID 需要通过 mdstatmdadm 查看。

总结:

  • 如果追求管理简单、灵活度高,直接用 lvcreate --type raid5 是更好的选择。
  • 如果需要将该 RAID 阵列用于非 LVM 场景(比如直接格式化挂载,或者给其他非 LVM 的工具使用),则传统 RAID (mdadm) 更合适。

常见 RAID 级别对比

RAID 级别 最少磁盘 容错能力 空间利用率 特点与应用场景
RAID 0 2 100% 性能最强,数据条带化存储。一块盘坏则数据全丢。适用于临时缓存。
RAID 1 2 允许坏 1 块 50% 安全性高,互为镜像。写性能略低,读性能好。适用于系统盘、重要数据。
RAID 5 3 允许坏 1 块 imgimgimgimgimg 性价比均衡,带奇偶校验。写速度受校验计算影响较慢。适用于文件服务器。
RAID 6 4 允许坏 2 块 imgimgimgimgimg 双重奇偶校验,安全性高于 RAID 5。适用于大规模数据存储。
RAID 10 4 允许每组坏 1 块 50% RAID 1+0 的组合,兼顾速度与冗余。性能好但成本高。适用于数据库。

软 RAID 实现:mdadm 工具

在 Linux 中,通常使用 mdadm 工具来管理软件 RAID。以下是核心操作流程:

创建 RAID 5 示例

假设使用 /dev/sdb, /dev/sdc, /dev/sdd 三块磁盘:

1
mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sd[b-d]

查看状态

使用 cat /proc/mdstatmdadm --detail /dev/md0 查看详细进度。

格式化与挂载

阵列创建后被视为一个逻辑盘,需格式化后使用:

1
2
3
root@ubuntu20-04:~# mkfs.xfs /dev/md0
root@ubuntu20-04:~# mount /dev/md0 /vg
root@ubuntu20-04:~# lsblk -f

故障模拟与热备盘

  • 热备盘 (Spare):可以在创建时加入备份盘,当成员盘损坏时自动顶替。
  • 移除坏盘:先标记失效 mdadm /dev/md0 --fail /dev/sdb,再移除 mdadm /dev/md0 --remove /dev/sdb

运维核心建议

  • 硬件 vs 软件:服务器端推荐使用带缓存的硬件 RAID 卡以减轻 CPU 负担并提升写性能。
  • 监控:软 RAID 务必配置邮件报警,及时发现坏盘并更换,避免多盘连续损坏导致数据无法恢复。

LVM管理

推荐

逻辑卷管理器管理 - RedHat官网

逻辑卷管理 LVM - 维基百科

逻辑卷管理器 LVM - 维基百科

逻辑磁盘管理工具 - 维基百科

介绍

LVM 是一种 抽象化存储 技术,是 Linux 内核提供的逻辑卷管理功能。它为电脑中的大量存储设备(Mass storage devices)提供更有弹性的硬盘分割方式。它在硬盘分区程序和操作系统之间创建一个逻辑层,以方便操作系统管理硬盘分割系统。

LVM 是卷的一种管理方式,并不是分区工具(也可不采用这种 LVM 管理方式)。

LVM 管理导图:

image-20200513134336969

image-20200513134430622

LVM扩容思维流程:

创建一个物理分区

将这个物理分区转换为物理卷

把这个物理卷添加到要扩展的卷组中

然后用extend命令扩展此卷组中的逻辑卷

LVM基本术语:

  • 物理存储介质(The physical media)是指系统的存储设备 硬盘,如:/dev/hda/dev/sda 等等,是存储系统最低层的存储单元。

  • PV:物理卷,PV处于LVM系统最低层,它可以是整个硬盘,或者与磁盘分区具有相同功能的设备(如RAID),但和基本的物理存储介质相比较,多了与LVM相关管理参数

  • VG:卷组,创建在PV之上,由一个或多个PV组成,可以在VG上创建一个或多个“LVM分区”(逻辑卷),功能类似非LVM系统的物理硬盘(物理存储介质)

  • LV:逻辑卷,从VG中分割出的一块空间,创建之后其大小可以伸缩,在LV上可以创建文件系统(如/var,/home)

  • PE:物理区域,每一个PV被划分为基本单元(也被称为PE),具有唯一编号的PE是可以被LVM寻址的最小存储单元,默认为4MB

查看是否使用LVM管理

1
2
3
pvdisplay #查看物理卷
vgdisplay #查看卷组
lvdisplay #查看逻辑卷

如果没有采用 LVM 管理,是查看不到物理卷、卷组、逻辑卷的。

物理卷 (Physical Volume, PV)

把 RAID 磁盘(/dev/md0)变成 LVM 的物理卷 (PV),以便LVM使用。

将物理磁盘分区初始化为物理卷,以便LVM使用。

pvcreate 命令pvdisplay 命令pvremove 命令 、 使用tab命令提示发现更多命令

初始化物理卷

1
2
3
4
root@ubuntu20-04:~# lvmdiskscan                 # 扫描可用作物理卷的块设备
root@ubuntu20-04:~# pvcreate /dev/sda4 # 将分区初始化为 LVM 物理卷
Physical volume "/dev/sda5" successfully created.
root@ubuntu20-04:~# pvcreate /dev/md0 # 将块设备(如 RAID)初始化为 LVM 物理卷

显示物理卷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
root@ubuntu20-04:~# pvs             # 以可配置的形式提供物理卷信息。
PV VG Fmt Attr PSize PFree
/dev/md0 vg_raid lvm2 a-- <32.75t <749.07g
/dev/nvme0n1 vg_raid lvm2 a-- 3.49t 496.98g
/dev/nvme2n1 vg_raid lvm2 a-- 3.49t 496.98g

root@ubuntu20-04:~# pvscan # 扫描系统中所有支持的物理卷 LVM 块设备。
PV /dev/md0 VG vg_raid lvm2 [<32.75 TiB / <749.07 GiB free]
PV /dev/nvme0n1 VG vg_raid lvm2 [3.49 TiB / 496.98 GiB free]
PV /dev/nvme2n1 VG vg_raid lvm2 [3.49 TiB / 496.98 GiB free]
Total: 3 [39.73 TiB] / in use: 3 [39.73 TiB] / in no VG: 0 [0 ]

root@ubuntu20-04:~# pvdisplay # 为每个物理卷提供详细的多行输出。它以固定格式显示物理属性(大小、扩展、卷组等等)。
"/dev/sda4" is a new physical volume of "100.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sda4
VG Name
PV Size 100.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID guJjk2-UNDp-FOaf-ZDw4-iaDG-UMqX-5uDeWu

--- Physical volume ---
PV Name /dev/md0
VG Name vg_raid
PV Size <32.75 TiB / not usable 6.50 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 8584465
Free PE 191761
Allocated PE 8392704
PV UUID iQaOKJ-8Gth-pf6j-v3hD-KlTX-kklu-JnF5KW

修改物理卷属性

1
2
3
4
# 防止在一个或多个物理卷的空闲空间上分配物理扩展
pvchange -x n /dev/sdk1
# 允许在一个或多个物理卷的空闲空间上分配物理扩展
pvchange -x y /dev/sdk1

重新调整物理卷大小

pvresize 命令是 Linux 系统中用于调整 LVM(逻辑卷管理)中物理卷(Physical Volume, PV)容量大小的工具。当底层磁盘或分区扩容后,使用 pvresize 可使 LVM 识别并使用新空间,而无需重启系统。

1
2
3
4
5
6
7
8
9
# 自动识别扩容
pvresize /dev/sdb1 # 调整分区 /dev/sdb1 的大小
pvresize /dev/vdb # 调整整块磁盘 /dev/vdb 的大小

# 显示详细过程
pvresize -v /dev/vdb # -v 选项显示详细的调整过程

# 指定特定大小
pvresize --setphysicalvolumesize 40G /dev/sdb1

删除物理卷

如果您要删除的物理卷是卷组的一部分,则必须先将其从卷组中删除

1
2
# 删除未加入卷组的物理卷
pvremove /dev/sda4

卷组 (Volume Group, VG)

创建卷组

1
2
3
# 从一个或多个物理卷创建卷组
vgcreate vg1 /dev/sda4 /dev/sda5
Volume group "vg1" successfully created

显示卷组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
root@ubuntu20-04:~# vgs                # 以可配置的形式提供卷组信息,每个卷组显示一行。
VG #PV #LV #SN Attr VSize VFree
vg_raid 3 2 0 wz--n- 39.73t 1.70t

# 扫描系统中所有支持的磁盘设备查找 LVM 物理卷和卷组。这会在 /etc/lvm/cache/.cache 文件中构建 LVM 缓存文件,该文件维护了当前 LVM 设备的列表。
# LVM 在系统启动时自动启动 vgscan 命令,并在 LVM 操作过程中自动运行 vgscan 命令,比如当您执行 vgcreate 命令时,或者 LVM 检测到不一致时。
root@ubuntu20-04:~# vgscan # 扫描卷组的所有磁盘并重建 LVM 缓存文件,也会显示卷组。
Found volume group "vg_raid" using metadata type lvm2

root@ubuntu20-04:~# vgdisplay # 以固定格式显示卷组属性(如大小、扩展、物理卷数目等等)。
--- Volume group ---
VG Name vg1
System ID
Format lvm2
Metadata Areas 2
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 2
Act PV 2
VG Size 179.99 GiB
PE Size 4.00 MiB
Total PE 46078
Alloc PE / Size 0 / 0
Free PE / Size 46078 / 179.99 GiB
VG UUID qy0u2U-k7ef-rchG-coDQ-Wt0o-YGkx-9gtWAY

向卷组中添加物理卷(扩展卷组)

假设卷组 vg1 满了需要扩大。手上的硬盘(sda)已经没有其他空闲分区,我们添加另外一个硬盘(sdb),把sdb的分区添加到卷组以扩展。

1
2
3
4
5
6
vgdisplay vg1            # 显示卷组
fdisk /dev/sdb # 对磁盘进行分区操作(会进入交互界面,按提示一步步操作),创建一个分区 sdb1。
磁盘分区见上文,此处省略...
pvcreate /dev/sdb1 # 创建物理卷 /dev/sdb1
vgextend vg1 /dev/sdb1 # 将一个或多个可用物理卷添加到已存在的卷组 vg1 上
vgdisplay # 显示卷组,会看到卷组大小增大了。

从卷组中删除物理卷(缩减卷组)

在从卷组中删除物理卷前,您可以使用 pvdisplay 命令确定物理卷没有被任何逻辑卷使用。

如果物理卷仍在使用,则必须使用 pvmove 命令将数据迁移到另一个物理卷中。然后使用 vgreduce 命令删除物理卷。

1
2
# 从卷组 vg1 中删除物理卷 /dev/sdb1。
vgreduce vg1 /dev/sdb1

修改卷组属性

1
2
3
4
5
6
# 停用卷组
vgchange -a n vg1
# 激活卷组
vgchange -a y vg1
# 将卷组 vg00 的最大逻辑卷数改为 128。
vgchange -l 128 vg1

删除卷组

1
2
# 删除不包含逻辑卷的卷组
vgremove vg1

分隔卷组

https://man7.org/linux/man-pages/man8/vgsplit.8.html

vgsplit 命令:将物理卷移动到新的或现有的卷组中

合并卷组

1
2
# 将名为 vg123 的卷组(Volume Group, VG)合并到名为 vg1 的卷组中。
vgmerge -v vg123 vg1

重命名卷组

1
2
3
# 以下命令等价,将现有卷组 vg001 重命名为 vg1
vgrename /dev/vg001 /dev/vg1
vgrename vg001 /dev/vg1

逻辑卷 (Logical Volume, LV)

lvcreate 命令lvdisplay 命令lvremove 命令

lvresize 命令lvextend 命令lvreduce 命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
root@ubuntu20-04:~# lvcreate -L 50G -n lv1 vg1 # 使用卷组创建一个50G的逻辑卷
Logical volume "lv1" created.
root@ubuntu20-04:~# lvdisplay # 显示LVM逻辑卷
--- Logical volume ---
LV Path /dev/vg1/lv1
LV Name lv1
VG Name vg1
LV UUID pTLSPo-kfqW-AiTH-4TrE-03Gi-n0Rb-n0KQdu
LV Write Access read/write
LV Creation host, time ubuntu20-04, 2020-05-12 08:21:34 +0000
LV Status available
# open 0
LV Size 50.00 GiB
Current LE 12800
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0

格式化和挂载逻辑卷,就像其它ext2/3/4分区一样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
root@ubuntu20-04:~# mkfs # tab命令补全
mkfs mkfs.btrfs mkfs.ext2 mkfs.ext4 mkfs.minix mkfs.ntfs mkfs.xfs
mkfs.bfs mkfs.cramfs mkfs.ext3 mkfs.fat mkfs.msdos mkfs.vfat

root@ubuntu20-04:~# mkfs -t ext4 /dev/vg1/lv1 # 格式化
root@ubuntu20-04:~# mkfs.ext4 /dev/vg1/lv1 # 格式化
mke2fs 1.45.5 (07-Jan-2020)
Creating filesystem with 13107200 4k blocks and 3276800 inodes
Filesystem UUID: 8afc23b9-b607-405d-baa5-4f9eac8f7ad5
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424

Allocating group tables: done
Writing inode tables: done
Creating journal (65536 blocks): done
Writing superblocks and filesystem accounting information: done

root@ubuntu20-04:/# mkdir /data
root@ubuntu20-04:/# mount /dev/vg1/lv1 /data # 临时挂载到'/data'
root@ubuntu20-04:/# df -hT /data/
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda4 ext4 49G 53M 47G 1% /
root@ubuntu20-04:/# df -hT
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 938M 0 938M 0% /dev
tmpfs tmpfs 196M 1.3M 195M 1% /run
/dev/sda3 ext4 18G 4.6G 13G 28% /
tmpfs tmpfs 980M 0 980M 0% /dev/shm
tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs tmpfs 980M 0 980M 0% /sys/fs/cgroup
/dev/loop1 squashfs 28M 28M 0 100% /snap/snapd/7264
/dev/loop0 squashfs 55M 55M 0 100% /snap/core18/1705
/dev/loop2 squashfs 69M 69M 0 100% /snap/lxd/14804
tmpfs tmpfs 196M 0 196M 0% /run/user/0
/dev/loop3 squashfs 55M 55M 0 100% /snap/core18/1754
/dev/loop4 squashfs 70M 70M 0 100% /snap/lxd/14954
/dev/mapper/volume--group1-lv1 ext4 49G 53M 47G 1% /data

删除逻辑卷:

1
2
3
4
root@ubuntu20-04:/# umount /data
root@ubuntu20-04:/# lvremove /dev/vg1/lv1
Do you really want to remove and DISCARD active logical volume vg1/lv1? [y/n]: y
Logical volume "lv1" successfully removed

扩展逻辑卷

命令的执行顺序很重要。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
root@ubuntu20-04:/# umount /data # 卸除挂载的文件系统
root@ubuntu20-04:/# lvextend -L +100%FREE /dev/vg1/lv1 # 将卷组中的空闲空间扩展到逻辑卷
root@ubuntu20-04:/# lvresize -L 150G /dev/vg1/lv1 # 将逻辑卷空间大小调整为150G
root@ubuntu20-04:/# lvresize -L +50G /dev/vg1/lv1 # 将逻辑卷空间大小增加50G
Size of logical volume vg1/lv1 changed from 50.00 GiB (12800 extents) to 150.00 GiB (38400 extents).
Logical volume vg1/lv1 successfully resized.
root@ubuntu20-04:/# lvdisplay
--- Logical volume ---
LV Path /dev/vg1/lv1
LV Name lv1
VG Name vg1
LV UUID hRQV0h-3gq5-x1GA-miaw-xk9s-IpRd-XX1Nxe
LV Write Access read/write
LV Creation host, time ubuntu20-04, 2020-05-12 08:45:51 +0000
LV Status available
# open 0
LV Size 150.00 GiB
Current LE 38400
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0

root@ubuntu20-04:/# fsck -a /dev/vg1/lv1 # 检查磁盘错误
root@ubuntu20-04:~# df -hT
root@ubuntu20-04:~# resize2fs /dev/vg1/lv1 # 刷新分区
root@ubuntu20-04:~# df -hT

现在,这个逻辑卷可以再次挂载,同样这个方法也可用于其他分区。

缩减逻辑卷

命令的执行顺序很重要。

注意减少逻辑卷的大小值若小于储存的数据大小,存储在后面的数据会丢失。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
root@ubuntu20-04:/# umount /data # 卸除挂载的文件系统
root@ubuntu20-04:/# fsck -a /dev/vg1/lv1 # 检查磁盘错误
fsck from util-linux 2.34
/dev/mapper/volume--group1-lv1: clean, 11/9830400 files, 697822/39321600 blocks

root@ubuntu20-04:/# lvreduce -L -50G /dev/vg1/lv1 # 减少逻辑卷占用空间
root@ubuntu20-04:/# lvresize -L -50G /dev/vg1/lv1 # 将逻辑卷空间大小减少50G
root@ubuntu20-04:/# lvresize -L 50G /dev/vg1/lv1 # 将逻辑卷空间大小调整为50G
WARNING: Reducing active logical volume to 50.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg1/lv1? [y/n]: y
Size of logical volume vg1/lv1 changed from 150.00 GiB (38400 extents) to 50.00 GiB (12800 extents).
Logical volume vg1/lv1 successfully resized.
root@ubuntu20-04:/# lvdisplay
--- Logical volume ---
LV Path /dev/vg1/lv1
LV Name lv1
VG Name vg1
LV UUID hRQV0h-3gq5-x1GA-miaw-xk9s-IpRd-XX1Nxe
LV Write Access read/write
LV Creation host, time ubuntu20-04, 2020-05-12 08:45:51 +0000
LV Status available
# open 0
LV Size 50.00 GiB
Current LE 12800
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
root@ubuntu20-04:~# df -hT
root@ubuntu20-04:~# resize2fs /dev/vg1/lv1 # 刷新分区
root@ubuntu20-04:~# df -hT

格式化

1
2
mkfs -t ext4 /dev/sda4                   # 格式化分区,等价于 mkfs.ext4 /dev/sda4
mkfs.xfs -t ext4 /dev/vg_name/lv_name # 格式化逻辑卷

挂载分区

临时挂载

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
root@ubuntu20-04:/# mkdir -p /data
root@ubuntu20-04:/# mount -t ext4 /dev/sda4 /data # 将分区 /dev/sda4 临时挂载到目录 /data,文件系统类型指定为 ext4。
root@ubuntu20-04:/# df -hT /data/
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda4 ext4 99G 53M 97G 1% /
root@ubuntu20-04:/# df -hT
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 938M 0 938M 0% /dev
tmpfs tmpfs 196M 1.3M 195M 1% /run
/dev/sda3 ext4 18G 4.6G 13G 28% /
tmpfs tmpfs 980M 0 980M 0% /dev/shm
tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs tmpfs 980M 0 980M 0% /sys/fs/cgroup
/dev/loop1 squashfs 28M 28M 0 100% /snap/snapd/7264
/dev/loop0 squashfs 55M 55M 0 100% /snap/core18/1705
/dev/loop2 squashfs 69M 69M 0 100% /snap/lxd/14804
tmpfs tmpfs 196M 0 196M 0% /run/user/0
/dev/loop3 squashfs 55M 55M 0 100% /snap/core18/1754
/dev/loop4 squashfs 70M 70M 0 100% /snap/lxd/14954
/dev/sda4 ext4 99G 53M 97G 1% /data

永久挂载

推荐: linux fstab 文件详解linux 误挂载磁盘,原数据被覆盖如何找回

永久挂载:/etc/fstab 是 Linux 系统里 控制开机自动挂载磁盘/分区/网络存储 的配置文件,定义每个文件系统的挂载点、文件系统类型、挂载选项,避免每次开机都要手动 mount

在进行一下操作前,先创建 /dev/sda4 分区,大小为 10G,格式化为 ext4。

1、准备目录,并查看所在分区和挂载点

1
2
3
4
5
root@ubuntu20-04:/# mkdir /data
root@ubuntu20-04:/# df -hT /data/
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda3 ext4 18G 4.6G 13G 28% /
# 可以看出,'/data' 所在分区是挂载到 '/' 目录的 '/dev/sda3' 分区

2、查看所有分区和设备的UUID值和挂载点

1
2
3
4
5
6
7
8
9
10
11
12
13
root@ubuntu20-04:/# lsblk -f
NAME FSTYPE LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
loop0 squashfs 0 100% /snap/core18/1705
loop1 squashfs 0 100% /snap/snapd/7264
loop2 squashfs 0 100% /snap/lxd/14804
loop3 squashfs 0 100% /snap/core18/1754
loop4 squashfs 0 100% /snap/lxd/14954
sda
├─sda1
├─sda2 swap 0f5010bc-bc78-4f32-a8b8-aeeed49db343 [SWAP]
├─sda3 ext4 a78143b8-b84a-440e-b330-346eae21aac4 12.2G 26% /
└─sda4 ext4 047a3fdd-f0b6-4a33-835b-3dc8d5e48cf8
sr0

3、编辑 /etc/fstab 文件

文件中每个列的详细描述请查看 fstab (简体中文) - ArchWiki

1
2
3
4
5
6
7
root@ubuntu20-04:/# vim /etc/fstab
# UUID 方式挂载磁盘
/dev/disk/by-uuid/047a3fdd-f0b6-4a33-835b-3dc8d5e48cf8 /data auto defaults,nofail,comment=cloudconfig 0 2
# 设备路径方式挂载磁盘
/dev/vdb /data auto defaults,nofail,comment=cloudconfig 0 2

root@ubuntu20-04:/# mount -a # 装载fstab文件中所有文件系统,否则需要重启系统。

4、再次查看所在分区和挂载点,发现已经改变。

1
2
3
root@ubuntu20-04:/# df -hT /data/
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda4 ext4 9.8G 37M 9.3G 1% /data

根分区扩容

LVM 管理

1、查看挂载到根分区(/)的逻辑卷: df -hT /lsblk

2、查看逻辑卷所在卷组: lvdisplay

3、查看卷组剩余空间: vgdisplay 。若无剩余空间,扩容磁盘—>创建物理分区—>创建物理卷—>将物理卷扩展到卷组。

4、将卷组中的空闲空间扩展到根分区逻辑卷: lvextend

5、刷新根分区: resize2fs

非 LVM 管理

1、查看当前根分区大小

1
2
3
root@ubuntu20-04:~# df -hT /
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda3 ext4 18G 4.6G 13G 28% /

2、扩展磁盘容量,并查看扩容后磁盘大小

1
2
3
4
5
6
7
root@ubuntu20-04:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 18G 0 part /
sr0 11:0 1 1024M 0 rom

3、扩展分区

记住根分区起始位置和结束位置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
root@ubuntu20-04:~# fdisk /dev/sda

Welcome to fdisk (util-linux 2.34).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

GPT PMBR size mismatch (41943039 != 419430399) will be corrected by write.

Command (m for help): p

Disk /dev/sda: 200 GiB, 214748364800 bytes, 419430400 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 9732D11F-D526-4419-8BCA-35D48F77AACE

Device Start End Sectors Size Type
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 4198399 4194304 2G Linux swap
/dev/sda3 4198400 41940991 37742592 18G Linux filesystem

删除根分区,切记不要保存

1
2
3
4
Command (m for help): d
Partition number (1-3, default 3): 3

Partition 3 has been deleted.

创建分区,新分区和删除分区的开始扇区相同

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Command (m for help): n
Partition number (3-128, default 3): 3
First sector (4198400-419430366, default 4198400):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (4198400-419430366, default 419430366):

Created a new partition 3 of type 'Linux filesystem' and of size 198 GiB.
Partition #3 contains a ext4 signature.

Do you want to remove the signature? [Y]es/[N]o: y

The signature will be removed by a write command.

Command (m for help): p
Disk /dev/sda: 200 GiB, 214748364800 bytes, 419430400 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 9732D11F-D526-4419-8BCA-35D48F77AACE

Device Start End Sectors Size Type
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 4198399 4194304 2G Linux swap
/dev/sda3 4198400 419430366 415231967 198G Linux filesystem

Filesystem/RAID signature on partition 3 will be wiped.

保存退出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Command (m for help): w
The partition table has been altered.
Syncing disks.

root@ubuntu20-04:~# df -hT
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 938M 0 938M 0% /dev
tmpfs tmpfs 196M 1.3M 195M 1% /run
/dev/sda3 ext4 18G 4.6G 13G 28% / ############## 并未改变
tmpfs tmpfs 980M 0 980M 0% /dev/shm
tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs tmpfs 980M 0 980M 0% /sys/fs/cgroup
/dev/loop1 squashfs 28M 28M 0 100% /snap/snapd/7264
/dev/loop2 squashfs 69M 69M 0 100% /snap/lxd/14804
/dev/loop0 squashfs 55M 55M 0 100% /snap/core18/1705
/dev/loop4 squashfs 55M 55M 0 100% /snap/core18/1754
/dev/loop3 squashfs 70M 70M 0 100% /snap/lxd/14954
tmpfs tmpfs 196M 0 196M 0% /run/user/0

重读分区表、刷新根分区

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
root@ubuntu20-04:~# partprobe /dev/sda # 重读分区表。当删除文件后,仍然占用空间,partprobe可以在不重启的情况下重读分区。
root@ubuntu20-04:~# resize2fs /dev/sda3 # 刷新分区
resize2fs 1.45.5 (07-Jan-2020)
Filesystem at /dev/sda3 is mounted on /; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 25
The filesystem on /dev/sda3 is now 51903995 (4k) blocks long.

root@ubuntu20-04:~# df -hT
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 938M 0 938M 0% /dev
tmpfs tmpfs 196M 1.3M 195M 1% /run
/dev/sda3 ext4 195G 4.6G 183G 3% /
tmpfs tmpfs 980M 0 980M 0% /dev/shm
tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs tmpfs 980M 0 980M 0% /sys/fs/cgroup
/dev/loop1 squashfs 28M 28M 0 100% /snap/snapd/7264
/dev/loop2 squashfs 69M 69M 0 100% /snap/lxd/14804
/dev/loop0 squashfs 55M 55M 0 100% /snap/core18/1705
/dev/loop4 squashfs 55M 55M 0 100% /snap/core18/1754
/dev/loop3 squashfs 70M 70M 0 100% /snap/lxd/14954
tmpfs tmpfs 196M 0 196M 0% /run/user/0