Linux磁盘与文件系统管理概要

Linux磁盘与文件系统管理

硬盘组成与分区

  1. 硬盘组成
  • 圆形的盘片(主要记录数据)
  • 机械手臂与磁头(可读取盘片上的数据)
  • 主轴马达,转动盘片,让机械手臂的磁头在盘片上读取数据
  • 扇区(Sector)为最小的物理存储单位,每个扇区512bytes
  • 将扇区组成一个圆,那就是柱面(Cylinder),柱面是分区的最小单位
  • 第一个扇区最重要,里面有硬盘主引导记录(Masterbootrecord,MBR)及分区表(partition table),其中MBR占446bytes,partition table占64bytes
  1. 磁盘分区:分区的开始柱面到结束柱面
  • 主分区与扩展分区最多可以有4个(硬盘的限制)
  • 扩展分区最多只能有一个(操作系统限制)
  • 逻辑分区是由扩展分区分出来的
  • 能够被格式化后作为数据访问的分区为主分区与逻辑分区,扩展分区无法格式化
  • 逻辑分区的数量因操作系统而不同,在Linux系统中,IDE硬盘最多有59个逻辑分区(5号到63号),SATA硬盘则有11个逻辑分区(5号到15号)

文件系统特性

  1. super block(1024bytes):记录此文件系统的整体信息,包括inode/block的总量,使用量,剩余量,文件系统格式与相关信息。
  2. inode:记录文件属性,一个文件占用一个inode,同时记录此文件的数据所在的block号码。
  3. block:记录文件的实际内容,若文件太大时会占用多个block,inode只有128bytes,记录一个block号码要4bytes。
  4. inode将记录block号码的区域定义为12个直接,一个间接,一个双间接,一个三间接记录区。

日志文件系统:例如EXT3

  1. 预备:当系统要写入一个文件时,会现在日志记录块中记录某个文件准备要写入的信息。
  2. 实际写入:开始写入文件的权限与数据,开始更新meta data数据。
  3. 结束:完成数据与meta data的更新后在日志记录块中完成该文件记录。

虚拟文件系统(Virtual Filesystem Switch VFS)

整个Linux系统都是通过VFS内核功能去读取文件系统,都是VFS在进行管理,用户并不需要知道每个分区的文件系统是什么,VFS会主动帮我们做好读取的操作。

挂载点

挂载点一定是目录,该目录为进入该文件系统的入口

文件系统的简单操作

  1. 磁盘与目录的容量
  • df:列出文件系统的整体磁盘使用量
  • du:评估文件系统的磁盘使用量(常用于评估目录所占容量)
  • 与df不一样的是,du会直接到文件系统内去查找所有文件数据
  1. 连接文件:ln
  • 硬连接或实际连接:创建新文件,该文件连接到了目标文件的inode,都指向同一个block,不管删除其中哪个文件,都可以通过另一个文件找到inode和block读取到文件数据。
  • 硬连接限制:不能跨文件系统,不能连接目录
  • 软连接:创建一个新文件,该文件有自己的inode和block,只是block里面存的是另一个文件的地址,当那个地址的文件被删除时,该文件就读取不到文件数据了。
  • ln [-sf] 源文件 目标文件,不加任何参数就是硬连接。
-s 软连接
-f 如果目标文件存在时,先删除再创建

磁盘的分区,格式化,检验与挂载

  1. 分区:fdisk [-l] 设备名称
  2. 磁盘格式化:mkfs [-t 文件格式系统] 设备文件名
  3. 磁盘检验:fsck [-t 文件系统] 设备名称
  4. 磁盘挂载与卸载
  • 挂载:mount 设备文件名 挂载点
  • 卸载:umount 设备文件名 挂载点
  • 挂载条件:单一文件系统不能被重复挂载在不同的挂载点;单一目录不能重复挂载多个文件系统;作为挂载点的目录理论上应该是空目录。
  1. 设置开机挂载:直接到/etc/fstab去修改,下面说说系统挂载的限制:
  • 根目录是必须挂载的,而且一定要先于其它的mount point被挂载
  • 其它挂载点必须为已新建的目录
  • 所有挂载点在同一时间内只能挂载一次
  • 所有分区在同一时间内只能挂载一次
  • 要卸载的话,必须先将工作目录移到挂载点(及其子目录之外)