软件管理,磁盘存储,文件系统以及网络协议
2025-08-22 15:59:48,

目录

硬盘存储术语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,类型为“Linux”,大小为 5 GiB。
命令(输入 m 获取帮助):p    #查看分区表
Disk /dev/sdb:20 GiB,21474836480 字节,41943040 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x058053f9

设备       启动  起点     末尾     扇区 大小 Id 类型
/dev/sdb1        2048 10487807 10485760   5G 83 Linux

命令(输入 m 获取帮助):w    #保存退出
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。

[root@localhost ~]# lsblk /dev/sdb
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb      8:16   0  20G  0 disk 
└─sdb1   8:17   0   5G  0 part 



#创建扩展分区和逻辑分区
[root@localhost ~]# fdisk /dev/sdb


命令(输入 m 获取帮助):n
分区类型
   p   主分区 (1个主分区,0个扩展分区,3空闲)
   e   扩展分区 (逻辑分区容器)
选择 (默认 p):e
分区号 (2-4, 默认  2): 
第一个扇区 (10487808-41943039, 默认 10487808): 
上个扇区,+sectors 或 +size{K,M,G,T,P} (10487808-41943039, 默认 41943039): +5G

创建了一个新分区 2,类型为“Extended”,大小为 5 GiB。

命令(输入 m 获取帮助):p
Disk /dev/sdb:20 GiB,21474836480 字节,41943040 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x058053f9
设备       启动     起点     末尾     扇区 大小 Id 类型
/dev/sdb1           2048 10487807 10485760   5G 83 Linux
/dev/sdb2       10487808 20973567 10485760   5G  5 扩展

命令(输入 m 获取帮助):n
分区类型
   p   主分区 (1个主分区,1个扩展分区,2空闲)
   l   逻辑分区 (从 5 开始编号)
选择 (默认 p):l

添加逻辑分区 5
第一个扇区 (10489856-20973567, 默认 10489856): 
上个扇区,+sectors 或 +size{K,M,G,T,P} (10489856-20973567, 默认 20973567): +2G

创建了一个新分区 5,类型为“Linux”,大小为 2 GiB。

命令(输入 m 获取帮助):p
Disk /dev/sdb:20 GiB,21474836480 字节,41943040 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x058053f9

设备       启动     起点     末尾     扇区 大小 Id 类型
/dev/sdb1           2048 10487807 10485760   5G 83 Linux
/dev/sdb2       10487808 20973567 10485760   5G  5 扩展
/dev/sdb5       10489856 14684159  4194304   2G 83 Linux

命令(输入 m 获取帮助):w
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。



[root@localhost ~]# lsblk /dev/sdb -l
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb    8:16   0  20G  0 disk 
sdb1   8:17   0   5G  0 part 
sdb2   8:18   0   1K  0 part 
sdb5   8:21   0   2G  0 part 

扩展分区:显示为 1K 是正常的,因为它是一个容器分区,不直接存储数据。
验证方法:使用 fdisk -l 或 parted print 命令可以查看扩展分区和逻辑分区的详细信息

文件系统

  • 创建好分区后,只是相当于创建了一个容量空间,需要创建一个文件系统来负责管理和存储文件信息。
  • 从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,安全控制,日志,压缩,加密等。
  • 创建文件系统可以理解为windows的磁盘格式化,一个新加盘,如果没有进行格式化处理是没有办法使用的。
  • 在创建文件系统时可以指定块大小,块即存放文件的最小单位,例如:指点块大小为4k,无论存放的文件有多小,它都要占据4k的存储空间。

Linux中常用的文件系统


Ext4 (Fourth Extended File System)
特点:
* EXT4是Linux系统下的日志文件系统,是EXT3文件系统的后继版本
* Ext4的文件系统容量达到1EB,而支持单个文件则达到16TB
* 理论上支持无限数量的子目录
* Ext4文件系统使用64位空间记录块数量和 inode数量
* Ext4的多块分配器支持一次调用分配多个数据块
* 修复速度更快

应用场景:目前最常用的 Linux 文件系统之一,广泛应用于各种 Linux 发行版。

XFS (Extended File System)
特点:
* 根据所记录的日志在很短的时间内迅速恢复磁盘文件内容
* 用优化算法,日志记录对整体文件操作影响非常小
* 是一个全64-bit的文件系统,最大可以支持8EB的文件系统,而支持单个文件则达到8EB
* 能以接近裸设备I/O的性能存储数据

应用场景:适用于需要高性能存储的场景,如数据库服务器和文件服务器。

