Linux 文件系统

文件系统

文件系统结构

在Linux中,把整个逻辑设备按照块为单位进行划分,结构如下

引导块 专用块 i节点区 文件存储区
  • 引导块(0号块):用于启动系统,只有根文件系统的引导块有效
  • 专用块/管理块/超级块(1号块):存放文件系统的管理信息,在使用mkfs时初始化
  • i节点块:存放i-node,在使用mkfs时确定,每块可以存放若干个i节点,每个i节点大小固定,例如块大小为512KB,i节点大小为64KB,则每块可存放8个i节点。i节点从0开始编号,每个文件对应一个i节点,i节点中存放信息包括:指向文件存储区的索引指针、文件的类型、属主、权限、组、link数、大小等等
  • 文件存储区:用于存放文件数据,其中目录表也存放于此

目录表结构

目录表存放于文件存储区中,目录表由若干个目录项构成,目录项包括文件名和i节点号。

  • 目录
    • 目录项1
      • 文件名
      • i节点号
    • 目录项2
      • 文件名
      • i节点号
    • ...
    • 目录项n

例如要查找root/a0/bn这个文件,查找过程如下:

  1. 通过根目录i节点号(固定),在i节点区找到对应根目录的i节点
  2. 通过根目录i节点,在文件存储区中找到根目录的目录表
  3. 从根目录的目录表中读取文件名为a0的目录项,得到对应的i节点号AAA
  4. 利用上面得到的i节点号AAA在i节点区中找到对应a0的i节点,解析后发现a0的类型是目录,在文件存储区中读取i节点号AAA对应的目录
  5. 通过上面得到的a0目录,读取文件名为bn的目录项,得到对应的i节点号BBB
  6. 利用上面得到的i节点号BBB在i节点区中找到对应bn的i节点,解析后发现bn的类型是文件,在文件存储区中读取i节点号BBB对应的文件
  7. 通过上述操作最终得到root/a0/bn这个文件

文件系统的相关指令

mkfs:创建一个文件系统(make file system)

mkfs /dev/sdb 
在块设备文件/dev/sdb上创建文件系统

mount:安装子文件系统/显示已安装的所有子文件系统

mount /dev/sdb /mnt
操作子目录/mnt 就是对子文件系统的访问
mount 
不带参数→显示已安装的所有子文件系统

umount:卸载文件系统

umount /dev/sdb 
卸载一个已安装的子文件系统

df:列出系统的空闲空间

df -h
将使用的空间大小以方便阅读的方式显示(human-readable)

stat:读取i节点信息

stat myfile
读取myfile的i节点相关信息
posted @ 2021-04-09 14:07  海物chinono  阅读(89)  评论(0)    收藏  举报