Linux 磁盘管理

推荐链接:

菜鸟 Linux 磁盘管理

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

相关命令:

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

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

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

菜鸟 mkfs 命令mkfs 命令

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

菜鸟 umount命令umount 命令

菜鸟 fsck 命令fsck 命令fsck - 维基百科

lsblk 命令

partprobe 命令

resize2fs 命令

常用命令整理

1
2
3
4
5
6
7
8
9
fdisk -l                     # 查看未挂载磁盘
lsblk -f # 显示所有设备的UUID值和挂载点,'/etc/fstab'文件中可以选择使用UUID
fdisk /dev/vdb # 对磁盘vdb进行分区
mkfs -t ext4 /dev/vdb # 格式化
mkdir /opt
mount -t ext4 /dev/vdb /opt/ # 挂载指定的文件系统挂载到指定的目录
df -hT # 查看 挂载、磁盘空间统计
df -hT /opt/ # 查看指定目录所在分区(被挂载到哪个目录的哪个分区下)
du -sh * # 查看当前目录下所有文件及目录大小

永久挂载(开机自动挂载)

1
2
3
4
5
vim /etc/fstab
/dev/vdb /opt auto defaults,nofail,comment=cloudconfig 0 2

mount -a # 装载fstab文件中所有文件系统
df -hT /opt/ # 查看并确认

linux fstab 文件详解:https://blog.csdn.net/richerg85/article/details/17917129

linux 误挂载磁盘,原数据被覆盖:https://blog.csdn.net/dongfangxiaozi_/article/details/78277011

磁盘

磁盘(disk)是指利用磁记录技术存储数据的存储器

磁盘是计算机主要的存储介质,可以存储大量的二进制数据,并且断电后也能保持数据不丢失。早期计算机使用的磁盘是软磁盘(Floppy Disk,简称软盘),如今常用的磁盘是硬磁盘(Hard disk,简称硬盘)。

磁盘分区

磁盘扇区 sector - 维基百科

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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
root@ubuntu20-04:~# fdisk -l
root@ubuntu20-04:~# fdisk -l /dev/sda # 查看磁盘分区情况
GPT PMBR size mismatch (41943039 != 419430399) will be corrected by write.
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

root@ubuntu20-04:~# fdisk /dev/sda # 对磁盘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 格式,然后挂载使用。

格式化分区

1
2
root@ubuntu20-04:~# mkfs -t ext4 /dev/sda4 # 格式化
root@ubuntu20-04:~# mkfs.ext4 /dev/sda4 # 格式化

挂载分区

临时挂载

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
root@ubuntu20-04:/# mkdir /data
root@ubuntu20-04:/# mount /dev/sda4 /data # 临时挂载到'/data'
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

永久挂载

fstab (简体中文) - ArchWiki

在进行一下操作前,先创建 /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 # 显示所有设备的UUID值和挂载点,'/etc/fstab'文件中使用UUID
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 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
root@ubuntu20-04:/# cat /etc/fstab # 列的详细描述请查看 "fstab (简体中文) - ArchWiki"
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/disk/by-uuid/0f5010bc-bc78-4f32-a8b8-aeeed49db343 none swap sw 0 0
# / was on /dev/sda3 during curtin installation
/dev/disk/by-uuid/a78143b8-b84a-440e-b330-346eae21aac4 / ext4 defaults 0 0
/swap.img none swap sw 0 0

root@ubuntu20-04:/# vim /etc/fstab
# '/etc/fstab'文件中添加下面内容
/dev/disk/by-uuid/047a3fdd-f0b6-4a33-835b-3dc8d5e48cf8 /data ext4 defaults 0 0

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

查看文件、目录、磁盘大小

du和ls查看文件大小的区别

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
root@ubuntu20-04:~# cd /opt/jdk-11.0.2/
root@ubuntu20-04:/opt/jdk-11.0.2# du -sh * # 查看当前目录下所有文件及目录大小
512K bin
140K conf
228K include
77M jmods
544K legal
219M lib
4.0K release
root@ubuntu20-04:/opt/jdk-11.0.2# du -sh lib/ # 查看lib目录大小
219M lib/
root@ubuntu20-04:/opt/jdk-11.0.2# du -sh release # 查看release文件大小
4.0K release
root@ubuntu20-04:/opt/jdk-11.0.2# du -sh /opt/jdk-11.0.2/ # 查看jdk目录大小
297M /opt/jdk-11.0.2/

