日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

我們無時無刻不在使用文件系統(tǒng),進(jìn)行開發(fā)時在使用文件系統(tǒng),瀏覽網(wǎng)頁時在使用文件系統(tǒng),玩手機(jī)時也在使用文件系統(tǒng)。

對于非專業(yè)人士來說,可能根本不知道文件系統(tǒng)為何物。因為,通常來說,我們在使用文件系統(tǒng)時一般不會感知到文件系統(tǒng)的存在。即使是程序開發(fā)人員,很多人對文件系統(tǒng)也是一知半解。

雖然文件系統(tǒng)經(jīng)常不被感知,但是文件系統(tǒng)是非常重要的。在 linux 中,文件系統(tǒng)是其內(nèi)核的四大子系統(tǒng)之一;微軟的 DOS(Disk Operating System,磁盤管理系統(tǒng)),核心就是一個管理磁盤的文件系統(tǒng),由此可見文件系統(tǒng)的重要性。

文件系統(tǒng)技術(shù)內(nèi)幕:大數(shù)據(jù)時代海量數(shù)據(jù)存儲之道

 

01

 

常見文件系統(tǒng)及分類

其實(shí)文件系統(tǒng)發(fā)展到現(xiàn)在,其種類也豐富多樣。比如,基于磁盤的普通本地文件系統(tǒng)除了 Ext4,還包括 XFS、ZFS 和 Btrfs 等。其中 Btrfs 和 ZFS 不僅可以管理一塊磁盤,還可以實(shí)現(xiàn)多塊磁盤的管理。不僅如此,這兩個文件系統(tǒng)實(shí)現(xiàn)了數(shù)據(jù)的冗余管理,這樣可以避免磁盤故障導(dǎo)致的數(shù)據(jù)丟失。除了對磁盤數(shù)據(jù)管理的文件系統(tǒng),還有一些網(wǎng)絡(luò)文件系統(tǒng)。也就是說,這些文件系統(tǒng)看似在本地,但其實(shí)數(shù)據(jù)是在遠(yuǎn)程的專門設(shè)備上。客戶端通過一些網(wǎng)絡(luò)協(xié)議實(shí)現(xiàn)數(shù)據(jù)的訪問,如 NFS 和 GlusterFS 等文件系統(tǒng)。經(jīng)過幾十年的發(fā)展,文件系統(tǒng)的種類非常多,我們沒有辦法逐一進(jìn)行介紹。下面就對主要的文件系統(tǒng)進(jìn)行介紹。

本地文件系統(tǒng)

本地文件系統(tǒng)是對磁盤空間進(jìn)行管理的文件系統(tǒng),也是最常見的文件系統(tǒng)形態(tài)。從呈現(xiàn)形態(tài)上來看,本地文件系統(tǒng)就是一個樹形的目錄結(jié)構(gòu)。本地文件系統(tǒng)本質(zhì)上就是實(shí)現(xiàn)對磁盤空間的管理,實(shí)現(xiàn)磁盤線性空間與目錄層級結(jié)構(gòu)的轉(zhuǎn)換,如下圖所示。

文件系統(tǒng)技術(shù)內(nèi)幕:大數(shù)據(jù)時代海量數(shù)據(jù)存儲之道

 

從普通用戶的角度來說,本地文件系統(tǒng)主要方便了對磁盤空間的使用,降低了使用難度,提高了利用效率。常見的本地文件系統(tǒng)有 Ext4、Btrfs、XFS 和 ZFS 等。

偽文件系統(tǒng)

偽文件系統(tǒng)是 Linux 中的概念,它是對傳統(tǒng)文件系統(tǒng)的延伸。偽文件系統(tǒng)并不會持久化數(shù)據(jù),而是內(nèi)存中的文件系統(tǒng)。它是以文件系統(tǒng)的形態(tài)實(shí)現(xiàn)用戶與內(nèi)核數(shù)據(jù)交互的接口。常見的偽文件系統(tǒng)有 proc、sysfs 和 configfs 等。

在 Linux 中,偽文件系統(tǒng)主要實(shí)現(xiàn)內(nèi)核與用戶態(tài)的交互。比如,我們經(jīng)常使用的 IOStat 工具,其本質(zhì)上是通過訪問/proc/diskstats 文件獲取信息的,如下圖所示。而該文件正是偽文件系統(tǒng)中的一個文件,但其內(nèi)容其實(shí)是內(nèi)核中對磁盤訪問的統(tǒng)計,它是內(nèi)核某些數(shù)據(jù)結(jié)構(gòu)的實(shí)例。

