软件管理,磁盘存储,文件系统以及网络协议
目录
硬盘存储术语CHS
- head:磁头 磁头数=盘面数
- track:磁道 磁道=柱面数
- sector:扇区,512bytes
- cylinder:柱面 1柱面=512 * sector数/trackhead数=51263*255=7.84M



#查看CHS
[root@localhost ~]# fdisk -l /dev/sda
Disk /dev/sda:30 GiB,32212254720 字节,62914560 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x69b7b195
设备 启动 起点 末尾 扇区 大小 Id 类型
/dev/sda1 * 2048 2099199 2097152 1G 83 Linux
/dev/sda2 2099200 62914559 60815360 29G 8e Linux LVM
#0代表SSD,1代表机械
[root@localhost ~]# lsblk -d -o name,rota
NAME ROTA
sda 1
sr0 1
磁盘存储管理
磁盘分区的优点:
- 优化I/O性能
- 实现磁盘空间配额限制
- 提高修复速度
- 隔离系统和程序
- 采用不同文件系统
分区方式:
两种分区方式:MBR,GPT
MBR结构
Boot Sector(引导扇区):
位置:硬盘的第一个扇区(LBA 0)。
大小:512 字节。
内容:
Bootstrap Code(引导代码):占用前 446 字节,用于启动操作系统的代码。
Partition Table(分区表):占用接下来的 64 字节,包含最多 4 个主分区的描述信息。
Signature(签名):最后 2 字节,固定为 0xAA55,用于标识这是一个有效的 MBR 扇区。
Partition Table(分区表):
每个分区条目:16 字节。
条目数量:最多 4 个条目。
内容:
Status(活动标志):1 字节,表示该分区是否为活动分区。
CHS Address(柱面-磁头-扇区地址):6 字节,表示分区的起始和结束位置。
Partition Type(分区类型):1 字节,表示分区的类型(如 NTFS、FAT32 等)。
LBA Address(逻辑块地址):8 字节,表示分区的起始 LBA 地址和分区的大小。
Extended Partitions(扩展分区):
逻辑分区:扩展分区可以包含多个逻辑分区,每个逻辑分区有自己的分区表。
链式结构:逻辑分区的分区表位于扩展分区的第一个扇区,每个逻辑分区指向下一个逻辑分区的分区表。
优点
兼容性:广泛支持旧操作系统和 BIOS。
简单:结构简单,容易理解和实现。
缺点
分区限制:最多只能有 4 个主分区(或 3 个主分区加 1 个扩展分区)。
最大容量:支持的最大分区大小为 2 TB(使用 512 字节扇区)
GPT结构
Protective MBR(保护性 MBR):
位置:硬盘的第一个扇区(LBA 0)。
内容:类似于传统的 MBR,但只有一个占位的分区,用于防止旧的操作系统误认为硬盘是未分区的。
Primary GPT Header(主 GPT 头):
位置:硬盘的第二个扇区(LBA 1)。
大小:通常为 512 字节。
内容:
Signature(签名):固定为 EFI PART。
Version(版本号):GPT 规范的版本。
Size(大小):GPT 头的大小。
CRC32 Checksum(校验和):用于验证 GPT 数据的完整性。
Current LBA(当前 LBA 地址):GPT 头所在的位置。
Backup LBA(备份 LBA 地址):备份 GPT 头所在的位置。
Partition Entries LBA(分区条目 LBA 地址):分区条目表的起始位置。
Number of Partition Entries(分区条目数量):分区条目的总数。
Size of Partition Entry(分区条目大小):每个分区条目的大小。
Partition Entries(分区条目表):
位置:从 Partition Entries LBA 开始。
内容:
Partition Type GUID(分区类型 GUID):表示分区的类型。
Unique Partition GUID(唯一分区 GUID):表示分区的唯一标识。
Starting LBA(起始 LBA 地址):分区的起始位置。
Ending LBA(结束 LBA 地址):分区的结束位置。
Attributes(属性):分区的属性。
Name(名称):分区的名称。
Backup GPT Header(备份 GPT 头):
位置:硬盘的最后一个扇区(LBA -1)。
内容:与主 GPT 头相同,用于冗余和恢复。
优点
分区数量:支持最多 128 个分区。
最大容量:支持超过 2 TB 的分区大小,理论上支持到 EB(Exabyte)级别的分区。
冗余:主 GPT 头和备份 GPT 头提供冗余,增强了数据的可靠性。
唯一标识:每个分区都有唯一的 GUID,便于管理和识别。
缺点
兼容性:不被所有旧操作系统和 BIOS 支持,需要 UEFI 引导。
复杂性:结构相对复杂,实现和管理较为复杂
总结
MBR:适用于小容量硬盘(<= 2 TB),最多支持 4 个主分区,兼容旧操作系统和 BIOS。
GPT:适用于大容量硬盘(> 2 TB),支持更多分区(最多 128 个),提供冗余和唯一标识,需要 UEFI 引导。
分区管理
#列出块设备
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 30G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 29G 0 part
├─rl-root 253:0 0 26G 0 lvm /
└─rl-swap 253:1 0 3G 0 lvm [SWAP]
sr0 11:0 1 2G 0 rom
#查看分区情况
[root@localhost ~]# blkid
/dev/sdb1: UUID="b47109a2-041c-4c77-97c3-bf37caf8b307" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="058053f9-01"
/dev/sdb5: UUID="1687a324-305d-4821-aa09-c6ce363ff5be" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="058053f9-05"
/dev/sda1: UUID="982d5922-9968-45a9-9859-6ef07c69a7ec" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="69b7b195-01"
/dev/sda2: UUID="98V7kE-7aau-G2sA-extU-3uaQ-Oq56-5AfVXZ" TYPE="LVM2_member" PARTUUID="69b7b195-02"
/dev/sr0: BLOCK_SIZE="2048" UUID="2021-11-14-09-30-59-00" LABEL="Rocky-8-5-x86_64-dvd" TYPE="iso9660" PTUUID="6b8b4567" PTTYPE="dos"
/dev/mapper/rl-root: UUID="30bcee18-3966-47e9-8b91-cd0e8ae0312a" BLOCK_SIZE="512" TYPE="xfs"
/dev/mapper/rl-swap: UUID="eda505fd-1f26-4fd4-89fd-980c9789c618" TYPE="swap"
创建分区命令
fdisk 管理MBR分区
gdisk 管理GPT分区(和fdisk用法类似)
parted 高级分区操作,可以是交互或非交互方式
分区类型
主分区
标识:主分区的编号通常是从 1 开始的连续数字,例如 /dev/sda1、/dev/sda2。
限制:最多 4 个主分区。
扩展分区
标识:扩展分区通常编号为 /dev/sda4(如果前三个是主分区)。
限制:一个磁盘上只能有一个扩展分区。
逻辑分区
标识:逻辑分区的编号从 5 开始,例如 /dev/sda5、/dev/sda6。
限制:逻辑分区只能从扩展分区里分,例如:扩展分区有10G,那么创建逻辑分区时最大只有10G,且创建个数没有限制。
fdisk命令
fdisk [设备名]
常用选项:
p:打印当前磁盘的分区表
n:创建新分区
d:删除分区
t:更改分区类型
w:保存更改并退出 fdisk
q:不保存更改并退出 fdisk
l:列出所有已知的分区类型
m:显示所有可用的命令
范例:
#创建主分区
[root@localhost ~]# lsblk -l
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 30G 0 disk
sda1 8:1 0 1G 0 part /boot
sda2 8:2 0 29G 0 part
sdb 8:16 0 20G 0 disk
sr0 11:0 1 2G 0 rom
rl-root 253:0 0 26G 0 lvm /
rl-swap 253:1 0 3G 0 lvm [SWAP]
[root@localhost ~]# lsblk /dev/sdb -l
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 20G 0 disk
[root@localhost ~]# fdisk /dev/sdb
设备不包含可识别的分区表。
创建了一个磁盘标识符为 0x058053f9 的新 DOS 磁盘标签。
命令(输入 m 获取帮助):n #创建新分区
分区类型
p 主分区 (0个主分区,0个扩展分区,4空闲)
e 扩展分区 (逻辑分区容器)
选择 (默认 p):p #创建主分区
分区号 (1-4, 默认 1): #选择分区号
第一个扇区 (2048-41943039, 默认 2048): #从2048往后开始
上个扇区,+sectors 或 +size{K,M,G,T,P} (2048-41943039, 默认 41943039): +5G
创建了一个新分区 1,类型为“