root@ubuntu20-04:/opt/jdk-11.0.2# ls *
root@ubuntu20-04:/opt/jdk-11.0.2# ls -lh *
root@ubuntu20-04:/opt/jdk-11.0.2# ls -lh
total 28K
drwxr-xr-x 2 root root 4.0K May 7 02:47 bin
drwxr-xr-x 4 root root 4.0K May 7 02:47 conf
drwxr-xr-x 3 root root 4.0K May 7 02:47 include
drwxr-xr-x 2 root root 4.0K May 7 02:47 jmods
drwxr-xr-x 72 root root 4.0K May 7 02:47 legal
drwxr-xr-x 6 root root 4.0K May 7 02:47 lib
-rw-r--r-- 1 668 668 1.2K Jan 18 2019 release
root@ubuntu20-04:/opt/jdk-11.0.2# ls -lh release
-rw-r--r-- 1 668 668 1.2K Jan 18 2019 release
root@ubuntu20-04:/opt/jdk-11.0.2# ls -lh lib/

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
/dev/loop3 squashfs 55M 55M 0 100% /snap/core18/1754
tmpfs tmpfs 196M 0 196M 0% /run/user/0
/dev/loop4 squashfs 70M 70M 0 100% /snap/lxd/14954

查看分区挂载点

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
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
/dev/loop3 squashfs 55M 55M 0 100% /snap/core18/1754
tmpfs tmpfs 196M 0 196M 0% /run/user/0
/dev/loop4 squashfs 70M 70M 0 100% /snap/lxd/14954
root@ubuntu20-04:/# df -hT /opt/
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda3 ext4 18G 4.6G 13G 28% /
root@ubuntu20-04:~# df -hT /data/
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda4 ext4 9.8G 37M 9.3G 1% /data
root@ubuntu20-04:~# df -hT /dev/sda4
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda4 ext4 9.8G 37M 9.3G 1% /data

root@ubuntu20-04:~# lsblk
root@ubuntu20-04:~# lsblk -l
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 69M 1 loop /snap/lxd/14804
loop1 7:1 0 55M 1 loop /snap/core18/1705
loop2 7:2 0 55M 1 loop /snap/core18/1754
loop3 7:3 0 69.2M 1 loop /snap/lxd/14954
loop4 7:4 0 27.1M 1 loop /snap/snapd/7264
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 198G 0 part /
sr0 11:0 1 1024M 0 rom
root@ubuntu20-04:/# lsblk -f # 显示所有设备的UUID值和挂载点,'/etc/fstab'文件中使用UUID
NAME FSTYPE LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
loop0 squashfs 0 100% /snap/lxd/14804
loop1 squashfs 0 100% /snap/core18/1705
loop2 squashfs 0 100% /snap/lxd/14954
loop3 squashfs 0 100% /snap/snapd/7264
loop4 squashfs 0 100% /snap/core18/1754
sda
├─sda1
├─sda2 swap 0f5010bc-bc78-4f32-a8b8-aeeed49db343 [SWAP]
├─sda3 ext4 a78143b8-b84a-440e-b330-346eae21aac4 12.1G 26% /
├─sda4 ext4 047a3fdd-f0b6-4a33-835b-3dc8d5e48cf8 9.2G 0% /data
└─sda5 ext4 02d7d239-3b50-41af-aedd-690dda6568f2
sr0

LVM

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

Linux 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

物理卷 PV

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

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

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
root@ubuntu20-04:~# pvcreate /dev/sda4 # 创建物理卷
Physical volume "/dev/sda4" successfully created.
root@ubuntu20-04:~# pvcreate /dev/sda5
Physical volume "/dev/sda5" successfully created.

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