文件系統(tǒng)技術(shù)內(nèi)幕:大數(shù)據(jù)時代海量數(shù)據(jù)存儲之道

 

網(wǎng)絡(luò)文件系統(tǒng)

網(wǎng)絡(luò)文件系統(tǒng)是基于 TCP/IP 協(xié)議(整個協(xié)議可能會跨層)的文件系統(tǒng),允許一臺計算機(jī)訪問另一臺計算機(jī)的文件系統(tǒng),就如訪問本地文件系統(tǒng)一樣。網(wǎng)絡(luò)文件系統(tǒng)通常分為客戶端和服務(wù)端,其中客戶端類似本地文件系統(tǒng),而服務(wù)端則是對數(shù)據(jù)進(jìn)行管理的系統(tǒng)。網(wǎng)絡(luò)文件系統(tǒng)的使用與本地文件系統(tǒng)的使用沒有任何差別,只需要執(zhí)行 mount 命令掛載即可。網(wǎng)絡(luò)文件系統(tǒng)也有很多種類,如 NFS 和 SMB 等。

在用戶層面,完成掛載后的網(wǎng)絡(luò)文件系統(tǒng)與本地文件系統(tǒng)完全一樣,看不出任何差異,對用戶是透明的。網(wǎng)絡(luò)文件系統(tǒng)就好像將遠(yuǎn)程的文件系統(tǒng)映射到了本地。如下圖所示,左側(cè)是客戶端,右側(cè)是文件系統(tǒng)服務(wù)端。

文件系統(tǒng)技術(shù)內(nèi)幕:大數(shù)據(jù)時代海量數(shù)據(jù)存儲之道

 

當(dāng)在客戶端對服務(wù)端導(dǎo)出的文件系統(tǒng)進(jìn)行掛載后,服務(wù)端的目錄樹就成為客戶端目錄樹的一顆子樹。這個子目錄對普通用戶來說是透明的,不會感知到這是一個遠(yuǎn)程目錄,但實(shí)際上讀/寫請求需要通過網(wǎng)絡(luò)轉(zhuǎn)發(fā)到服務(wù)端進(jìn)行處理。

集群文件系統(tǒng)

集群文件系統(tǒng)本質(zhì)上也是一種本地文件系統(tǒng),只不過它通常構(gòu)建在基于網(wǎng)絡(luò)的SAN 設(shè)備上,且在多個節(jié)點(diǎn)中共享 SAN 磁盤。集群文件系統(tǒng)最大的特點(diǎn)是可以實(shí)現(xiàn)客戶端節(jié)點(diǎn)對磁盤介質(zhì)的共同訪問,且視圖具有一致性,如下圖所示。這種視圖的一致性是指,如果在節(jié)點(diǎn) 0 創(chuàng)建一個文件,那么在節(jié)點(diǎn) 1 和節(jié)點(diǎn) 2都可以馬上看到。這個特性其實(shí)跟網(wǎng)絡(luò)文件系統(tǒng)類似,網(wǎng)絡(luò)文件系統(tǒng)也是可以在某個客戶端看到其他客戶端對文件系統(tǒng)的修改的。但是兩者是有差異的,集群文件系統(tǒng)本質(zhì)上還是構(gòu)建在客戶端的,而網(wǎng)絡(luò)文件系統(tǒng)則是構(gòu)建在服務(wù)端的。

文件系統(tǒng)技術(shù)內(nèi)幕:大數(shù)據(jù)時代海量數(shù)據(jù)存儲之道

 

同時,對于集群文件系統(tǒng)來說,其最大的特點(diǎn)是多個節(jié)點(diǎn)可以同時為應(yīng)用層提供文件系統(tǒng)服務(wù),特別適合用于業(yè)務(wù)多活的場景,通過集群文件系統(tǒng)提供高可用集群機(jī)制,避免因為宕機(jī)造成服務(wù)失效。

分布式文件系統(tǒng)

