MIT 6.S081 Lecture 14: File systems
Reading
- Read Chapter8
- read code
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