0雄卷、簡寫說明
LB:logic Block
LBA: Logic Block address
LU: Logic unit (對應(yīng)一個邏輯存儲實體)
VPD: Vital Product Data scsi 協(xié)議規(guī)定的scsi設(shè)備產(chǎn)品數(shù)據(jù)登澜。
1、Provision的等級
兩大等級:Full Provison和Logical Block Provision
1)Full Provision就是沒有任何供給策略逐样,所有的lb在設(shè)備上都有physical block對應(yīng)。
2)Logical Block Provision 并不是所有的LB在設(shè)備上都有Physical block對應(yīng)碱璃。
1.1 Logical Block Provision的兩個等級
1)Resource Provison
設(shè)備上保證擁有足夠的資源支持所有的LBA都映射到Physical block(雖然當前并不是所有的LBA都mapping到了Physical Block计济,有的LBA可能是unmap或者anchor了)
2)thin Provison
設(shè)備不能保證所有的LBA都有足夠的資源映射,也就是說LB數(shù)量可以大于設(shè)備所有Physical Block支持的量各吨。
1.2 Logical Block Provision上LBA對應(yīng)的狀態(tài)
1)mapping:LBA有對應(yīng)的Physical Block對應(yīng)(可以多個LBA對應(yīng)一個Physical Block)枝笨,也就是硬件為LB分配了物理資源
2)anchor:LBA有對應(yīng)的phyical Block,當時此物理資源類似于暫留的意思揭蜒。
3)unmapped:LBA沒有對應(yīng)的Physical Block横浑。
2、scsi 命令
2.1 獲取是否支持
2.1 .1 獲取logical block provison 能力
通過inquiry 命令查詢VPD page 0xb2(logical block provision頁)屉更。
4個字段:
1)LBPU(logical block provision unmap)
支持scsi命令unmap
2)LBPWS(logical block provision write same)
支持scsi命令write same(16)with unmap bit
3)LBPWS10(logical block provision write same 10)
支持scsi命令write same(10)with unmap bit
注:如果一個設(shè)備即支持write same 16 with unmap和write same 10 with unmap徙融,且它支持write same 32,那么它一定得支持write same 32 with unmap
4)lbprz(logical block provision read zero)
從處于provison的logical block讀出的數(shù)據(jù)為0(如果設(shè)置為xx1)瑰谜,或者預(yù)設(shè)值(此字段設(shè)置為010b)张咳。
如果lbprz為000,那么設(shè)備不能保證從unmap block讀取的數(shù)據(jù)似舵。
5)ANC_SUP(anchor support)
支持anchor命令。
2.1.2 讀設(shè)備容量的時候獲取provison信息
read capacity 16 命令返回時刻葱峡,可以反饋當前l(fā)ogical block的provison狀態(tài)
1)lbpme(logical block provision management enable )
當設(shè)置為1時刻砚哗,表示支持logical provision
2)lbprz(logical block provsion read zero)
為1表示,當前從provison 的lba讀取的數(shù)據(jù)硬件保障為0或者特定值砰奕。
2.2 觸發(fā)unmap的命令
2.2.1 unmap命令
對指定位置開始的一段lba啟動unmap操作蛛芥。
注:通過unmap命令我們不能期望后續(xù)read返回特定的數(shù)據(jù)值(例如0)提鸟。如果需要這樣的話應(yīng)該使用write same with
Unmapped字段。
2.2.2 write same 10 with unmap
write same 10 命令帶unmap字段設(shè)置為1會將此字段unmap仅淑。
2.2.3 write same 16 with unmap
write same16 命令帶unmap 字段為1會將此字段unmap称勋。
注:對于write same 16 with unmap和write same 10 with unmap,如果命令數(shù)據(jù)區(qū)域?qū)懭氲淖侄螌?dǎo)致unmap操作后涯竟,read去讀的數(shù)據(jù)和協(xié)議定義不一致的時候赡鲜,那么這個unmap操作無效,只會執(zhí)行正常的write same動作庐船。
2.3 獲取設(shè)備provision status
通過Get LBA Status命令可以獲取設(shè)備當前指定lba的provision狀態(tài)(也可以獲取所有的provison狀態(tài)下的LBA)银酬。
LBA status 為0(mapped),1(deallocated)筐钟,2(anchored)
注:如果此設(shè)備(lu)是full provision揩瞪,那么status為0.