從本質(zhì)上來說,分布式文件系統(tǒng)其實(shí)也是一種網(wǎng)絡(luò)文件系統(tǒng)。在《計算機(jī)科學(xué)技術(shù)名詞》中給出的定義為“一種文件系統(tǒng),所管理的數(shù)據(jù)資源存儲在分布式網(wǎng)絡(luò)節(jié)點(diǎn)上,提供統(tǒng)一的文件訪問接口”,可以看出,分布式文件系統(tǒng)與網(wǎng)絡(luò)文件系統(tǒng)的差異在于服務(wù)端包含多個節(jié)點(diǎn),也就是服務(wù)端是可以橫向擴(kuò)展的。從使用角度來說,分布式文件系統(tǒng)的使用與網(wǎng)絡(luò)文件系統(tǒng)的使用沒有太大的差異,也是通過執(zhí)行 mount 命令掛載,客戶端的數(shù)據(jù)通過網(wǎng)絡(luò)傳輸?shù)椒?wù)端進(jìn)行處理。

我們發(fā)現(xiàn)常規(guī)的網(wǎng)絡(luò)文件系統(tǒng)最大的缺點(diǎn)是服務(wù)端無法實(shí)現(xiàn)橫向擴(kuò)展。這個缺點(diǎn)對大型互聯(lián)網(wǎng)應(yīng)用來說幾乎是不可容忍的。本文將介紹一下在互聯(lián)網(wǎng)領(lǐng)域應(yīng)用非常廣泛的分布式文件系統(tǒng)。分布式文件系統(tǒng)最大的特點(diǎn)是服務(wù)端通過計算機(jī)集群實(shí)現(xiàn),可以實(shí)現(xiàn)橫向擴(kuò)展,存儲端的存儲容量和性能可以通過橫向擴(kuò)展的方式實(shí)現(xiàn)近似線性的提升。

文件系統(tǒng)技術(shù)內(nèi)幕:大數(shù)據(jù)時代海量數(shù)據(jù)存儲之道

 

02

什么是分布式文件系統(tǒng)

分布式文件系統(tǒng)(Distributed File System,簡稱 DFS)是網(wǎng)絡(luò)文件系統(tǒng)的延伸,其關(guān)鍵點(diǎn)在于存儲端可以靈活地橫向擴(kuò)展。也就是可以通過增加設(shè)備(主要是服務(wù)器)數(shù)量的方法來擴(kuò)充存儲系統(tǒng)的容量和性能。同時,分布式文件系統(tǒng)還要對客戶端提供統(tǒng)一的視圖。也就是說,雖然分布式文件系統(tǒng)服務(wù)由多個節(jié)點(diǎn)構(gòu)成,但客戶端并不感知。在客戶端來看就好像只有一個節(jié)點(diǎn)提供服務(wù),而且是一個統(tǒng)一的分布式文件系統(tǒng)。

在分布式文件系統(tǒng)中,最出名的就是谷歌的 GFS。除此之外,還有很多開源的分布式文件系統(tǒng),比較有名且應(yīng)用比較廣泛的分布式文件系統(tǒng)有 HDFS、GlusterFS、CephFS、MooseFS 和 FastDFS 等。

分布式文件系統(tǒng)的具體實(shí)現(xiàn)有很多方法,不同的文件系統(tǒng)通常用來解決不同的問題,在架構(gòu)上也有差異。雖然分布式文件系統(tǒng)有很多差異,但是有很多共性的技術(shù)點(diǎn)。

在有些情況下,NFS 等網(wǎng)絡(luò)文件系統(tǒng)也被稱為分布式文件系統(tǒng)。但是在本文中,分布式文件系統(tǒng)是指服務(wù)端可以橫向擴(kuò)展的文件系統(tǒng)。也就是說,分布式文件系統(tǒng)最大的特點(diǎn)是可以通過增加節(jié)點(diǎn)的方式增加文件系統(tǒng)的容量,提升性能。

當(dāng)然,分布式文件系統(tǒng)與網(wǎng)絡(luò)文件系統(tǒng)也有很多相同的地方。比如,分布式文件系統(tǒng)也分為客戶端的文件系統(tǒng)和服務(wù)端的服務(wù)程序。同時,由于客戶端與服務(wù)端分離,分布式文件系統(tǒng)也要實(shí)現(xiàn)網(wǎng)絡(luò)文件系統(tǒng)中類似 RPC 的協(xié)議。

