MIT 6.S081 Lecture 14: File systems

Reading

File System

  • User-friendly names/pathnames

  • Share files between users/process

  • Persistence/durability

Why intersting?

  • Abstraction is useful

  • Crash safety

  • Disk layout

  • Performance -> Storage devices are slow -> to be fast

    • storage -> buffercache
    • device -> concurrency

API example

  • xv6文件系统提供的API实现了文件系统基本的用户级操作

FS structure

  • inode含有文件的信息,代表一个独立的文件

  • inode的大小是64Bytes

FS Layer

  • 文件系统的多层结构抽象了硬件,并为软件提供了接口

Storage devices

  • 这里需要注意的是sector和block的大小,在xv6中

    • sector -> 512Bytes
    • block -> 1024Bytes
  • 这里有一个问题,block的大小由什么决定,是软件还是硬件,个人认为这里的block是由xv6的设计决定的

Disk layout

  • 这就是文件系统在磁盘上的架构,单位是block(1024B)

  • block0 -> boot

  • block1 -> superblocks

  • block2-31 -> log

  • block32-44 -> inode

    • 每个inode 64B
  • block45 -> bitmap

  • block46-… -> data

On-disk inode

  • inode是一个数据结构,大小64B,包含了文件的基本信息和数据映射

  • type代表了文件的类型,如文件或目录

  • nlink

  • size文件的大小

  • bn0-bn11 -> direct block number

    • 每个bn都是4B的地址
    • 直接映射到12个block的地址
  • bn12 -> indirect block number

    • bn12是一个4B的地址
    • 映射到一个block,这个block包含了256个bn直接映射到256个block
    • 一个block(1024B)可包含1024B/4B = 256个bn
  • 总共的直接映射bn数量12+256 = 268个

  • 文件的最大大小268*1024B = 268KB

Directory

  • 目录是一个文件,它的data中包含了特殊的数据结构entry(16B),可以把文件名和文件索引联系起来

  • “/y/x"中第一个”/"的意思是root inode,其索引为1

Bcache(block cache)

  • one copy of block in memory

  • sleep locks

  • LRU

  • two levels of locking

    • protect bcache
    • sleep locks

Summary

  • fs = on-disk data structure

  • block cache

MIT 6.S081 Lecture 14: File systems

http://huaeryi.com/2023/04/20/6-S081-Lecture-14/

作者

huayi

发布于

2023-04-20

更新于

2023-04-30

许可协议