挂载

  • 挂载:将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口的行为。
  • 卸载:为解除此关联关系的过程。
  • 挂载点下原有文件在挂载完成后会被临时隐藏,因此,挂载点目录一般为空。
  • 进程正在使用中的设备无法被卸载。

创建文件系统

#sda的文件系统是xfs,挂载到了/root下,sdb什么都没有
[root@localhost yum.repos.d]# lsblk -f
NAME        FSTYPE     LABEL                UUID                                   MOUNTPOINT
sda                                                                                
├─sda1      xfs                             982d5922-9968-45a9-9859-6ef07c69a7ec   /boot
└─sda2      LVM2_membe                      98V7kE-7aau-G2sA-extU-3uaQ-Oq56-5AfVXZ 
  ├─rl-root xfs                             30bcee18-3966-47e9-8b91-cd0e8ae0312a   /
  └─rl-swap swap                            eda505fd-1f26-4fd4-89fd-980c9789c618   [SWAP]
sdb                                                                                
├─sdb1                                                                             
├─sdb2                                                                             
└─sdb5                                                                             
sr0         iso9660    Rocky-8-5-x86_64-dvd 2021-11-14-09-30-59-00 

#给sdb1创建了ext4
[root@localhost yum.repos.d]# mkfs.ext4 /dev/sdb1
mke2fs 1.45.6 (20-Mar-2020)
创建含有 1310720 个块(每块 4k)和 327680 个inode的文件系统
文件系统UUID:b47109a2-041c-4c77-97c3-bf37caf8b307
超级块的备份存储于下列块: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736

正在分配组表: 完成                            
正在写入inode表: 完成                            
创建日志(16384 个块)完成
写入超级块和文件系统账户统计信息: 已完成

#给sdb5创建xfs
[root@localhost ~]# mkfs.xfs /dev/sdb5
meta-data=/dev/sdb5              isize=512    agcount=4, agsize=131072 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=524288, 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 /]# fsck.ext4 /dev/sdb1
e2fsck 1.45.6 (20-Mar-2020)
/dev/sdb1 已挂载。
e2fsck: 无法继续,已中止。

[root@localhost /]# xfs_repair /dev/sdb5
xfs_repair: /dev/sdb5 contains a mounted filesystem
Unmount or use the dangerous (-d) option to repair a read-only mounted filesystem

fatal error -- couldn't initialize XFS library

#显示 XFS 文件系统的详细信息
[root@localhost /]# xfs_info /dev/sdb5
meta-data=/dev/sdb5              isize=512    agcount=4, agsize=131072 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=524288, 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

挂载命令

mount [options] file
常见选项:
-t fstype 指定要挂载的设备上的文件系统类型,如:ext4,xfs
-o ro  只读挂载
-o rw  只写挂载
-o remount  重新挂载
-w read and write, 读写挂载,此为默认设置,可省略
-n 不更新/etc/mtab,mount不可见
-a 自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有
auto功能)
-L 'LABEL' 以卷标指定挂载设备
-U 'UUID' 以UUID指定要挂载的设备
-B, --bind 绑定目录到另一个目录上

#查看挂载情况
[root@localhost ~]# mount

#临时挂载
[root@localhost ~]# mount /dev/sdb1 /logs

#只读挂载,只能在/MySQL目录里读文件
[root@localhost /]# mount -o ro /dev/sdb5 /mysql

#取消挂载
[root@localhost ~]# umount /dev/sdb1 /logs

#永久挂载(defaults代表默认规则即rw,也可以直接修改为ro)
[root@localhost ~]# blkid  /dev/sdb1
/dev/sdb1: UUID="b47109a2-041c-4c77-97c3-bf37caf8b307" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="058053f9-01"

#复制sdb1的UUID,按照格式写入
[root@localhost ~]# vim /etc/fstab
/dev/mapper/rl-root     /                       xfs     defaults        0 0
UUID=982d5922-9968-45a9-9859-6ef07c69a7ec /boot                   xfs     defaults        0 0
/dev/mapper/rl-swap     none                    swap    defaults        0 0
UUID=b47109a2-041c-4c77-97c3-bf37caf8b307 /logs ext4    defaults        0 0

#配置文件生效 (-a代表新增加的行会生效,如果是在原基础上进行修改则不会生效)
[root@localhost ~]# mount -a

#重新挂载(只修改了fstab的内容,没有新加行)
[root@localhost ~]# mount -o remount /logs

swap虚拟内存
查看swap大小

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 字节扇区)
0

禁用swap

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 字节扇区)
1

启用swap

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 字节扇区)
2

添加swap分区

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 字节扇区)
3

