Linux文件管理

Posted by Run-dream Blog on June 9, 2021

基本功能

基本功能

  1. 按照块来存储
  2. 使用inode进行索引
  3. 缓存热点文件
  4. 用文件夹来组织
  5. 用文件描述符来在内核记录使用情况

相关命令

# 格式化 分区文件系统 最大支持2T
fdisk -l
# 超过2T使用
parted
# 挂载 将文件系统挂载到目录下
mount unmount

硬盘文件系统

  1. inode 与块的存储

    • 块 硬盘分成相同大小的单元。一块的大小是扇区大小的整数倍,默认是 4K
    • inode 文件的元数据和块的位置
  2. 间接块 extents(ext4)

    i_block 保存成一棵树

  3. inode 位图和块位图

    为了提高寻找速度

  4. 文件系统整体格式

    文件存储

    超级块: 对整个文件系统的情况进行描述

  5. 目录也是特殊的inode

  6. 软链接和硬链接

    • 硬链接与原始文件共用一个 inode 的,但是 inode 是不跨文件系统的,每个文件系统都有自己的 inode 列表,因而硬链接是没有办法跨文件系统的。
    • 软链接相当于重新创建了一个文件。这个文件也有独立的 inode,只不过打开这个文件看里面内容的时候,内容指向另外的一个文件

虚拟文件系统

文件系统

  • dentry (directory entry) 目录项 保存着诸如文件名、路径等信息
  • inode 索引节点,保存具体文件的数据
  • mount mount point mount root

文件缓存

  • 缓存 I/O

    大多数文件系统的默认 I/O 操作都是缓存 I/O。对于读操作来讲,操作系统会先检查,内核的缓冲区有没有需要的数据。如果已经缓存了,那就直接从缓存中返回;否则从磁盘中读取,然后缓存在操作系统的缓存中。对于写操作来讲,操作系统会先将数据从用户空间复制到内核空间的缓存中。这时对用户程序来说,写操作就已经完成。至于什么时候再写到磁盘中由操作系统决定,除非显式地调用了 sync 同步命令

    • 带缓存的写入操作
      • 用户主动调用 sync, 将缓存刷到硬盘上去,
      • 当内存十分紧张,以至于无法分配页面的时候,
      • 脏页已经更新了较长时间,时间上超过了 timer,需要及时回写
  • 直接 IO

    应用程序直接访问磁盘数据,而不经过内核缓冲区,从而减少了在内核缓存和用户程序之间数据复制。