這篇文章主要為大家展示了“SOLARIS ZFS文件系統(tǒng)的示例分析”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“SOLARIS ZFS文件系統(tǒng)的示例分析”這篇文章吧。
創(chuàng)新互聯(lián)建站長(zhǎng)期為近千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為銅山企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作,銅山網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
ZFS是SUN推出的世界上第一個(gè)128位的文件系統(tǒng),這意味著它能存儲(chǔ)1800億億(18.4 × 10^1 8)倍于當(dāng)前64位文件系統(tǒng)的數(shù)據(jù)。ZFS的設(shè)計(jì)如此超前以至于這個(gè)極限就當(dāng)前現(xiàn)實(shí)際可能永遠(yuǎn)無(wú)法遇到。據(jù)說(shuō):“要填滿一個(gè)128位的文件系統(tǒng),將耗盡地球上所有存儲(chǔ)設(shè)備。除非你擁有煮沸整個(gè)海洋的能量,不然你不可能將其填滿。(Populating 128-bit file systems would exceed the quantum limits of earth-based storage. You couldn't fill a 128-bit storage pool without boiling the oceans.)”[1]
以下是ZFS的一些理論極限:
* 2^48 — 任意文件系統(tǒng)的快照數(shù)量 (2 × 10^14)
* 2^48 — 任何單獨(dú)文件系統(tǒng)的文件數(shù) (2 × 10^14)
* 16 exabytes (2^64 byte) — 文件系統(tǒng)最大尺寸
* 16 exabytes (2^64 byte) — 最大單個(gè)文件尺寸
* 16 exabytes (2^64 byte) — 最大屬性大小
* 3 × 10^23 petabytes (2^78 byte) — 最大zpool大小
* 2^56 — 單個(gè)文件的屬性數(shù)量(受ZFS文件數(shù)量的約束,實(shí)際為2^4 8)
* 2^56 — 單個(gè)目錄的文件數(shù)(受ZFS文件數(shù)量的約束,實(shí)際為2^4 8)
* 2^64 — 單一zpool的設(shè)備數(shù)
* 2^64 — 系統(tǒng)的zpools數(shù)量
* 2^64 — 單一zpool的文件系統(tǒng)數(shù)量
作為對(duì)這些數(shù)字的感性認(rèn)識(shí),假設(shè)每秒鐘創(chuàng)建1,000個(gè)新文件,達(dá)到ZFS文件數(shù)極限需要大約9,000年。
在辯解填滿ZFS與煮沸海洋的關(guān)系時(shí),Bonwick寫到:
盡管我們都希望摩爾定律永遠(yuǎn)延續(xù),但是量子力學(xué)給定了任何物理設(shè)備上計(jì)算速率(computation rate)與信息量的理論極限。舉例而言,一個(gè)質(zhì)量為1公斤,體積為1升的物體,每秒至多在10^31位信息 上進(jìn)行10^51次運(yùn)算。[參考 Seth Lloyd, "Ultimate physical limits to computation(計(jì)算的終極物理限制)." Nature 406, 1047-1054 (2000)]。一個(gè)完全的128位存儲(chǔ)池將包含2^128 個(gè)塊 = 2^137 字節(jié) = 2^140 位;應(yīng)此,保存這些數(shù)據(jù)位至少需要(2^140 位) / (10^31 位/公斤) = 1360億公斤的物質(zhì)。
補(bǔ)充:
使用ZFS的十條理由 1. 再也不需要fsck, scandisk 不管你是在用Linux,UNIX還是Windows,相信大家都有過(guò)類似的體會(huì):當(dāng)系統(tǒng)意外斷電或者非法關(guān)機(jī),系統(tǒng)重起后發(fā)現(xiàn)文件系統(tǒng)有 inconsistent的問(wèn)題,這時(shí) 候就需要fsck或者scandisk 來(lái)修復(fù),這段時(shí)間是非常耗時(shí)而且最后不一定能夠修復(fù)成功。更糟糕的是,如果這是一臺(tái)服務(wù)器需要做fsck的時(shí)候,只能offline(下線),而且現(xiàn)有應(yīng)用往往都是大硬盤,相應(yīng)fsck修復(fù)時(shí)間也很長(zhǎng),這對(duì)許多使用該服務(wù)器的用戶來(lái)說(shuō)幾乎不能忍受的。而使用ZFS后大家可以徹底拋棄fsck這種工具,因?yàn)?ZFS是一個(gè)基于COW(Copy on Write)機(jī)制的文件系統(tǒng)。COW是不會(huì)對(duì)硬盤上現(xiàn)有的文件進(jìn)行重寫,保證所有硬盤上的文件都是有效的。所以不會(huì)有這種inconsistent的概念,自然就不需要這種工具了。 2. 管理簡(jiǎn)單 ZFS作為一個(gè)全新的文件系統(tǒng),全面拋棄傳統(tǒng)File System + Volume Manager + Storage的架構(gòu),所有的存儲(chǔ)設(shè)備是通過(guò)ZFS Pool進(jìn)行管理,只要把各種存儲(chǔ)設(shè)備加 入同一個(gè)ZFS Pool,大家就可以輕松的在這個(gè)ZFS Pool管理配置文件系統(tǒng)。大家再也不用牢記各種專業(yè)概念,各種命令newfs, metinit及各種Volume Manager的用法。在ZFS中我們只需要兩個(gè)命令,zpool(針 對(duì)ZFS Pool管理)和zfs(針對(duì)ZFS文件系統(tǒng)的管理),就可以輕松管理128位的文件系統(tǒng)。舉個(gè)例子,我們經(jīng)常會(huì)遇到系統(tǒng)數(shù)據(jù)增長(zhǎng)過(guò)快,現(xiàn)有存儲(chǔ)容量不夠,需要添加硬盤,如果依照傳統(tǒng)的Volume Manager管理方式,那我們需要預(yù)先要考慮很多現(xiàn)有因素,還要預(yù)先根據(jù)應(yīng)用計(jì)算出需要配置的各種參數(shù)。在ZFS情況下,我們的系統(tǒng)管理員可以徹底解放,再也不需要這種人為的復(fù)雜考慮和計(jì)算,我們可以把這些交給ZFS,因?yàn)閆FS Pool會(huì)自動(dòng)調(diào)節(jié),動(dòng)態(tài)適應(yīng)需求。我們只需一個(gè)簡(jiǎn)單的命令為這個(gè)ZFS Pool加入新的硬盤就可以了: zpool add zfs_pool mirror c4t0d0 c5t0d0 基于這個(gè)動(dòng)態(tài)調(diào)節(jié)的ZFS Pool之上的所有的文件系統(tǒng)就可以立即使用到這個(gè)新的硬盤,并且會(huì)自動(dòng)的選擇最優(yōu)化的參數(shù)。 而且ZFS同時(shí)也提供圖形化的管理界面。 3. 沒(méi)有任何容量限制 ZFS(Zettabyte File System)文件系統(tǒng)就如其名字所預(yù)示,可以提供真正的海量存儲(chǔ),在現(xiàn)實(shí)中幾乎不可能遇到容量問(wèn)題。在現(xiàn)有的64位kernel(內(nèi)核)下,它可以容納達(dá)到16 Exabytes(264)大小的單個(gè)文件,可以使用264個(gè)存儲(chǔ)設(shè)備,可以創(chuàng)建264個(gè)文件系統(tǒng)。 4. 完全保證 數(shù)據(jù) 的正確和完整 由于ZFS所有的數(shù)據(jù)操作都是基于Transaction(事務(wù)),一組相應(yīng)的操作會(huì)被ZFS解析為一個(gè)事務(wù)操作,事務(wù)的操作就代表著一組操作要么一起失敗,要么一起成功。而且如前所說(shuō),ZFS對(duì) 所有的操作是基于COW(Copy on Write), 從而保證設(shè)備上的數(shù)據(jù)始終都是有效的,再也不會(huì)因?yàn)橄到y(tǒng)崩潰或者意外掉電導(dǎo)致數(shù)據(jù)文件的inconsistent。 還有一種潛在威脅數(shù)據(jù)的可能是來(lái)自于硬件設(shè)備的問(wèn)題,比如磁盤,RAID卡的硬件問(wèn)題或者驅(qū)動(dòng)bug?,F(xiàn)有文件系統(tǒng)通常遇到這個(gè)問(wèn)題,往往只是簡(jiǎn)單的把錯(cuò)誤數(shù)據(jù)直接交給上層應(yīng)用,通常我們把這個(gè)問(wèn)題稱作 Silent Data Corruption。而在ZFS中,對(duì)所有數(shù)據(jù)不管是用戶數(shù)據(jù)還是文件系統(tǒng)自身的metadata數(shù)據(jù)都進(jìn)行256位的Checksum(校驗(yàn)),當(dāng)ZFS在提交數(shù)據(jù)時(shí)會(huì)進(jìn)行校驗(yàn),徹底杜絕這種Silent Data Corruption情況。 5. 提供優(yōu)異 性能和擴(kuò)展性 和傳統(tǒng)File System + Volume Manager + Storage架構(gòu)不同,ZFS則是直接基于存儲(chǔ)設(shè)備提供所有的功能,因此有自己獨(dú)有的創(chuàng)新特性,性能自然非比尋常。 * Dynamic Striping vs. Static Striping 由于ZFS是基于COW和一個(gè)全局動(dòng)態(tài)的ZFS Pool,任何一次寫 操作,都是對(duì)一塊新數(shù)據(jù)塊(Block)的一次寫操作。ZFS從ZFS Pool中動(dòng)態(tài)挑選出一個(gè)最優(yōu)的設(shè)備,并且以一個(gè)transaction(事務(wù))線性寫入,充分有效地利用了現(xiàn)有設(shè)備的帶寬,我們把這個(gè)特性稱為 Dynamic Striping。而相對(duì)應(yīng)的Static Striping則是傳統(tǒng)文件系統(tǒng)所使用的方式,Static Striping需要管理員預(yù)先對(duì)這組Stripe進(jìn)行正確地計(jì)算人為設(shè)置,而且如果加入新的設(shè)備則需要再次人為的計(jì)算和設(shè)置,更為嚴(yán)重的是如果人為計(jì)算錯(cuò)誤,則會(huì)直接影響系統(tǒng)的性能。而在使用Dynamic Striping這種特性之后,我們根本不需要人為介入,ZFS會(huì)自動(dòng)調(diào)整,智能的為你提供最佳的設(shè)備,最快的操作方式。 * 支持多種 大小的數(shù)據(jù)塊(Multiple Block Size) ZFS支持多種大小的數(shù)據(jù)塊定義,從512字節(jié)到1M字節(jié)。和傳統(tǒng)文件系統(tǒng)往往都是固定大小數(shù)據(jù)塊不同,ZFS則是可以動(dòng)態(tài)的根據(jù)不同 大小的文件進(jìn)行計(jì)算,動(dòng)態(tài)的選擇最佳的數(shù)據(jù)塊。 因?yàn)椴煌笮?shù)據(jù)塊,直接影響到實(shí)際使用硬盤容量和讀取速度。如果使用較小的數(shù)據(jù)塊,存儲(chǔ)文件所導(dǎo)致的碎片則較少,讀寫小文件更快一些,但是會(huì)導(dǎo)致需要?jiǎng)?chuàng)建更多的 metadata,讀寫大文件則會(huì)更費(fèi)時(shí)。如果使用較大的數(shù)據(jù)塊,使用的metadata較少,更利于讀寫大文件,但是會(huì)導(dǎo)致更多的碎片。ZFS根據(jù)實(shí)際調(diào)查現(xiàn)有文件使用的情況,分析出一個(gè)選擇數(shù)據(jù)塊大小的算法,動(dòng)態(tài)的根據(jù)實(shí)際文件大小確定最佳的數(shù)據(jù)塊。所以ZFS是非常智能的,在不需要系統(tǒng)管理員介入,就可以得到一個(gè)自我調(diào)優(yōu)的結(jié)果。當(dāng)然ZFS也支持用戶對(duì)單個(gè)文件或者整個(gè)文件系統(tǒng)所使用的數(shù)據(jù)塊大小的自定義設(shè)置。 * 智能預(yù)讀取(Intelligent Prefetch) 多數(shù)的操作系統(tǒng)都有這種將數(shù)據(jù)預(yù)先讀取的功能,而ZFS則是建立在文件系統(tǒng)上直接提供的一種更加智能的數(shù)據(jù)預(yù)讀取功能。它不僅可以智能地識(shí)別出多種讀取模式, 進(jìn)行提前讀取數(shù)據(jù),而且可以對(duì)每個(gè)讀取數(shù)據(jù)流進(jìn)行這種預(yù)讀取智能識(shí)別,這個(gè)對(duì)許多流媒體提供者來(lái)說(shuō)是件非常好的事情。 在擴(kuò)展性上,和現(xiàn)有文件系統(tǒng)多是基于一個(gè)受限的靜態(tài)模型不同,ZFS是采用ZFS Pool這個(gè)動(dòng)態(tài)概念,它的metadata也是動(dòng)態(tài),并且讀寫操作都是可并行的,并且具有優(yōu)先級(jí)概念,所以即使在大數(shù)據(jù)量,多設(shè)備的情況下仍可以保證性能的線性增長(zhǎng)。 6. 自我修復(fù)功能 * ZFS Mirror 和 RAID-Z 傳統(tǒng)的硬盤Mirror及RAID 4,RAID 5陣列方式都會(huì)遇到前面提到過(guò)的問(wèn)題:Silent Data Corruption。如果發(fā)生了某塊硬盤物理問(wèn)題導(dǎo)致數(shù)據(jù)錯(cuò)誤,現(xiàn)有的Mirror,包括RAID 4,RAID 5陣列會(huì)默默地把這個(gè)錯(cuò)誤數(shù)據(jù)提交給上層應(yīng)用。如果這個(gè)錯(cuò)誤發(fā)生在Metadata中,則會(huì)直接導(dǎo)致系統(tǒng)的Panic。而且還有一種更為嚴(yán)重的情況是:在 RAID 4和RAID 5陣列中,如果系統(tǒng)正在計(jì)算Parity數(shù)值,并再次寫入新數(shù)據(jù)和新Parity值的時(shí)候發(fā)生斷電,那么整個(gè)陣列的所有存儲(chǔ)的數(shù)據(jù)都毫無(wú)意義了。 在ZFS中則提出了相對(duì)應(yīng)的ZFS Mirror和RAID-Z方式,它在負(fù)責(zé)讀取數(shù)據(jù)的時(shí)候會(huì)自動(dòng)和256位校驗(yàn)碼進(jìn)行校驗(yàn),會(huì)主動(dòng)發(fā)現(xiàn)這種Silent Data Corruption,然后通過(guò)相應(yīng)的Mirror硬盤或者通過(guò)RAID-Z陣列中其他硬盤得到正確的數(shù)據(jù)返回給上層應(yīng)用,并且同時(shí)自動(dòng)修復(fù)原硬盤的 Data Corruption 。 * Fault Manager 在Solaris 10中,包含 一個(gè)ZFS診斷引擎和Solaris的 Fault Manager(這也是Solaris 10的另一個(gè)新特性)交互,可以實(shí)時(shí)地診斷分析并且報(bào)告ZFS Pool和存儲(chǔ)設(shè)備的錯(cuò)誤,用戶可以通過(guò)Fault Manager及時(shí)得到一個(gè)非常友善的消息。這個(gè)診斷引擎雖然不會(huì)采取主動(dòng)的行為去修復(fù)或者解決問(wèn)題,但是會(huì)在消息中提示系統(tǒng)管理員可采取的動(dòng)作。類似下面一個(gè)ZFS報(bào)錯(cuò)消息,其中REC-ACTION就是建議采取的動(dòng)作: SUNW-MSG-ID: ZFS-8000-D3, TYPE: Fault, VER: 1, SEVERITY: Major EVENT-TIME: Fri Mar 10 11:09:06 MST 2006 PLATFORM: SUNW,Ultra-60, CSN: -, HOSTNAME: neo SOURCE: zfs-diagnosis, REV: 1.0 EVENT-ID: b55ee13b-cd74-4dff-8aff-ad575c372ef8 DESC: A ZFS device failed. Refer to http://sun.com/msg/ZFS-8000-D3 for more information. AUTO-RESPONSE: No automated response will occur. IMPACT: Fault tolerance of the pool maybe compromised. REC-ACTION: Run ’zpool status -x’ and replace the bad device. 7. 安全 在安全上,ZFS支持類似NT風(fēng)格NFSv4版的ACL(讀取控制列表)。而且前面所提到的256位驗(yàn)證碼,用戶可選擇多種驗(yàn)證方式,包括SHA-256驗(yàn)證算法,從而在物理存儲(chǔ)單元級(jí)別上保證數(shù)據(jù)的安全性。 8. 超強(qiáng)功能 ZFS作為“最后一個(gè)文件系統(tǒng)”,涵蓋了基本的文件系統(tǒng)和Volume管理的功能,同時(shí)一并提供許多企業(yè)級(jí)別的超強(qiáng)功能:Quota(配額), Reservation(預(yù)留), Compression(壓 縮), Snapshot(快照),Clone(克隆)。并且速度非??臁S辛诉@個(gè)文件系統(tǒng),大家再也不需要任何Volume Manager了。 9. 兼容性 ZFS是一個(gè)完全兼容POSIX規(guī)范的文件系統(tǒng),所以處于上層的應(yīng)用程序是完全不受影響。ZFS也提供一個(gè)Emulated Volume模塊,可以把任何一個(gè)ZFS文件系統(tǒng)作為普通的塊設(shè)備使用。同時(shí)ZFS也可以使用基于Volume Manager構(gòu)建的Volume作為存儲(chǔ)設(shè)備單 元。這樣在不需要修改應(yīng)用程序,不修改已有文件系統(tǒng)下,給了大家最大的自由度去獲得ZFS提供的各種特性。 10. 開源 ZFS是Sun Microsystems公司作為OpenSolaris的一個(gè)開源項(xiàng)目運(yùn)作并且完全免費(fèi)使用,點(diǎn)擊這里(http: //www.opensolaris.org/os/community/zfs/source/) 可以直接瀏覽到ZFS的代碼。這就代表著我們不僅同時(shí)可以享受商業(yè)公司的高質(zhì)量,也可以獲得開源模式的優(yōu)點(diǎn)。 雖然目前只有Solaris支持該文件系統(tǒng),但是這種開源的模式必定會(huì)促進(jìn)更多基于ZFS的應(yīng)用?,F(xiàn)在已經(jīng)有國(guó)外開發(fā)者正在將ZFS移植到Linux和 Mac OS上來(lái)。如果想要體驗(yàn)一下ZFS,由于目前它和Solaris 10綁定在一起,所以需要下載最新版的Solaris 10 6/06 。 |
以上是“SOLARIS ZFS文件系統(tǒng)的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!