Log-structureed File System
1.buffer all updates in a memory segment
2.write to free block locations sequentially(never overwrites)
3.inodes和data blocks分散在硬盘各处,由imap中换算出inodes的地址,为了便于更新,imap就在最近一次更新的inodes后面。
4.在随机位置的imap由一个checkpoint region记录其位置。
5.读取时,先将checkpoint region(CR)全部读入内存中,从CR中查找imap的位置,再从imap中查找出相应的inodes地址,余下部分同VSFS
6.directory中记录的不再是data的物理位置,而是一个在imap中的key,当更新dir中的文件时,虽然文件inode位置改变了,只要改变imap中与key对应的值就可以避免对dir进行更改。
7.清理出一段连续的segment:首先找到M段segment,将里面的live数据(最新版本的数据)收集起来,移到另一段连续的内存中,然后释放掉旧的segment。
8.如何判断一个block里面的数据是最新的还是更新以后遗留下来的旧数据(dead block):每一段segment有一个数组segmentsummary,记录了inode和block所在文件的偏移量,根据这两个找到该文件的该偏移量的指针,如果该指针指向这个block,说明是live(新的)or dead(旧的)。另外还可以通过记录version number 来判断block