磁盘分区
一、磁盘分区概念
- linux数据都存储在磁盘中去了
[root@master ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sr0 11:0 1 7.9G 0 rom # 镜像iso
nvme0n1 259:0 0 50G 0 disk # 系统盘
├─nvme0n1p1 259:1 0 500M 0 part /boot # 挂载到/boot分区了
└─nvme0n1p2 259:2 0 49.5G 0 part
└─rhel-root 253:0 0 49.5G 0 lvm / # 挂载到根分区了
nvme0n2 259:3 0 20G 0 disk
1、MBR磁盘格式(msdos)
-
这个是旧的磁盘
-
最大只能分4个主分区,也可以是3个主分区,哟个扩展分区,在扩展分区上面创建多个逻辑分区
-
扩展分区不能存储数据,只能在扩展分区上面创建逻辑分区才能存储数据
-
最大分区的存储空间为2个T
2、GTP磁盘格式
- 可以支持2个T以上的,最大为28个分区
二、磁盘分区工具
1、fdisk命令(交互式操作)
1、命令帮助
[root@master ~]# fdisk /dev/nvme0n2
# p 打印这个磁盘的分区信息
# n 设置分区
# w保存并且退出
# t改变磁盘类型,81还是82
# l 列出磁盘的所有类型
# g 设置gpt类型的磁盘,一但转换磁盘上面的所有数据都会消失
# o 设置mbr类型的磁盘
# d 删除分区
2、fdisk分区
# 创建一个主分区,一个扩展分区,2个逻辑分区
# 逻辑分区从序号5开始
[root@master ~]# fdisk /dev/nvme0n2
Welcome to fdisk (util-linux 2.37.4).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): p
Disk /dev/nvme0n2: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual NVMe Disk
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: dos
Disk identifier: 0xd9c7f4d0
# 创建一个主分区
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p):
Using default response p.
Partition number (1-4, default 1):
First sector (2048-41943039, default 2048):
# 大小为2个G
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-41943039, default 41943039): +2G
Created a new partition 1 of type 'Linux' and of size 2 GiB.
Command (m for help): n
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
# 创建一个扩展分区,e
Select (default p): e
Partition number (2-4, default 2):
First sector (4196352-41943039, default 4196352):
# 扩展分区的大小为5G,但是显示的时候是1K
Last sector, +/-sectors or +/-size{K,M,G,T,P} (4196352-41943039, default 41943039): +5G
Created a new partition 2 of type 'Extended' and of size 5 GiB.
Command (m for help): n
Partition type
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5) # 逻辑分区从5开始创建
Select (default p): l
Adding logical partition 5
First sector (4198400-14682111, default 4198400):
# 逻辑分区的大小为2G
Last sector, +/-sectors or +/-size{K,M,G,T,P} (4198400-14682111, default 14682111): +2G
Created a new partition 5 of type 'Linux' and of size 2 GiB.
Command (m for help): p
Disk /dev/nvme0n2: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual NVMe Disk
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: dos
Disk identifier: 0xd9c7f4d0
Device Boot Start End Sectors Size Id Type
/dev/nvme0n2p1 2048 4196351 4194304 2G 83 Linux
/dev/nvme0n2p2 4196352 14682111 10485760 5G 5 Extended
/dev/nvme0n2p5 4198400 8392703 4194304 2G 83 Linux
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
[root@master ~]# fdisk -l /dev/nvme0n2
Disk /dev/nvme0n2: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk model: VMware Virtual NVMe Disk
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: dos
Disk identifier: 0xd9c7f4d0
Device Boot Start End Sectors Size Id Type
/dev/nvme0n2p1 2048 4196351 4194304 2G 83 Linux
/dev/nvme0n2p2 4196352 14682111 10485760 5G 5 Extended
/dev/nvme0n2p5 4198400 8392703 4194304 2G 83 Linux # 看到这个5以上就知道这个是逻辑分区,必须在扩展分区上面创建才行
[root@master ~]#
2、parted工具(非交互式)
1、交互式操作
- 也有交互式的,但是非交互式的在shell脚本中的话,非常的好用
root@master ~]# parted /dev/nvme0n2
GNU Parted 3.4
Using /dev/nvme0n2
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p # 打印信息
Model: VMware Virtual NVMe Disk (nvme)
Disk /dev/nvme0n2: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1000MB 3000MB 2000MB primary
(parted) mklabel # 标签
New disk label type? msdos
Warning: The existing disk label on /dev/nvme0n2 will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? n
(parted) mkpart
Partition type? primary/extended? primary
File system type? [ext2]? ext4 # 这个是预测的
Start? 3G # 起始大小
End? 5G # 最后大小
(parted) p
Model: VMware Virtual NVMe Disk (nvme)
Disk /dev/nvme0n2: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1000MB 3000MB 2000MB primary
2 3000MB 5000MB 2000MB primary ext4 lba
2、非交互式操作
[root@master ~]# parted /dev/nvme0n2 mklabel msdos
[root@master ~]# parted /dev/nvme0n2 mkpart primary ext4 0G 3G
Information: You may need to update /etc/fstab.
3、总结
需要注意的就是,要再次划分区域的话,就要在上一次的结束位置开始划分,不然的话,会报错,上次的起始位置为3G,那么下一个分区的时候也是3G
1)先进行分区格式的设置,msdos还是gpt格式
2)然后再来进行分区的大小设置,就是这个,主分区还是扩展分区,文件系统的类型,起始的位置和结束的位置
3)最后print,列出磁盘分区的信息
4)quit,退出(即生效)
三、磁盘格式化和挂载
1、磁盘格式化
- 一个磁盘分完区后,就必须要格式化后,才能存储数据
# mkfs -t ext4 将这个磁盘格式化为ext4文件系统
[root@master ~]# mkfs -t ext4 /dev/nvme0n2p1
mke2fs 1.46.5 (30-Dec-2021)
Creating filesystem with 524288 4k blocks and 131072 inodes
Filesystem UUID: 995885d2-f884-434c-a9a6-b0824693fa9a
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
# 查看格式化的类型为ext4
[root@master ~]# blkid /dev/nvme0n2p1
/dev/nvme0n2p1: UUID="995885d2-f884-434c-a9a6-b0824693fa9a" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="d9c7f4d0-01"
2、挂载(mount)
-
相当于是一个u盘挂载上去了,就可以存储数据,也可以取消挂载
-
-o选项可以添加多个参数,可读,异步等等参数
[root@master ~]# mount /dev/nvme0n2p1 /mnt
[root@master ~]# df -hT /mnt
Filesystem Type Size Used Avail Use% Mounted on
/dev/nvme0n2p1 ext4 2.0G 24K 1.8G 1% /mnt
# 取消挂载
[root@master ~]# umount /mnt
3、永久挂载
- 将这个文件写入到/etc/fstab这个文件即可
/dev/nvme0n2p1 /mnt ext4 defaults 0 0
# 可以将fstab里面自动进行挂载
[root@master ~]# mount -a
[root@master ~]# df -hT /mnt
Filesystem Type Size Used Avail Use% Mounted on
/dev/nvme0n2p1 ext4 2.0G 24K 1.8G 1% /mnt
# 第一列 设备名称
# 第二列 挂载地方
# 第三列 文件系统
# 第四列 挂载选项
# 第五列 是否备份
# 第六列 是否检查文件系统错误 0不检查,1表示检查
四、交换分区