创建 swap 文件系统

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 字节扇区)
4

挂载swap

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 字节扇区)
5

修改swap的启动阈值

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 字节扇区)
6

LVM

LVM 的基本概念

  • Physical Volume (PV):物理卷,即物理硬盘或分区,它是 LVM 的基础。
  • Volume Group (VG):卷组,由一个或多个物理卷组成,相当于一个大的存储池。
  • Logical Volume (LV):逻辑卷,从卷组中划分出来的虚拟分区,可以格式化为文件系统并挂载使用。

LVM 的基本操作流程

  • 创建物理卷 (PV)
  • 创建卷组 (VG)
  • 创建逻辑卷 (LV)
  • 格式化和挂载逻辑卷
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 字节扇区)
7

扩容逻辑卷

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 字节扇区)
8

卷组扩容

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 字节扇区)
9

RAID硬盘阵列

RAID 0

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 引导。
复杂性:结构相对复杂,实现和管理较为复杂
0

RAID 1

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 引导。
复杂性:结构相对复杂,实现和管理较为复杂
1

RAID 5

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 引导。
复杂性:结构相对复杂,实现和管理较为复杂
2

RAID 10

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 引导。
复杂性:结构相对复杂,实现和管理较为复杂
3

RAID 10

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 引导。
复杂性:结构相对复杂,实现和管理较为复杂
4

软件包管理

常见的程序包管理器
RPM

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 引导。
复杂性:结构相对复杂,实现和管理较为复杂
5

YUM/DNF(centos)

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 引导。
复杂性:结构相对复杂,实现和管理较为复杂
6

APT/dpkg(ubuntu)

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 引导。
复杂性:结构相对复杂,实现和管理较为复杂
7

软件管理案例

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 引导。
复杂性:结构相对复杂,实现和管理较为复杂
8

搭建私有yum仓库

YUM的工作原理:

  • 配置文件:
    YUM 使用 /etc/yum.repos.d/ 目录下的 .repo 文件来配置仓库。每个 .repo 文件定义了一个或多个仓库,指定了仓库的名称、URL 和其他属性。
  • 元数据同步:
    YUM 会从配置的仓库中下载元数据(如包列表、依赖关系等)。元数据通常包括包的名称、版本、依赖关系等信息。
  • 依赖解析:
    YUM 使用下载的元数据来解析依赖关系,确保安装的包及其依赖都能正确安装。YUM 会自动处理依赖关系,确保所有必要的包都被安装。
  • 事务管理:
    YUM 在执行安装、更新或删除操作时,会创建一个事务,确保操作的原子性和一致性。如果某个操作失败,YUM 会回滚事务,确保系统的一致性。
  • 缓存管理:
    *YUM 会缓存下载的包和元数据,以减少网络流量和提高性能。缓存通常存储在 /var/cache/yum/ 目录下。

DNF工作原理:

  • 配置文件:
    DNF 使用与 YUM 相同的配置文件,即 /etc/yum.repos.d/ 目录下的 .repo 文件。每个 .repo 文件定义了一个或多个仓库,指定了仓库的名称、URL 和其他属性。
  • 元数据同步:
    DNF 会从配置的仓库中下载元数据。元数据通常包括包的名称、版本、依赖关系等信息。DNF 使用更高效的元数据格式,提高了下载和解析速度。
  • 依赖解析:
    DNF 使用更高效的依赖解析算法,能够更好地处理复杂的依赖关系。DNF 会自动处理依赖关系,确保所有必要的包都被安装。
  • 模块支持:
    DNF 支持模块,允许用户在多个软件包集合中选择特定的模块流。模块化功能使得用户可以更容易地管理和更新软件包集合。
  • 事务管理:
    DNF 在执行安装、更新或删除操作时,会创建一个事务,确保操作的原子性和一致性。如果某个操作失败,DNF 会回滚事务,确保系统的一致性。
  • 缓存管理:
    DNF 会缓存下载的包和元数据,以减少网络流量和提高性能。缓存通常存储在 /var/cache/dnf/ 目录下。
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 引导。
复杂性:结构相对复杂,实现和管理较为复杂
9

