(1)StorageInfo類是通用存儲信息的類,通用的意思是NameNode和DataNode上面文件目錄結(jié)構(gòu)共有的信息,這些信息包括layoutVersion(應(yīng)用軟件的版本和文件目錄的版本一致),namespaceID(Storage的ID,作用還不清楚),cTime(就是創(chuàng)建時(shí)間),這些信息顯然是非易失性的,應(yīng)該放在目錄的VERSION文件中。 (2)從Storage類的注釋中可知,Local storage可以有多個(gè)目錄,每個(gè)目錄有相同的VERSION文件,其中保存Local storage information,包括(type of the node, the storage layout version,the namespace id, the fs state creation time)。服務(wù)程序(DataNode或者NameNode,因?yàn)镾torage對兩者通用)啟動(dòng)時(shí)會(huì)對所有目錄上鎖。StorageDirectory是Storage類中的內(nèi)部類,用來表示上述的一個(gè)目錄。 (3)DataStorage類繼承Storage用于DataNode。Block(BlockID,generationStamp數(shù)據(jù)塊的版本號,numBytes數(shù)據(jù)塊的大?。ataBlockInfo類用來包含對Block的操作而不僅僅抽象屬性,其中FSVolume表示Block所在的目錄(Storage.StorageDirectory)。當(dāng)然還有一個(gè)File對象指向?qū)嶋H的Block,detachBlock把DataBlockInfo中的blockdetach掉,使得File可以安全讀,因?yàn)閒ile硬鏈接可能大于一,所以需要復(fù)制,在Windows下面沒有明白這個(gè)函數(shù)的代碼是如何執(zhí)行的,模擬的結(jié)果是錯(cuò)的。但是Linux下面應(yīng)該是正確。 |
|