-
在硬盘上面开辟的一个存储空间,占用的存储空间,存储临时内存数据
-
主要作用就是当内存不够用时候,可以运行更多的软件
-
先创建一个分区,然后格式化为swap类型的,最后进行挂载即可
[root@master ~]# free -th
total used free shared buff/cache available
Mem: 1.9Gi 262Mi 1.5Gi 5.0Mi 186Mi 1.5Gi
Swap: 0B 0B 0B
Total: 1.9Gi 262Mi 1.5Gi
# 创建分区已经完成了,直接进行格式化
[root@master ~]# mkswap /dev/nvme0n2p5
mkswap: /dev/nvme0n2p5: warning: wiping old swap signature.
Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=73379a04-d12e-4022-a2a9-123f91c7a872
# 挂载交换分区
[root@master ~]# swapon /dev/nvme0n2p5
[root@master ~]# free -th
total used free shared buff/cache available
Mem: 1.9Gi 263Mi 1.5Gi 5.0Mi 186Mi 1.5Gi
Swap: 2.0Gi 0B 2.0Gi
Total: 3.9Gi 263Mi 3.5Gi
# 卸载交换分区
[root@master ~]# swapoff /dev/nvme0n2p5
# 或者swapoff -a
五、逻辑卷
-
上面都是传统的磁盘分区,如果一个磁盘的分区占用完了,那么就需要另外一块磁盘来继续存储数据,很麻烦,就会有很多的磁盘
-
如果一个逻辑卷的空间用完的完,继续来一块磁盘,加大这个卷组里面去即可,扩大这个逻辑卷的空间即可

