Linux磁盘与文件系统管理(一) :磁盘基本知识
参考资料:《鸟哥的Linux私房菜(第四版)》
磁盘知识
磁盘的组成原理
盘片(platter)与磁头(head)
一个盘片有两个盘面,磁头通过扫过这些盘面读写数据,上下两个盘面都可以使用。
如果一个磁盘有5张盘片,那么就有10个盘面可以使用
磁道(track)与扇区(sector)
在上图中,每个同心圆就是一个磁道,就像运动场的跑道一样 😃
扇区就是跑道上的一个段,像一小块扇子一样。扇区是磁盘上的最小单元,通常为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 才行)