Linux磁盘与文件系统管理(一) :磁盘基本知识

参考资料:《鸟哥的Linux私房菜(第四版)》

磁盘知识

磁盘的组成原理

盘片(platter)与磁头(head)

image

一个盘片有两个盘面,磁头通过扫过这些盘面读写数据,上下两个盘面都可以使用。

如果一个磁盘有5张盘片,那么就有10个盘面可以使用

磁道(track)与扇区(sector)

image

在上图中,每个同心圆就是一个磁道,就像运动场的跑道一样 😃

扇区就是跑道上的一个段,像一小块扇子一样。扇区是磁盘上的最小单元,通常为512bytes或4KB

柱面(cylinder)

因为每个盘都有相同数量的磁道,我们从边缘的磁盘开始编号,具有同编号的磁盘就组成了一个圆柱,称为磁盘的柱面。

因此,柱面数就是磁道数(单独一个扇面上的)。

磁盘分区

磁盘的设备名称

在Linux系统中,有一句话,叫“万物皆文件”。硬盘的文件名就是 /dev/sd[a-p]

## 虚拟机里添加四个磁盘 10G 10G 5G 5G
[root@orcl19 ~]# fdisk -l |grep "Disk /dev/*"
Disk /dev/sdc: 10.7 GB, 10737418240 bytes, 20971520 sectors
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Disk /dev/sda: 128.8 GB, 128849018880 bytes, 251658240 sectors
Disk /dev/sde: 5368 MB, 5368709120 bytes, 10485760 sectors
Disk /dev/sdd: 5368 MB, 5368709120 bytes, 10485760 sectors

以 SATA 接口来说,由于 SATA/USB/SAS 等磁盘接口都是使用 SCSI 模块来驱动的, 因此这些接口的磁盘装置文件名都是/dev/sd[a-p]的格式。

MSDOS(MBR) 分区

早期的 Linux 系统为了兼容于 Windows 的磁盘,因此使用的是支持 Windows 的 MBR(Master Boot
Record, 主要开机纪录区) 的方式来处理开机管理程序与分区表。

#### 因为mbr是微软的,所以称为msdos
##在虚拟机重
[root@orcl19 raw]# parted -l
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 129GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 1075MB 1074MB primary xfs boot
2 1075MB 66.7GB 65.6GB primary xfs
3 66.7GB 120GB 53.7GB primary xfs
4 120GB 129GB 8458MB extended
5 120GB 129GB 8456MB logical linux-swap(v1)
Error: /dev/sdb: unrecognised disk label
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:
[root@orcl19 raw]#

而开机管理程序纪录区与分区表则通通放在磁盘的第一个扇区, 这个扇区通常是 512bytes 的大小。

第一个扇区 512bytes 会有这两个数据:

1 主要启动记录区(Master Boot Record, MBR):可以安装开机管理程序的地方,有 446 bytes

2 分区表(partition table):记录整颗硬盘分区的状态,有 64 bytes

分区表所在区块仅有 64 bytes 容量,因此最多仅能有四组记录区,每组记录区记录了该区段的启始与结束的磁柱号码。

假如这个硬盘只有有400个柱面,分成了4个区

分区1:1~100 号柱面
分区2:101~200 号柱面
分区3:201~300 号柱面
分区4:301~400 号柱面

如果磁盘为 /dev/sda,那么四个分区就是:

/dev/sda1
/dev/sda2
/dev/sda3
/dev/sda4

如果我们王 /dev/sda1这个分区时,其实就是写入 1~100号的柱面里。

分区的优点:

1 数据的安全性

2 提高效能

假如 /opt 挂载了 /dev/sda2

当我们访问 /opt/oracle/xxx 文件时,就直接知道 /dev/sda2 这个分区

想到于只需要扫描 101~200 这些磁柱,会提高速度

既然分区表只有记录四组数据的空间,那么是否代表我一颗硬盘最多只能分区出四个分区槽?

不是,我们可以通过延伸分区(Extended)的方法来处理

参考:

由于这个 MBR 区块的容量有限,所以,当初设计的时候,就只有设计成 4 个分区纪录,这些分区记录就被称为 Primary ( 主分区 ) 及 Extended ( 扩展分区 ) ,也就是说,一颗硬盘最多可以有 4 个 Primary + Extended 的扇区,其中,Extended 只能有一个,因此,你如果要分区成四块磁盘分区的话,那么最多就是可以:

P + P + P + P

P + P + P + E

的情况来分区了。需要特别留意的是,如果上面的情况中, 3P +E 只有三个『可用』的磁盘,如果要四个都『可用』,就得分区成 4P 了!( 因为 Extended 不能直接被使用,还需要分区成 Logical 才行)

posted on   yq1DB  阅读(76)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示