1、创建物理分区
[root@master ~]# lsblk -l /dev/nvme0n2
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n2 259:3 0 20G 0 disk
nvme0n2p1 259:6 0 5G 0 part
nvme0n2p2 259:7 0 10G 0 part
# 都变成物理分区
[root@master ~]# pvcreate /dev/nvme0n2p1
Physical volume "/dev/nvme0n2p1" successfully created.
[root@master ~]# pvcreate /dev/nvme0n2p
nvme0n2p1 nvme0n2p2
[root@master ~]# pvcreate /dev/nvme0n2p
nvme0n2p1 nvme0n2p2
[root@master ~]# pvcreate /dev/nvme0n2p2
Physical volume "/dev/nvme0n2p2" successfully created.
# 查看物理分区
[root@master ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/nvme0n1p2 rhel lvm2 a-- <49.51g 0
/dev/nvme0n2p1 lvm2 --- 5.00g 5.00g
/dev/nvme0n2p2 lvm2 --- 10.00g 10.00g
2、创建卷组
[root@master ~]# vgcreate vg1 /dev/nvme0n2p1
Volume group "vg1" successfully created
[root@master ~]# vgs
VG #PV #LV #SN Attr VSize VFree
rhel 1 1 0 wz--n- <49.51g 0
vg1 1 0 0 wz--n- <5.00g <5.00g
3、创建逻辑卷
# 从vg里面进行获取到
[root@master ~]# lvcreate -n lv1 -L 3G vg1
Logical volume "lv1" created.
[root@master ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root rhel -wi-ao---- <49.51g
lv1 vg1 -wi-a----- 3.00g
4、扩容逻辑卷
-
上面的逻辑卷大小为3g,扩容到8G
-
首先查看vg大小,能否支持扩容,如果不行的话,将另一个磁盘加入到这个卷组里面去即可
-
对逻辑卷进行扩容后,还需要对文件系统进行扩容,有一个延迟性
# 加入到这个卷组里面去
[root@master ~]# vgextend vg1 /dev/nvme0n2p2
Volume group "vg1" successfully extended
[root@master ~]# vgs
VG #PV #LV #SN Attr VSize VFree
rhel 1 1 0 wz--n- <49.51g 0
vg1 2 1 0 wz--n- 14.99g 11.99g
[root@master ~]# vgs
VG #PV #LV #SN Attr VSize VFree
rhel 1 1 0 wz--n- <49.51g 0
vg1 2 1 0 wz--n- 14.99g 11.99g
# 直接扩容到8G
[root@master ~]# lvextend -L 8G /dev/vg1/lv1
Size of logical volume vg1/lv1 changed from 3.00 GiB (768 extents) to 8.00 GiB (2048 extents).
Logical volume vg1/lv1 successfully resized.
# 添加2个G 写法就是 +2G
# 添加到5G 写法就是5G
-
刷新文件系统的方法
-
对于ext4的类型的话,resize2fs /dev/vg0/lv0
-
对一xfs类型的话 xfs_grows 后面加上挂载点 xfs_ grows /mnt
5、挂载逻辑卷和卸载逻辑卷
# 需要进行格式化操作,才能挂载
[root@master ~]# mount /dev/vg1/lv1 /mnt/
mount: /mnt: wrong fs type, bad option, bad superblock on /dev/mapper/vg1-lv1, missing codepage or helper program, or other error.
[root@master ~]# mkfs -t ext4 /dev/vg1/lv1
mke2fs 1.46.5 (30-Dec-2021)
Creating filesystem with 2621440 4k blocks and 655360 inodes
Filesystem UUID: de546fe9-46c8-451e-8f7c-fbd3626389ae
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
[root@master ~]# mount /dev/vg1/lv1 /mnt
- 卸载逻辑卷
# 取消挂载
[root@master ~]# umount /mnt
[root@master ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root rhel -wi-ao---- <49.51g
lv1 vg1 -wi-a----- 10.00g
# 删除逻辑卷
[root@master ~]# lvremove lv1
Volume group "lv1" not found
Cannot process volume group lv1
[root@master ~]# vgs
VG #PV #LV #SN Attr VSize VFree
rhel 1 1 0 wz--n- <49.51g 0
vg1 2 1 0 wz--n- 14.99g 4.99g
# 删除卷组
[root@master ~]# vgremove vg1
Do you really want to remove volume group "vg1" containing 1 logical volumes? [y/n]: y
Do you really want to remove active logical volume vg1/lv1? [y/n]: y
Logical volume "lv1" successfully removed.
Volume group "vg1" successfully removed
[root@master ~]# vgs
VG #PV #LV #SN Attr VSize VFree
rhel 1 1 0 wz--n- <49.51g 0
[root@master ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/nvme0n1p2 rhel lvm2 a-- <49.51g 0
/dev/nvme0n2p1 lvm2 --- 5.00g 5.00g
/dev/nvme0n2p2 lvm2 --- 10.00g 10.00g
# 删除物理分区
[root@master ~]# pvremove /dev/nvme0n2p1
Labels on physical volume "/dev/nvme0n2p1" successfully wiped.
[root@master ~]# pvremove /dev/nvme0n2p2
Labels on physical volume "/dev/nvme0n2p2" successfully wiped.
[root@master ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/nvme0n1p2 rhel lvm2 a-- <49.51g 0
[root@master ~]#
六、修复文件系统
-
对于ext4的话 e2fsck /dev/sda1
-
对于xfs的话 xfs_reparis 设备
详情参考https://www.cnblogs.com/qw77/p/18062575

浙公网安备 33010602011771号