跳转至

文件系统相关技术

1 inote

1. inode 编号在分区级别是唯一的。每个分区都有自己的 inode 表。

2 链接

1. 不能在不同文件系统之间创建硬链接,因为可能inode号冲突。而软链接可以。

3 读放大、写放大

  • 写放大

    Write Amplification : 写放大,假设每秒写入10MB的数据,但观察到硬盘的写入是30MB/s,那么写放大就是3。写分为立即写和延迟写,比如 redo log是立即写,传统基于B-Tree数据库刷脏页和 LSM Compaction 是延迟写。redo log 使用 direct IO 写时至少以512字节对齐,假如 log 记录为100字节,磁盘需要写入512字节,写放大为5。

  • 读放大

    Read Amplification : 读放大,对应于一个简单 query 需要读取硬盘的次数。比如一个简单 query 读取了5个页面,发生了5次IO,那么读放大就是 5。假如B-Tree 非叶子节点都缓存在内存中,point read-amp 为1,一次磁盘读取就可以获取到 Leaf Block;short range read-amp 为1~2,1~2次磁盘读取可以获取到所需的Leaf Block。

  • 空间放大

    Space Amplification : 空间放大,假设我需要存储10MB数据,但实际硬盘占用了30MB,那么空间放大就是3。有比较多的因素会影响空间放大,比如在Compaction 过程中需要临时存储空间,空间碎片,Block中有效数据的比例小,旧版本数据未及时删除等等。