磁盘分区

一、磁盘分区概念

  • 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表示检查


四、交换分区

img

  • 在硬盘上面开辟的一个存储空间,占用的存储空间,存储临时内存数据

  • 主要作用就是当内存不够用时候,可以运行更多的软件

  • 先创建一个分区,然后格式化为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 

五、逻辑卷

  • 上面都是传统的磁盘分区,如果一个磁盘的分区占用完了,那么就需要另外一块磁盘来继续存储数据,很麻烦,就会有很多的磁盘

  • 如果一个逻辑卷的空间用完的完,继续来一块磁盘,加大这个卷组里面去即可,扩大这个逻辑卷的空间即可

img

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

posted @ 2025-09-09 14:45  乔的港口  阅读(11)  评论(0)    收藏  举报