cocalele / PureFlash

A ServerSAN storage system designed for flash device
GNU General Public License v3.0
101 stars 29 forks source link

repo:PureFlash Global LMT vs Private LMT #27

Open cocalele opened 1 year ago

cocalele commented 1 year ago

Global

Private

qiyuanzhi commented 1 year ago

Global FreeList + Global Trimlist + private blockmap/redolog

Image

一次block的分配,需要至少5次IO操作:

1) ATS 拿锁 ===> 一次IO;

2)读取free list ====> N 次 IO

3) 分配到block,持久化Free List ====> N 次 IO;

4)Redolog ===> 一次IO;

5)ATS释放锁 =====> 一次IO;

Free List被持久化,但是LMT(Redolog)没有被持久化,可能导致再次加载时,block的丢失。

迁移过程

故障迁移(S1->S2)

1)S2 open volume;

2)S2 加载 volume在SSD上的Block Map + Redolog的回放 ==》可能会导致open volume的时间的增加;

3)更新volume的ATS,保证当前这个volume的归属于S2;

cocalele commented 10 months ago

最终选择方案 : Global LMT + Private copy Global LMT由owner控制,所有的LMT操作都发往owner节点执行。但是volume所在(被打开使用)的工作节点会保留一份和这个volume相关的内存拷贝。 当需要修改LMT(分配,删除 object)的时候,工作节点将修改操作发往owner节点,并在自己的私有副本中进行同样的修改。