另外,分布式文件系統(tǒng)由于其數(shù)據(jù)被存儲在多個節(jié)點(diǎn)上,因此還有其他特點(diǎn)。包括但不限于以下幾點(diǎn)。

  • 支持按照既定策略在多個節(jié)點(diǎn)上放置數(shù)據(jù)。
  • 可以保證在出現(xiàn)硬件故障時,仍然可以訪問數(shù)據(jù)。
  • 可以保證在出現(xiàn)硬件故障時,不丟失數(shù)據(jù)。
  • 可以在硬件故障恢復(fù)時,保證數(shù)據(jù)的同步。
  • 可以保證多個節(jié)點(diǎn)訪問的數(shù)據(jù)一致性。

由于分布式文件系統(tǒng)需要客戶端與多個服務(wù)端交互,并且需要實(shí)現(xiàn)服務(wù)端的容錯,通常來說,分布式文件系統(tǒng)都會實(shí)現(xiàn)私有協(xié)議,而不是使用 NFS 等通用協(xié)議。

文件系統(tǒng)技術(shù)內(nèi)幕:大數(shù)據(jù)時代海量數(shù)據(jù)存儲之道

 

03

常見分布式文件系統(tǒng)

分布式文件系統(tǒng)的具體實(shí)現(xiàn)方法有很多,其實(shí)早在互聯(lián)網(wǎng)興盛之前就有一些分布式文件系統(tǒng),如 Lustre 等。早期分布式文件系統(tǒng)更多應(yīng)用在超算領(lǐng)域。

隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,特別是谷歌的 GFS 論文的發(fā)表,分布式文件系統(tǒng)又得到進(jìn)一步的發(fā)展。目前,很多分布式文件系統(tǒng)是參考谷歌發(fā)布的關(guān)于 GFS 的論文實(shí)現(xiàn)的。比如,大數(shù)據(jù)領(lǐng)域中的 HDFS 及一些開源的分布式文件系統(tǒng) FastDFS 和CephFS 等。

在開源分布式文件系統(tǒng)方面,比較知名的項目有大數(shù)據(jù)領(lǐng)域的 HDFS 和通用的CephFS 和 GlusterFS 等。這幾個開源項目在實(shí)際生產(chǎn)中使用得相對比較多一些。接下來將對常見的分布式文件系統(tǒng)進(jìn)行簡要的介紹。

GFS

GFS 是谷歌的一個分布式文件系統(tǒng),該分布式文件系統(tǒng)因論文 The google File System廣為世人所知。GFS 并沒有實(shí)現(xiàn)標(biāo)準(zhǔn)的文件接口,也就是其實(shí)現(xiàn)的接口并不與 POSIX 兼容。但包含創(chuàng)建、刪除、打開、關(guān)閉和讀/寫等基本接口。

GFS 集群節(jié)點(diǎn)包括兩個基本角色:一個是 master,該角色的節(jié)點(diǎn)負(fù)責(zé)文件系統(tǒng)級元數(shù)據(jù)管理;另一個是 chunkserver,該角色的節(jié)點(diǎn)通常有很多個,用于存儲實(shí)際的數(shù)據(jù)。GFS 對于文件的管理是在 master 完成的,而數(shù)據(jù)的實(shí)際讀/寫則可以直接與 chunkserver 交互,避免 master 成為性能瓶頸。

GFS 在實(shí)現(xiàn)時做了很多假設(shè),如硬件為普通商用服務(wù)器、文件大小在數(shù)百兆甚至更大及負(fù)載以順序大塊讀者為主等。其中,對于文件大小的假設(shè)尤為重要。基于該假設(shè),GFS 默認(rèn)將文件切割為 64MB 大小的邏輯塊(chunk),每個 chunk 生成一個 64 位的句柄,由 master 進(jìn)行管理。

這里需要重點(diǎn)強(qiáng)調(diào)的是,每個 chunk 生命周期和定位是由 master 管理的,但是chunk 的數(shù)據(jù)則是存儲在 chunkserver 的。正是這種架構(gòu),當(dāng)客戶端獲得 chunk 的位置和訪問權(quán)限后可以直接與 chunkserver 交互,而不需要 master 參與,進(jìn)而避免了master 成為瓶頸。

下圖所示為 GFS 架構(gòu)示意圖。