"/dev/sda5" is a new physical volume of "80.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sda5
VG Name
PV Size 80.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID VpeMAB-grsB-vir9-vYuJ-7WQd-LMmM-s371Mu

root@ubuntu20-04:~# pvremove /dev/sda4 # 删除物理卷

卷组 VG

vgcreate 命令vgdisplay 命令vgremove 命令

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
root@ubuntu20-04:~# vgcreate volume-group1 /dev/sda4 /dev/sda5 # 创建LVM卷组
Volume group "volume-group1" successfully created
root@ubuntu20-04:~# vgdisplay # 显示LVM卷组
--- Volume group ---
VG Name volume-group1
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

root@ubuntu20-04:~# vgremove volume-group1 # 删除LVM卷组

扩展卷组

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

检测现在卷组状态:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
root@ubuntu20-04:/# vgdisplay volume-group1
--- Volume group ---
VG Name volume-group1
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 6
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
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 12800 / 50.00 GiB
Free PE / Size 33278 / 129.99 GiB
VG UUID qy0u2U-k7ef-rchG-coDQ-Wt0o-YGkx-9gtWAY

首先,创建一个 2GB 分区 sdb1

1
2
root@ubuntu20-04:/# fdisk /dev/sdb
...略

创建物理卷 /dev/sdb1

1
root@ubuntu20-04:/# pvcreate /dev/sdb1

将物理卷增加到已存在的卷组’volume-group1’上

1
root@ubuntu20-04:/# vgextend volume-group1 /dev/sdb1

使用 vgdisplay 验证,会看到卷组大小增大了。

逻辑卷 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 volume-group1 # 使用卷组创建一个50G的逻辑卷
Logical volume "lv1" created.
root@ubuntu20-04:~# lvdisplay # 显示LVM逻辑卷
--- Logical volume ---
LV Path /dev/volume-group1/lv1
LV Name lv1
VG Name volume-group1
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/volume-group1/lv1 # 格式化
root@ubuntu20-04:~# mkfs.ext4 /dev/volume-group1/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/volume-group1/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/volume-group1/lv1
Do you really want to remove and DISCARD active logical volume volume-group1/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/volume-group1/lv1 # 将卷组中的空闲空间扩展到逻辑卷
root@ubuntu20-04:/# lvresize -L 150G /dev/volume-group1/lv1 # 将逻辑卷空间大小调整为150G
root@ubuntu20-04:/# lvresize -L +50G /dev/volume-group1/lv1 # 将逻辑卷空间大小增加50G
Size of logical volume volume-group1/lv1 changed from 50.00 GiB (12800 extents) to 150.00 GiB (38400 extents).
Logical volume volume-group1/lv1 successfully resized.
root@ubuntu20-04:/# lvdisplay
--- Logical volume ---
LV Path /dev/volume-group1/lv1
LV Name lv1
VG Name volume-group1
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/volume-group1/lv1 # 检查磁盘错误
root@ubuntu20-04:~# df -hT
root@ubuntu20-04:~# resize2fs /dev/volume-group1/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/volume-group1/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/volume-group1/lv1 # 减少逻辑卷占用空间
root@ubuntu20-04:/# lvresize -L -50G /dev/volume-group1/lv1 # 将逻辑卷空间大小减少50G
root@ubuntu20-04:/# lvresize -L 50G /dev/volume-group1/lv1 # 将逻辑卷空间大小调整为50G
WARNING: Reducing active logical volume to 50.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce volume-group1/lv1? [y/n]: y
Size of logical volume volume-group1/lv1 changed from 150.00 GiB (38400 extents) to 50.00 GiB (12800 extents).
Logical volume volume-group1/lv1 successfully resized.
root@ubuntu20-04:/# lvdisplay
--- Logical volume ---
LV Path /dev/volume-group1/lv1
LV Name lv1
VG Name volume-group1
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/volume-group1/lv1 # 刷新分区
root@ubuntu20-04:~# df -hT

根分区扩容(LVM+非LVM)

查看是否使用LVM管理?

pvdisplay #查看物理卷

vgdisplay #查看卷组

lvdisplay #查看逻辑卷

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

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