分区的两种格式
1、MBR分区
MBR(Master Boot Record,主引导记录)是传统的分区机制,使用BI0S引导PC设备,寻址空间只有32bit长。
分区空间最大支持2.2TB
支持的分区数量:4个主分区或者3个主分区1个扩展分区
为什么MBR最多只能有4个主分区?
因为分区表占据64个字节,其中每个分区的信息占用16个字节分区表里面可以记录四个分区信息描述。
2、GPT分区
GPT(GUID Partition Table,全局唯一标识分区表)是一种比MBR分区更先进、更灵活的磁盘分区模式
在默认情况下,GPT最多可支持128个分区
支持大于2.2TB的总容量及大于2.2TB的分区,最大支持
18EB(1EB=1024PB,1PB=1024TB,1TB=1024GB)
GPT分区表自带备份
向后兼容MBR,GPT分区表上包含保护性的MBR区域
查看磁盘信息(块设备)
[root@kongd ~]# lsblk (block的缩写)
虚拟磁盘类型
IDE(I)(推荐) 磁盘文件名为/dev/hd[a-d]
SCSI(S) 磁盘文件名为/dev/sd[a-z]
SATA(A) 磁盘文件名为/dev/sd[a-z]
NVMe(V) 磁盘文件名为/dev/nvme0n[1-10..](固态硬盘)
只有在虚拟机电源处于关闭状态时,才能添加 IDE 磁盘。
只有在虚拟机电源处于关闭状态时,才能添加 NVMe磁盘。
#示例1:创建gpt格式的分区
[root@xxx ~]# 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.
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0xbbf5e9a9.
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 #dos代表的是mbr。fdisk 默认分区为mbr。
Disk identifier: 0xbbf5e9a9
Command (m for help): g #创建gpt格式分区
Created a new GPT disklabel (GUID: 317F64E5-AE7A-FF4A-8DD1-BF52D70E4F73).
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: gpt #gpt代表的是gpt分区
Disk identifier: 317F64E5-AE7A-FF4A-8DD1-BF52D70E4F73
Command (m for help): n #添加分区
Partition number (1-128, default 1): #分区编号,默认是1
First sector (2048-41943006, default 2048): #从哪里开始,默认从2048开始
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-41943006, default 41943006): +5g #选择大小。
Created a new partition 1 of type 'Linux filesystem' and of size 5 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: gpt
Disk identifier: 317F64E5-AE7A-FF4A-8DD1-BF52D70E4F73
Device Start End Sectors Size Type
/dev/nvme0n2p1 2048 10487807 10485760 5G Linux filesystem
Command (m for help): w #保存并退出
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
[root@xxx ~]# lsblk -p #查看
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
/dev/sr0 11:0 1 9.8G 0 rom /run/media/root/RHEL-9-3-0-BaseOS-x86_64
/dev/nvme0n1 259:0 0 20G 0 disk
├─/dev/nvme0n1p1 259:1 0 600M 0 part /boot/efi
├─/dev/nvme0n1p2 259:2 0 1G 0 part /boot
└─/dev/nvme0n1p3 259:3 0 18.4G 0 part
├─/dev/mapper/rhel-root 253:0 0 16.4G 0 lvm /
└─/dev/mapper/rhel-swap 253:1 0 2G 0 lvm [SWAP]
/dev/nvme0n2 259:4 0 20G 0 disk
└─/dev/nvme0n2p1 259:5 0 5G 0 part
[root@xxx ~]# 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: gpt
Disk identifier: 317F64E5-AE7A-FF4A-8DD1-BF52D70E4F73
Device Start End Sectors Size Type
/dev/nvme0n2p1 2048 10487807 10485760 5G Linux filesystem
[root@xxx ~]#
[root@xxx ~]#
[root@xxx ~]#
[root@xxx ~]#
Command (m for help): d #删除分区
Selected partition 1 #选择分区1删除
Partition 1 has been deleted. #分区1已删除
Command (m for help): n #添加分区
l logical (numbered from 5) #l代表逻辑分区
p primary (1 primary, 0 extended, 3 free) #p代表主分区
e extended (container for logical partitions) #e代表扩展分区
Partition number (2-4, default 2): #分区编号
First sector (4196352-41943039, default 4196352): #开始位置
Last sector, +/-sectors or +/-size{K,M,G,T,P} (4196352-41943039, default 41943039): +4g #选择大小,设置为4g
Created a new partition 2 of type 'Extended' and of size 4 GiB.
注意:硬盘也可以不分区
分区格式化(创建文件系统)
格式化的目的: 是为了形成文件系统,文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。
理解为:画格子
文件系统的类型:ext2、ext3、ext4、xfs
文件系统 | 优点 | 缺点 |
ext2 | 简单和稳定,是最早的Linux文件系统之一。 资源消耗较低,适合在资源有限的环境下使用。 | 不支持日志功能,文件系统崩溃后恢复数据的能力较差。 不适合大容量存储或者需要频繁写入的场景,容易产生碎片。 |
ext3 | 支持日志功能,提高了文件系统的稳定性和可靠性。 能够在崩溃时快速恢复文件系统,减少数据损失。 | 对大文件的性能表现不如其他文件系统,因为其设计时考虑了更多的数据一致性而非性能优化。 |
ext4 | 改进了性能和可靠性,特别是针对大容量存储和大文件操作进行了优化。 支持更大的文件和分区大小。 提供更高的文件系统检查和恢复能力。 | 在某些情况下可能会牺牲一些数据一致性来获得更高的性能。 |
xfs | 非常适合大文件和大容量的存储需求,有着出色的性能表现。 支持高达16 EB的文件系统和文件大小。 有效地管理大容量的数据,并具有良好的扩展性和高并发性能。 | 在处理大量小文件时,性能可能不如其他文件系统。 |
mkfs :用来创建文件系统
blkid : 打印块设备属性,默认打印所有
示例1: 给上面的mbr格式分区中的主分区创建ext4的文件系统。逻辑分区创建xfs的文件系统。
[root@xxx ~]# mkfs.ext4 /dev/nvme0n2p1 #给/dev/nvme0n2p1创建ext4类型的文件系统
[root@xxx ~]# mkfs.xfs /dev/nvme0n2p5 #给/dev/nvme0n2p5创建xfs类型的文件系统
[root@xxx ~]#
[root@xxx ~]# blkid #查看信息
[root@xxx ~]#
注意:一块硬盘中不可以同时有mbr和gpt分区,也就是说一个硬盘只能是一种分区格式。但是不同的硬盘中可以是不同的文件系统。
【面试笔试】常见的文件系统类型?
答:ext2、ext3、ext4、xfs
分区挂载
挂载:将文件系统的内容(通常是存储设备上的内容)映射到指定的目录,使得可以访问这些内容。
mount :挂载一个文件系统
示例:将上面的ext4类型的文件系统的主分区挂载到/tmp/test1目录,并写入文件内容为 "this is xixi" 文件名为xixi.txt的文件。xfs类型的文件系统的逻辑分区挂载到/tmp/test2目录,并写入文件内容为 "this is haha" 文件名为haha.txt的文件。
[root@xxx ~]# mkdir /root/test1 #创建/root/test1文件
[root@xxx ~]# mkdir /root/test2
[root@xxx ~]# mkdir /root/test3
[root@xxx ~]# mount /dev/nvme0n2p1 /root/test1 #把/dev/nvme0n2p1 挂载到/root/test1
[root@xxx ~]# mount #查看挂载
[root@xxx ~]# cd /root/test1 #去到挂载目录
[root@xxx test1]# echo this is test1 > 1.txt #在挂载目录里面创建一个文件内容为this is test1 文件名为1.txt的文件
[root@xxx ~]# umount /dev/nvme0n2p1 #umount 取消挂载。把/dev/nvme0n2p1取消挂载。以分区来取消挂载
[root@xxx ~]# umount /root/test2 #umount取消挂载。以挂载的目录取消
#注意:不要在挂载目录里面去取消挂载
[root@xxx ~]# mount /dev/nvme0n2p5 /root/test3
[root@xxx ~]# cd /root/test3
[root@xxx test3]# ls
[root@xxx test3]# umount /dev/nvme0n2p5
umount: /root/test3: target is busy.
[root@xxx test3]# cd
[root@xxx ~]# umount /dev/nvme0n2p5
[root@xxx ~]#
【注意】
单一文件系统不应该被重复挂载在不同的挂载点(目录)中
单一目录不应该重复挂载多个文件系统
作为挂载点的目录,应为空目录,否则原有数据会隐藏
查看磁盘空间使用量:df,du
df : 查看磁盘空间的使用情况(-h)
du : 某个文件或者目录所占用的磁盘空间情况。(-h)
[root@xxx ~]# df -h
[root@xxx ~]# du -h
lvm逻辑卷
LVM是 Logical Volume Manager(逻辑卷管理)的简写,LVM将若干个磁盘或者磁盘分区连接为一个整块的卷组,形成一个存储池。管理员可以在卷组上任意创建逻辑卷,并进一步在逻辑卷上创建文件系统。管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配。
假设有三块磁盘/dev/sdb、/dev/sdc和/dev/sdd用来划分逻辑卷,LVM模型如图所示:
创建逻辑卷(lvm)
创建逻辑卷(lvm)流程:pv -> vg -> lv
1、创建物理卷(pv)
#创建pv,命令:pvcreate 要创建为物理卷的设备或分区
[root@localhost ~]# pvcreate /dev/sda1 /dev/sdb1
WARNING: ext4 signature detected on /dev/sda1 at offset 1080. Wipe it? [y/n]: y
Wiping ext4 signature on /dev/sda1.
Physical volume "/dev/sda1" successfully created.
Physical volume "/dev/sdb1" successfully created.
[root@localhost ~]# pvscan #列出所有物理卷(pv),简写pvs
PV /dev/nvme0n1p3 VG rhel lvm2 [18.41 GiB / 0 free]
PV /dev/sda1 lvm2 [5.00 GiB]
PV /dev/sdb1 lvm2 [2.00 GiB]
Total: 3 [25.41 GiB] / in use: 1 [18.41 GiB] / in no VG: 2 [7.00 GiB]
[root@localhost ~]# pvdisplay #显示物理卷(pv)的各种属性
2、创建卷组(vg)
# 命令:vgcreate 卷组名称 物理卷名称
[root@localhost ~]# vgcreate vg01 /dev/sda1 /dev/sdb1
Volume group "vg01" successfully created
[root@localhost ~]# vgs #搜索所有的卷组
VG #PV #LV #SN Attr VSize VFree
rhel 1 2 0 wz--n- 18.41g 0
vg01 2 0 0 wz--n- 6.99g 6.99g
[root@localhost ~]# vgdisplay #展示卷组的信息
3、创建逻辑卷(lv)
# 命令:lvcreate -n 逻辑卷名称 -L 逻辑卷大小 卷组名称
[root@localhost ~]# lvcreate -n lv01 -L 3G vg01 #大小不能大于vg的大小。
Logical volume "lv01" created.
[root@localhost ~]# lvs #展示逻辑卷的信息
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root rhel -wi-ao---- 16.41g
swap rhel -wi-ao---- 2.00g
lv01 vg01 -wi-a----- 3.00g
[root@localhost ~]# lvdisplay #展示逻辑卷的详细信息
4、格式化
#lsblk -p 或者fdisk -l 查看lvm的完整设备文件名
[root@localhost dev]# fdisk -l
....
Disk /dev/mapper/vg01-lv01: 3 GiB, 3221225472 bytes, 6291456 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
#格式化
[root@localhost ~]# mkfs.xfs /dev/mapper/vg01-lv01
meta-data=/dev/mapper/vg01-lv01 isize=512 agcount=4, agsize=196608 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=1 inobtcount=1
data = bsize=4096 blocks=786432, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost ~]#
注意:mkfs.xfs /dev/mapper/vg01-lv01 可以换成mkfs.xfs /dev/vg01/lv01,因为都是dm-2的软链接。
[root@localhost ~]# ll /dev/mapper/vg01-lv01
lrwxrwxrwx. 1 root root 7 Apr 15 15:21 /dev/mapper/vg01-lv01 -> ../dm-2
[root@localhost ~]# ll /dev/vg01/lv01
lrwxrwxrwx. 1 root root 7 Apr 15 15:21 /dev/vg01/lv01 -> ../dm-2
[root@localhost ~]#
5、挂载
[root@localhost ~]# mkdir test4
[root@localhost ~]# ll test4
total 0
[root@localhost ~]# mount /dev/mapper/vg01-lv01 test4
[root@localhost ~]# df -h | grep test4
/dev/mapper/vg01-lv01 3.0G 54M 3.0G 2% /root/test4
[root@localhost ~]#
删除逻辑卷(lvm)
创建逻辑卷(lvm)流程:lv -> vg -> pv
#卸载
[root@localhost ~]# umount test4
[root@localhost ~]# df -h | grep test4
[root@localhost ~]# lvremove /dev/mapper/vg01-lv01
Do you really want to remove active logical volume vg01/lv01? [y/n]: y
Logical volume "lv01" successfully removed.
[root@localhost ~]# vgremove vg01
Volume group "vg01" successfully removed
[root@localhost ~]# pvremove /dev/sda1
Labels on physical volume "/dev/sda1" successfully wiped.
[root@localhost ~]# pvremove /dev/sdb1
Labels on physical volume "/dev/sdb1" successfully wiped.
[root@localhost ~]#