文件系統(tǒng)技術(shù)內(nèi)幕:大數(shù)據(jù)時代海量數(shù)據(jù)存儲之道

 

除了 GFS,還有很多類似架構(gòu)的分布式文件系統(tǒng)。比如,在大數(shù)據(jù)領(lǐng)域中的HDFS,它是專用于 Hadoop 大數(shù)據(jù)存儲的分布式文件系統(tǒng)。其架構(gòu)與 GFS 的架構(gòu)類似,包含一個用于管理元數(shù)據(jù)的節(jié)點(diǎn)和多個存儲數(shù)據(jù)的節(jié)點(diǎn),分別為 namenode和datanode。

HDFS 主要用來進(jìn)行大文件的處理,它將文件按照固定大小切割,然后存儲到數(shù)據(jù)節(jié)點(diǎn)。同時為了保證數(shù)據(jù)的可靠性,這些數(shù)據(jù)被放到多個不同的數(shù)據(jù)節(jié)點(diǎn)。文件被切割的大小和同時放置數(shù)據(jù)節(jié)點(diǎn)的數(shù)量(副本數(shù))是可配置的。

雖然 HDFS 是針對大文件設(shè)計的,但是也可以處理小文件。只不過對于小于切割單元的文件不進(jìn)行切割。另外,HDFS 對小文件也做了一些優(yōu)化,如 HAR 和SequenceFile 等方案,但 HDFS 終究不是特意為小文件設(shè)計的,因此在性能方面還有些欠缺。

除此之外,還有很多模仿 GFS 的開源分布式文件系統(tǒng),如 FastDFS、MooseFS和 BFS 等。但大多數(shù)開源項目只實(shí)現(xiàn)了文件系統(tǒng)最基本的語義,嚴(yán)格來說不能稱為分布式文件系統(tǒng),更像是對象存儲。

CephFS

有必要單獨(dú)介紹一下 CephFS 的原因是 CephFS 不僅實(shí)現(xiàn)了文件系統(tǒng)的所有語義,而且實(shí)現(xiàn)了元數(shù)據(jù)服務(wù)的多活橫向擴(kuò)展。

CephFS 的架構(gòu)與 GFS 的架構(gòu)沒有太大差別,其突出的特點(diǎn)是在架構(gòu)方面將GFS 的單活 master 節(jié)點(diǎn)擴(kuò)展為多活節(jié)點(diǎn)。不僅可以元數(shù)據(jù)多活,而且可以根據(jù)元數(shù)據(jù)節(jié)點(diǎn)的負(fù)載情況實(shí)現(xiàn)負(fù)載的動態(tài)均衡。這樣,CephFS 不僅可以通過增加節(jié)點(diǎn)來實(shí)現(xiàn)元數(shù)據(jù)的橫向擴(kuò)展,還可以調(diào)整節(jié)點(diǎn)負(fù)載,最大限度地使用各個節(jié)點(diǎn)的 CPU資源。

同時,CephFS 實(shí)現(xiàn)了對 POSIX 語言的兼容,在客戶端完成了內(nèi)核態(tài)和用戶態(tài)兩個文件系統(tǒng)實(shí)現(xiàn)。當(dāng)用戶掛載 CephFS 后,使用該文件系統(tǒng)可以與使用本地文件系統(tǒng)一樣方便。

GlusterFS

GlusterFS 是一個非常有歷史的分布式文件系統(tǒng),其最大的特點(diǎn)是沒有中心節(jié)點(diǎn)。也就是 GlusterFS 并沒有一個專門的元數(shù)據(jù)節(jié)點(diǎn)來管理整個文件系統(tǒng)的元數(shù)據(jù)。

GlusterFS 抽象出卷(Volume)的概念,需要注意的是,這里的卷與 Linux LVM中的卷并非同一個概念。這里的卷是對文件系統(tǒng)的一個抽象,表示一個文件系統(tǒng)實(shí)例。當(dāng)我們在集群端創(chuàng)建一個卷時,其實(shí)是創(chuàng)建了一個文件系統(tǒng)實(shí)例。

GlusterFS 有多種不同類型的卷,如副本卷、條帶卷和分布式卷等。正是通過這些卷特性的組合,GlusterFS 實(shí)現(xiàn)了數(shù)據(jù)可靠性和橫向擴(kuò)展的能力。

分享到:
標(biāo)簽:數(shù)據(jù)
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定