#列出块设备
[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"
 
0

#列出块设备
[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"
 
1

#列出块设备
[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"
 
2
#列出块设备
[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"
 
3

系统安装之后的常用初始化步骤

Rocky linux

#列出块设备
[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"
 
4

ubuntu

#列出块设备
[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"
 
5

OSI七层模型

物理层
作用:最底层,负责物理传输。(简单理解就是网线)。
协议:Ethernet、ISDN、SONET、SDH、USB、HDMI、Wi-Fi等。

数据链路层
作用:负责节点之间的可靠传输。
协议:Ethernet、PPP(点对点协议)、HDLC(高级数据链路控制)、ATM(异步传输模式)等。

网络层
作用:负责数据包的路由选择和转发。
协议:IP(互联网协议)、ICMP(互联网控制消息协议)、ARP(地址解析协议)、RARP(反向地址解析协议)、RIP(路由信息协议)等。

传输层
作用:负责两个节点之间的数据传输,确保数据能够被可靠的传输到目标地址。
协议:TCP(传输控制协议)、UDP(用户数据报协议)等。

会话层
作用:负责建立和管理会话。
协议:NetBIOS、RPC(远程过程调用)、SQL(结构化查询语言)、SMB(服务器消息块)、TLS(传输层安全)、SSL(安全套接层)等。

表示层
作用:负责数据的表示和转换。
协议:JPEG、MPEG、ASCII、PNG、GIF、TLS、SSL等。

应用层
作用:负责应用程序之间的通信,提供用户接口和服务。它是 OSI 模型的最高层,直接面向用户。
协议:HTTP(超文本传输协议)、HTTPS(安全超文本传输协议)、FTP(文件传输协议)、SMTP(简单邮件传输协议)、IMAP(互联网邮件访问协议)、DNS(域名系统)、SNMP(简单网络管理协议)、Telnet等。

linux端口的简单介绍

端口号范围
0-1023:系统端口,通常由系统服务使用。
1024-49151:注册端口,可以被用户进程使用。
49152-65535:动态端口,通常由操作系统自动分配给客户端连接。

端口类型
TCP(传输控制协议):面向连接的协议,提供可靠的传输。
UDP(用户数据报协议):无连接的协议,提供不可靠但高效的传输。

#列出块设备
[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"
 
6

TCP简单介绍

TCP特性:
工作在传输层
面向连接协议
全双工协议
半关闭
将数据打包成段,排序
确认机制
数据恢复,重传
错误检查
流量控制,滑动窗口
拥塞控制,慢启动和拥塞避免算法

TCP包头结构:

字段 长度(字节) 描述
源端口 2 发送方的端口号
目标端口 2 接收方的端口号
序列号 4 当前数据包的第一个字节的序列号
确认号 4 下一个期望接收的数据包的序列号
数据偏移 1 表示 TCP 头部的长度,以 32 位(4 字节)为单位
保留 1 保留字段,必须设为 0
控制标志 1 包含多个标志位,每个位表示一个标志
窗口大小 2 接收方的接收窗口大小,表示发送方可以发送的最大数据量
校验和 2 用于检查整个 TCP 报文段的完整性
紧急指针 2 如果 URG 标志被设置,表示紧急数据的偏移量
选项 可变 用于提供额外的功能,如最大段大小(MSS)、窗口缩放等
填充 可变 用于确保头部长度为 32 位的倍数

控制标志

标志 描述
URG 5 紧急指针有效
ACK 4 确认号字段有效
PSH 3 推送数据,要求接收方立即将数据传递给上层应用
RST 2 重置连接,用于强制断开连接
SYN 1 同步序列号,用于建立连接
FIN 0 结束连接,用于关闭连接

TCP 三次握手
TCP 三次握手是建立连接的过程,确保双方准备好进行数据传输。以下是三次握手的详细步骤:

第一次握手:
客户端发送一个带有 SYN 标志的 TCP 段到服务器。
客户端的序列号为 seq=x。
客户端进入 SYN_SENT 状态。
第二次握手:
服务器收到客户端的 SYN 段后,回复一个带有 SYN 和 ACK 标志的 TCP 段。
服务器的序列号为 seq=y,确认号为 ack=x+1。
服务器进入 SYN_RECV 状态。
第三次握手:
客户端收到服务器的 SYN+ACK 段后,回复一个带有 ACK 标志的 TCP 段。
客户端的序列号为 seq=x+1,确认号为 ack=y+1。
客户端进入 ESTABLISHED 状态。
服务器收到客户端的 ACK 段后,进入 ESTABLISHED 状态。

简单总结:客户端发送 SYN,服务器回复 SYN+ACK,客户端再发送 ACK,双方进入 ESTABLISHED 状态

TCP 四次挥手
TCP 四次挥手是断开连接的过程,确保双方都准备好结束连接。以下是四次挥手的详细步骤:

第一次挥手:
客户端发送一个带有 FIN 标志的 TCP 段到服务器。
客户端的序列号为 seq=x。
客户端进入 FIN_WAIT_1 状态。
第二次挥手:
服务器收到客户端的 FIN 段后,回复一个带有 ACK 标志的 TCP 段。
服务器的序列号为 seq=y,确认号为 ack=x+1。
服务器进入 CLOSE_WAIT 状态。
客户端收到服务器的 ACK 段后,进入 FIN_WAIT_2 状态。
第三次挥手:
服务器完成数据传输后,发送一个带有 FIN 标志的 TCP 段到客户端。
服务器的序列号为 seq=y+1。
服务器进入 LAST_ACK 状态。
第四次挥手:
客户端收到服务器的 FIN 段后,回复一个带有 ACK 标志的 TCP 段。
客户端的序列号为 seq=x+1,确认号为 ack=y+2。
客户端进入 TIME_WAIT 状态,等待 2MSL(最大段生存时间)后完全关闭连接。
服务器收到客户端的 ACK 段后,进入 CLOSED 状态。

简单总结:客户端发送 FIN,服务器回复 ACK,服务器发送 FIN,客户端回复 ACK,双方进入关闭状态

ip地址分类

IPv4 地址主要分为五类:A 类、B 类、C 类、D 类和 E 类。其中,A 类、B 类和 C 类用于单播地址,D 类用于组播地址,E 类保留用于实验和研究。

1. A 类地址
地址范围:0.0.0.0 到 127.255.255.255
网络号:前 8 位(第一个字节)
主机号:后 24 位(剩余三个字节)
子网掩码:默认为 255.0.0.0 或 /8
示例:10.0.0.1,子网掩码为 255.0.0.0
特点:适用于大型网络,每个网络最多可以有 16,777,214 台主机。

2. B 类地址
地址范围:128.0.0.0 到 191.255.255.255
网络号:前 16 位(前两个字节)
主机号:后 16 位(剩余两个字节)
子网掩码:默认为 255.255.0.0 或 /16
示例:172.16.0.1,子网掩码为 255.255.0.0
特点:适用于中型网络,每个网络最多可以有 65,534 台主机。

3. C 类地址
地址范围:192.0.0.0 到 223.255.255.255
网络号:前 24 位(前三个字节)
主机号:后 8 位(最后一个字节)
子网掩码:默认为 255.255.255.0 或 /24
示例:192.168.1.1,子网掩码为 255.255.255.0
特点:适用于小型网络,每个网络最多可以有 254 台主机。

4. D 类地址
地址范围:224.0.0.0 到 239.255.255.255
用途:组播地址,用于多播通信
特点:不用于单播地址,而是用于向多个主机发送数据。

5. E 类地址
地址范围:240.0.0.0 到 255.255.255.255
用途:保留用于实验和研究
特点:不用于常规网络通信。

IP 地址的组成
一个 IPv4 地址由 32 位二进制数组成,通常以点分十进制的形式表示,分为四个 8 位(一个字节)的部分,每个部分用一个点分隔。例如,192.168.1.1。

二进制表示
192.168.1.1 的二进制表示为:
192 -> 11000000
168 -> 10101000
1 -> 00000001
1 -> 00000001
组合起来就是:11000000.10101000.00000001.00000001
子网掩码
子网掩码用于区分网络地址和主机地址。子网掩码也是一个 32 位的二进制数,通常也以点分十进制的形式表示。

A 类地址:默认子网掩码为 255.0.0.0 或 /8
二进制表示:11111111.00000000.00000000.00000000
B 类地址:默认子网掩码为 255.255.0.0 或 /16
二进制表示:11111111.11111111.00000000.00000000
C 类地址:默认子网掩码为 255.255.255.0 或 /24
二进制表示:11111111.11111111.11111111.00000000
特殊地址
回环地址:127.0.0.1,用于本地主机的测试。
广播地址:255.255.255.255,用于向网络内的所有主机发送数据。
私有地址:用于内部网络,不直接连接到互联网。
A 类:10.0.0.0 到 10.255.255.255
B 类:172.16.0.0 到 172.31.255.255
C 类:192.168.0.0 到 192.168.255.255
总结
A 类地址:适用于大型网络,网络号占 8 位,主机号占 24 位。
B 类地址:适用于中型网络,网络号占 16 位,主机号占 16 位。
C 类地址:适用于小型网络,网络号占 24 位,主机号占 8 位。
D 类地址:用于组播通信。
E 类地址:保留用于实验和研究。

举例:

计算201.222.200.111/18计算主机数和子网掩码

#列出块设备
[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"
 
7

当A(10.0.1.1/16)与B(10.0.2.2/24)通信,A如何判断是否在同一个网段?A和B能否通信?

#列出块设备
[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"
 
8