UNIX文件系统VxFS的特性与优化
1. 文件创建与日志重放
当创建新文件时,需要完成以下步骤:
1. 更新新文件所在根目录的链接计数和时间戳。
2. 更新inode位图,表明inode已被分配。
3. 初始化新的inode。
4. 更新目录块,添加新文件的条目。
在事务写入日志时,会设置标记来指示事务的开始和结束。若系统崩溃, fsck 会运行并对日志中找到的所有完整事务进行日志重放。首先要通过扫描最低事务ID来定位日志的起始位置,然后按顺序重放每个子功能,且每个操作必须是幂等的。例如,日志中“增加inode链接计数”的操作不是幂等的,多次重放会使inode链接计数无效,应使用“将inode链接计数设置为3”这样的操作。意图日志的大小在创建文件系统时确定,也可直接指定,目前最大日志大小为16MB。
2. 扩展操作
对于日志式文件系统,某些操作会带来问题。例如,当对链接计数为1的文件调用 unlink() 系统调用时,调用返回后文件被视为已删除,但如果文件仍处于打开状态,就不能立即从磁盘物理删除,直到文件最后一次关闭。
为解决此问题,VxFS提供了inode扩展操作。在 unlink() 情况下,会在inode上设置 VX_IEREMOVE 扩展操作来指示应删除该文件,这本身就是一个事务。任何试图打开该文件的进程将被拒绝,但已打开文件的进程可继续操作。系统崩溃时,必须先完成扩展操作才能访问文件系统,如 VX_IEREMOVE 会将文件从文件系统中删
超级会员免费看
订阅专栏 解锁全文
1

被折叠的 条评论
为什么被折叠?



