Linux文件系统

  • /dev/sd[a-p][1-128]:为实体磁盘的磁盘文件名
  • /dev/vd[a-d][1-128]:为虚拟磁盘的磁盘文件名

    文件系统特性

  • Linux 的正统文件系统则为 Ext2 (Linux second extended file system, ext2fs)

  • 一个可被挂载的数据为一个文件系统而不是一个分区槽
  • 索引式文件系统(indexed allocation)
  • FAT文件系统碎片整理

    Linux的EXT2文件系统(CETOS6.x为EXT4)

    image.pngimage.png

    block: 1, 2, 4K (XFS: 可配置512bytes~64K,支持最大4K) inode: 128bytes 256bytes (XFS: 256bytes 到2M256bytes够用) inode 记录一个block 号码要花掉4byte

  1. data block

现在的磁盘容量都太大了!所以,大概大家都只会选择4K 的block 大小

  1. inode table

inode 记录block 号码的区域定义为12 个直接,一个间接,一个双间接与一个三间接记录区
1K block 总额:将直接、间接、双间接、三间接加总,得到12 + 256 + 256256 + 256256*256 (K) = 16GB

  1. Superblock (超级区块)

除第一个外后续的block group 不一定含有superblock(有也是作为备份)

  1. Filesystem Description (文件系统描述说明)
  2. block bitmap (区块对照表)
  3. inode bitmap (inode 对照表)
  4. dumpe2fs:查询Ext 家族superblock 信息的指令

Linux文件系统.xmind

文件系统与目录树的关系

目录

建立一个目录时,文件系统会分配一个inode 与至少一块block 给该目录
image.png
image.png

文件

ext2 建立一个一般文件时,ext2 会分配一个inode 与相对于该文件大小的block 数量给该文件

目录树读取

inode 本身并不记录文件名文件名的记录是在目录的block 当中
目录树读取.xmind

EXT2/EXT3/EXT4 文件的存取与日志式文件系统的功能

为克服metadata (中介数据superblock, inode bitmap 及block bitmap )的内容与实际数据存放区产生不一致,
建立日志式文件系统(Journaling filesystem)

日志式文件系统(Journaling filesystem ext3/ext4)

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

    Linux 文件系统的运作

    异步处理

    当系统加载一个文件到内存后,如果该文件没有被更动过,则在内存区段的文件数据会被设定为干净 (clean)的。但如果内存中的文件数据被更改过了(例如你用nano 去编辑过这个文件),此时该内存中 的数据会被设定为脏的(Dirty)。此时所有的动作都还在内存中执行,并没有写入到磁盘中!系统会 不定时的将内存中设定为『Dirty』的数据写回磁盘,以保持磁盘与内存数据的一致性。你也可以利 用第四章谈到的sync 指令来手动强迫写入磁盘。

常用的文件放置到内存

常用的文件数据放置到主存储器的缓冲区,因此Linux 的物理内存最后都会被用光

手动sync或关机自动sync写回磁盘

挂载点的意义(mount point)

透过判断inode 号码来确认不同文件名是否为相同的文件

其他Linux 支持的文件系统与VFS

  1. 传统文件系统:ext2 / minix / MS-DOS / FAT (用vfat 模块) / iso9660 (光盘)等等;
  2. 日志式文件系统:ext3 /ext4 / ReiserFS / Windows’ NTFS / IBM’s JFS / SGI’s XFS / ZFS
  3. 网络文件系统:NFS / SMBFS

透过VFS(Virtual Filesystem Switch ) 的功能来管理所有的filesystem,省去在不同的partion需要自行设定用什么文件系统的模块来读取文件。

XFS 文件系统简介

EXT 家族当前较伤脑筋的地方:支持度最广,但格式化超慢

  • 主要:复原、建置速度 =》 预先规划出所有的inode/block/meta data ,磁盘容量太大
  • 次要:效能问题 =》 巨型文件

    XFS文件系统的配置

    资料区

    inode 与block 是动态产生

    文件系统活动登录区(log section)

  • 纪录文件系统的变化,有点像是日志区

  • 可以指定外部的磁盘来作为xfs 文件系统的日志区块

    实时运作区(realtime section)

    文件要被建立时,xfs 会在这个区段里面找一个到数个的extent 区块,将文件放置在这个区块内,等到分配完毕后,再写入到data section 的inode 与block

    XFS 文件系统的描述数据观察

    xfs_info 挂载点|装置文件名
    image.png