資源描述:
《云存儲系統(tǒng)設(shè)計》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、云存儲系統(tǒng)設(shè)計鄧侃博士dengkan@smartclouder.com1/30單機(jī)文件系統(tǒng)面臨的問題2/30文件路徑元數(shù)據(jù):文件名、尺寸、類型、時間戳、作者,等等文件系統(tǒng)的功能:樹形結(jié)構(gòu)的文件目錄創(chuàng)建文件、刪除、列清單,讀、寫、查、開啟、關(guān)閉。3/30LinuxExt2文件系統(tǒng)數(shù)據(jù)結(jié)構(gòu)Ext2PhysicalLayerExt2Directory文件內(nèi)容元數(shù)據(jù)Ext2iNode目錄樹4/30LinuxExt2文件系統(tǒng)功能模塊在讀寫過程中,文件內(nèi)容暫存在內(nèi)存。VirtualFileSystem提供統(tǒng)一
2、的APIs,不依賴于文件系統(tǒng)的具體實現(xiàn)。統(tǒng)一的驅(qū)動接口,不依賴于具體的設(shè)備??刂菩盘柫髋c數(shù)據(jù)流分離。5/30Ext2PhysicalLayer?通常硬盤空間被劃分為若干組,每一組又細(xì)分為若干塊。?每一組中的所有塊,尺寸都相同。但是不同組,下屬的塊的尺寸可以不同。?在寫入某尺寸的數(shù)據(jù)前,先找到可寫空間最適宜的塊,所謂最適宜,通常指可寫空間比寫入內(nèi)容的尺寸相同或略大。?把硬盤劃分為組與塊的目的,為了便于增刪改,便于重復(fù)使用。如同停車場劃分停車位一樣。?當(dāng)刪除文件時,需要記住被釋放的塊。?問題:1.有空
3、間被浪費。2.文件內(nèi)容不一定被存儲在連續(xù)空間,降低讀寫速度。6/30?往現(xiàn)有文件里,寫入更多內(nèi)容時,硬盤空間的分配,是根據(jù)內(nèi)容占用的空間而定,所以,無法保證整個文件被存放在連續(xù)的硬盤空間。?頻繁增刪改文件內(nèi)容,會導(dǎo)致文件的內(nèi)容,被放置在離散的硬盤空間里,這就是Fragmentation問題。?Fragmentation導(dǎo)致硬盤讀寫效率下降,因為在不連續(xù)的硬盤區(qū)域讀寫,需要磁頭切換硬盤磁道。?解決辦法:隔一段時間,進(jìn)行硬盤清理,合并離散存儲空間。7/30?問題:硬盤“寫”操作速度較慢。尤其是在指定位
4、置的“插入”(RandomAccess),速度最慢。而在文件末尾,追加內(nèi)容(Append),速度比插入快得多。?解決辦法:先寫入內(nèi)存,然后寫入硬盤。寫入硬盤時,先在日記中,記錄操作步驟(AppendLog),以后再修改文件內(nèi)容。LinuxExt3=LinuxExt2+JournalingFileSystemTime:T1CommitTimeCommittedFileLog(Journal)Position#1#2#3#4#5#6@1@2@3@4Data1020304050-Add2to#2Appe
5、nd90Del#4Minus2to#2Time:T2CommittedFileLog(Journal)Position#1#2#3#4#5#6@4@5@6@7Data102230-5090Minus2to#2Add2to#5Set#280Data(#2)=?Data(#2)=File(#2)+Log(@1)+Log(@2)+Log(@3)=808/30?問題:單臺計算機(jī)的硬盤空間,可能不夠用,?解決辦法:把其它機(jī)器上的文件系統(tǒng),mount到本機(jī)上,讓用戶以為都是本地文件系統(tǒng)。?VFS:讓不同來源不
6、同類型的文件系統(tǒng),保持統(tǒng)一的APIs。DistributedLinuxExt3withNFS本地文件系統(tǒng)網(wǎng)絡(luò)文件系統(tǒng)對應(yīng)于不同的文件類型,不同的文件系統(tǒng)各有優(yōu)劣。單機(jī)不能Mount太多遠(yuǎn)程文件系統(tǒng),遠(yuǎn)程文件數(shù)據(jù)傳輸協(xié)議:XDR否則它們占用太多本機(jī)內(nèi)存和計算資源。(ExternalDataRepresentation)9/30?文件系統(tǒng)的三個主要功能:目錄樹,元數(shù)據(jù),文件內(nèi)容。?LinuxExt2的數(shù)據(jù)結(jié)構(gòu),用于存儲以上三種信息。?LinuxExt2的功能模塊,兩層抽象。SystemInterfac
7、e,兼容不同的文件系統(tǒng)實現(xiàn)。DeviceInterface,兼容不同的存儲設(shè)備。?LinuxExt2在硬盤上的存儲單元,是定長的,有利于增刪改,有利于重復(fù)利用。?問題一,定長的存儲單元,導(dǎo)致Fragmentation,文件碎片化。解決辦法:定期Merge文件,去除碎片。?問題二,“寫”速度太慢。解決辦法:AppendLog,thenMerge(Journaling)。LinuxExt3=Ext2+Journaling?問題三,磁盤空間太小。解決辦法:Mount網(wǎng)絡(luò)文件系統(tǒng)。例如NFS。?問題四,目
8、錄樹占用太多空間。解決辦法:把目錄樹外移到專門的服務(wù)器上,即,完全的分布式文件系統(tǒng)。10/30分布式文件系統(tǒng)面臨的問題11/30?HDFS分布式文件系統(tǒng),每個文件被分拆成若干塊,每塊尺寸均等,例如256MB。這些塊被存放到不同的存儲服務(wù)器上。?可靠性,HadoopHDFS體系結(jié)構(gòu)每一塊,被復(fù)制成多個備份(Replica).?Master-Slave體系結(jié)構(gòu).Master:Namenode,存放目錄樹等等。Slave:Datanode.存放內(nèi)容數(shù)據(jù)。12/30?GoogleFileS