本文试图从硬件结构、逻辑结构两方面来介绍Linux中本地磁盘的基本知识。
1. 硬件结构
一块磁盘由多个盘面组成,每个盘面有一个对应的磁头(heads),我们可以在该盘面上存储我们需要的信息。
每一个盘面,被分成多个圆环,我们称之为柱面(cylinders)。每一个柱面又被分割为多个扇形区域,简称扇区(sectors),参见下图:
两个红色环形之间是一个柱面;图中黄色标记部分是一个扇区。
2. fdisk -l 查看磁盘情况
可以看到,上面的磁盘/dev/sda有255个磁头,8908个柱面,每个柱面轨道上有63个扇区。因为每个扇区大小为512bytes,所以总大小约为:8908 * 63 * 512 * 255 = 73270794240(和上面的73274490880 相差3696640,不知道是什么地方多出来的)。
3. 磁盘分区、文件系统、挂载点
我们继续看上面的例子,磁盘/dev/sda共分为8个分区:/dev/sda1,/dev/sda2,......,/dev/sda8,Start和End分别为各个分区的起始和结束柱面。例如分区/dev/sda2从柱面17开始到柱面1928结束,则大小约为(1928-17)* 63 * 512 * 255 = 14.6G。
可以通过df -h来查看分区/dev/sda2的挂载目录:
可以看到,分区/dev/sda2挂载根目录 / 上。然后,通过文件/etc/fstab来查看该分区的文件系统:
看到根目录 / 使用了Linux ext3文件系统。
至此,我们看到磁盘/dev/sda共分为八个分区。其中第二个分区/dev/sda2从柱面17到柱面1928结束,大小约为15G,该分区挂载在根目录 / 上,使用了ext3的文件系统。
4. 其他磁盘分区
在上面的fdisk -l 列表中我们一共可以看到八个磁盘分区。上面已经分析了/dev/sda2,我们再看来看看其他的分区。
- 在Linux中第一个分区/dev/sda1,为引导扇区,挂载在/boot上
- 第二个分区挂载在根目录 / 上,大小15G,为ext3文件系统
- 第三个分区为交换分区,从柱面1929到2189,大小约:(2189 - 1929)* 63 * 512 * 255 = 2G。
- 第四个分区为扩展分区,后面四个分区均是该分区的一部分。该分区从柱面2190到8908结束。
- 分区五、六、七为扩展分区的子分区,均为交换分区,单个大小均为2G。所以全部的交换分区大小共2G + 2G*3 = 8G。
- 第八个分区为扩展分区的最后一个子分区,挂载在/u01上,大小约为 (8908 - 2973)* 63 * 512 * 255 = 45G。
以上为示例主机上的全部磁盘分区,以及挂载情况。
5. 小结
有了以上信息,我们就基本清楚了硬件结构以及对应的逻辑结构,需要使用的命令其实也很少:
#df -h
#more /etc/fstab
6. 补充
关于/etc/fstab的简单补充:
- 第一列是:一般是设备(分区),如也有是LABEL=×××的,这是ext2 ext3特有的卷标,可以通过e2label来查看各个设备的卷标。
- 第二列是:挂载点
- 第三列是:文件系统
- 第四列是:文件系统挂载时候的参数(例如NFS有时候需要用户名密码等)
- 第五列是:标志是否需要备份1为需要,0为不需要
- 第六列是:启动时,是否需要fsck检查磁盘1为先检查,2为后检查,0为不检查
在fstab文件还有部分第一列是none的,这些都是不需要物理磁盘的文件系统。典型的如/proc文件系统: