熟悉NVMe的朋友知道,NVMe里面有namespace的概念,就是把SSD物理空間劃分成若干個邏輯地址空間。在UFS的世界里,它也有這個特性。UFS設(shè)備的物理存儲空間可以有若干個獨立的邏輯地址空間,我們把邏輯地址空間叫做LU,即Logical Unit,俗稱“擼”。前面看到,在每個UPIU的Header中,有個LUN(Logical Unit Number)的域,就是標識該UPIU關(guān)聯(lián)的命令或者請求的目標邏輯單元。每個LU的地址空間是獨立的,主機在發(fā)命令或者請求給設(shè)備的時候,須通過LUN指定目標邏輯單元。
如上圖所示,UFS設(shè)備有若干個LU,每個LU接收主機發(fā)過來的命令或者請求,這些命令或者請求可來自應(yīng)用層的SCSI模塊、設(shè)備管理器或者任務(wù)管理器。每個LU都是獨立的,“獨立”表現(xiàn)在下面幾個方面:
邏輯地址空間是獨立的,都是從LBA 0開始;
邏輯塊大小可以不同,可以為4KB,..;
可以有不同的安全屬性,比如可以設(shè)置不同的寫保護屬性;
每個LU可以有自己的命令隊列;
不同的LU可以存儲不同的數(shù)據(jù),比如有的LU存儲系統(tǒng)啟動代碼,有的LU存儲普通的應(yīng)用數(shù)據(jù),有的LU存儲用戶特殊數(shù)據(jù)...
。。。
UFS2.1中可以有最多32個普通LU和“四大名擼”(四個Well known LU,眾所周知的LU)。
普通LU的邏輯塊大小至少是4KB,但RPMB LU邏輯塊大小為256B。至于什么是RPMB LU,后面再講。
普通LU我覺得沒有什么好講的,就是分別用來存儲用戶數(shù)據(jù)的。我們主要來講講“四大名擼”。
Report LUNS LU
Report LUNS主要用來代表設(shè)備向主機匯報設(shè)備LU清單。主機想知道設(shè)備LU的支持情況,就需要發(fā)命令或者請求給該LU。UFS其中有個命令“Report LUNS” (和該LU名字一樣)用來訪問Report LUNS。
UFS Device LU
UFS設(shè)備的法人。當UFS主機不針對某個具體LU,而是對整個UFS設(shè)備發(fā)命令的時候,UFS Device LU就成為該命令接收的對象,比如格式化UFS設(shè)備(FORMAT UNIT命令)、切換UFS設(shè)備的功耗模式(START STOP UNIT命令)等等。
BOOT LU
顧名思義,就是用來存儲啟動代碼的LU。不過,BOOT LU本身是不存儲啟動代碼的,它只是個虛擬的LU,啟動代碼物理上是存儲在普通LU上的。
有兩個Boot LU,LU A和LU B,可以用來存儲不同啟動代碼(比如一個新,一個舊),但在啟動過程中,只有一個是活躍的(Active)的。32個普通LU中的任意一個可以配成Boot LU A或者Boot LU B。
舉例說明:
在上例中,LU 1 充當Boot LU A,LU 4 充當Boot LU B。由于有兩份啟動代碼,分別保存在LU 1和LU 4,那啟動的時候讀取哪一份呢?
主機啟動時,首先應(yīng)該通過設(shè)備管理器,發(fā)送Query 請求給設(shè)備,獲取一個叫做“bBootLunEn ”的屬性,該屬性標識當前活躍(Active)的Boot LU。
在上例中,bBootLunEn = 01,說明Boot LU A是當前活躍的Boot LU,因此主機會從LU 1上讀取啟動代碼完成系統(tǒng)的啟動。
值得一提的是,Boot LU不是必須的。如果系統(tǒng)的啟動代碼不是存儲在UFS設(shè)備上,那么Boot LU就不需要,因此bBootLunEn = 0。
RPMB LU
在UFS里,有這么一個LU,主機往該LU寫數(shù)據(jù)時,UFS設(shè)備會校驗數(shù)據(jù)的合法性,只有特定的主機才能寫入;同時,主機在讀取數(shù)據(jù)時,也提供了校驗機制,保證了主機讀取到的數(shù)據(jù)是從該LU上讀的數(shù)據(jù),而不是攻擊者偽造的數(shù)據(jù)。這個LU就是RPMB LU。
關(guān)于RPMB,后面有專門章節(jié)介紹,這里不多說。
“四大名擼” 每個LU分工明確,分別執(zhí)行不同的任務(wù)。下面把 “四大名擼” 能接收的命令列一下:
他們能接收一些通用的命令(如上圖綠色命令),還有只有該LU能執(zhí)行的命令(如紅色命令),具體命令可查看Spec。
需要注意的是,寫B(tài)oot LU和RPMB LU時,它是不支持cache操作的,就是說,數(shù)據(jù)必須寫到閃存中以后,這筆寫命令才算完成。而對一般LU的寫,一般都是cache操作的,即主機數(shù)據(jù)到設(shè)備的內(nèi)部buffer,設(shè)備就會回命令完成狀態(tài)給主機.
-
存儲系統(tǒng)
+關(guān)注
關(guān)注
2文章
409瀏覽量
40852 -
邏輯
+關(guān)注
關(guān)注
2文章
833瀏覽量
29464 -
UFS
+關(guān)注
關(guān)注
6文章
103瀏覽量
24037
原文標題:蛋蛋讀UFS之五:邏輯單元(LU)
文章出處:【微信號:SSDFans,微信公眾號:SSDFans】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論