精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如果要設(shè)計(jì)個(gè)分布式文件系統(tǒng),該從哪些方面考慮?

存儲(chǔ) 存儲(chǔ)軟件 分布式
分布式文件系統(tǒng)是分布式領(lǐng)域的一個(gè)基礎(chǔ)應(yīng)用,其中最著名的毫無疑問是 HDFS/GFS。如今該領(lǐng)域已經(jīng)趨向于成熟,但了解它的設(shè)計(jì)要點(diǎn)和思想,對(duì)我們將來面臨類似場(chǎng)景 / 問題時(shí),具有借鑒意義。

 一、概述

分布式文件系統(tǒng)是分布式領(lǐng)域的一個(gè)基礎(chǔ)應(yīng)用,其中最著名的毫無疑問是 HDFS/GFS。如今該領(lǐng)域已經(jīng)趨向于成熟,但了解它的設(shè)計(jì)要點(diǎn)和思想,對(duì)我們將來面臨類似場(chǎng)景 / 問題時(shí),具有借鑒意義。并且,分布式文件系統(tǒng)并非只有 HDFS/GFS 這一種形態(tài),在它之外,還有其他形態(tài)各異、各有千秋的產(chǎn)品形態(tài),對(duì)它們的了解,也對(duì)擴(kuò)展我們的視野有所俾益。本文試圖分析和思考,在分布式文件系統(tǒng)領(lǐng)域,我們要解決哪些問題、有些什么樣的方案、以及各自的選擇依據(jù)。

[[242360]]

二、過去的樣子

在幾十年以前,分布式文件系統(tǒng)就已經(jīng)出現(xiàn)了,以 Sun 在 1984 年開發(fā)的“Network File System (NFS)”為代表,那時(shí)候解決的主要問題,是網(wǎng)絡(luò)形態(tài)的磁盤,把磁盤從主機(jī)中獨(dú)立出來。這樣不僅可以獲得更大的容量,而且還可以隨時(shí)切換主機(jī),還可以實(shí)現(xiàn)數(shù)據(jù)共享、備份、容災(zāi)等,因?yàn)閿?shù)據(jù)是電腦中最重要的資產(chǎn)。NFS 的數(shù)據(jù)通信圖如下。

如果要設(shè)計(jì)個(gè)分布式文件系統(tǒng),該從哪些方面考慮?

部署在主機(jī)上的客戶端,通過 TCP/IP 協(xié)議把文件命令轉(zhuǎn)發(fā)到遠(yuǎn)程文件 Server 上執(zhí)行,整個(gè)過程對(duì)主機(jī)用戶透明。

到了互聯(lián)網(wǎng)時(shí)代,流量和數(shù)據(jù)快速增長(zhǎng),分布式文件系統(tǒng)所要解決的主要場(chǎng)景變了,開始需要非常大的磁盤空間,這在磁盤體系上垂直擴(kuò)容是無法達(dá)到的,必須要分布式,同時(shí)分布式架構(gòu)下,主機(jī)都是可靠性不是非常好的普通服務(wù)器,因此容錯(cuò)、高可用、持久化、伸縮性等指標(biāo),就成為必須要考量的特性。

三、對(duì)分布式文件系統(tǒng)的要求

對(duì)一個(gè)分布式文件系統(tǒng)而言,有一些特性是必須要滿足的,否則就無法有競(jìng)爭(zhēng)力。主要如下:

  • 應(yīng)該符合 POSIX 的文件接口標(biāo)準(zhǔn),使該系統(tǒng)易于使用,同時(shí)對(duì)于用戶的遺留系統(tǒng)也無需改造;
  • 對(duì)用戶透明,能夠像使用本地文件系統(tǒng)那樣直接使用;
  • 持久化,保證數(shù)據(jù)不會(huì)丟失;
  • 具有伸縮性,當(dāng)數(shù)據(jù)壓力逐漸增長(zhǎng)時(shí)能順利擴(kuò)容;
  • 具有可靠的安全機(jī)制,保證數(shù)據(jù)安全;
  • 數(shù)據(jù)一致性,只要文件內(nèi)容不發(fā)生變化,什么時(shí)候去讀,得到的內(nèi)容應(yīng)該都是一樣的。

還有些特性,是加分項(xiàng):

  • 支持的空間越大越好;
  • 支持的并發(fā)訪問請(qǐng)求越多越好;
  • 性能越快越好;
  • 硬件資源的利用率越高越合理,就越好。

四、架構(gòu)模型

從業(yè)務(wù)模型和邏輯架構(gòu)上,分布式文件系統(tǒng)需要這幾類組件:

  • 存儲(chǔ)組件:負(fù)責(zé)存儲(chǔ)文件數(shù)據(jù),它要保證文件的持久化、副本間數(shù)據(jù)一致、數(shù)據(jù)塊的分配 / 合并等等;
  • 管理組件:負(fù)責(zé) meta 信息,即文件數(shù)據(jù)的元信息,包括文件存放在哪臺(tái)服務(wù)器上、文件大小、權(quán)限等,除此之外,還要負(fù)責(zé)對(duì)存儲(chǔ)組件的管理,包括存儲(chǔ)組件所在的服務(wù)器是否正常存活、是否需要數(shù)據(jù)遷移等;
  • 接口組件:提供接口服務(wù)給應(yīng)用使用,形態(tài)包括 SDK(Java/C/C++ 等)、CLI 命令行終端、以及支持 FUSE 掛載機(jī)制。

而在部署架構(gòu)上,有著“中心化”和“無中心化”兩種路線分歧,即是否把“管理組件”作為分布式文件系統(tǒng)的中心管理節(jié)點(diǎn)。兩種路線都有很優(yōu)秀的產(chǎn)品,下面分別介紹它們的區(qū)別。

有中心節(jié)點(diǎn)

以 GFS 為代表,中心節(jié)點(diǎn)負(fù)責(zé)文件定位、維護(hù)文件 meta 信息、故障檢測(cè)、數(shù)據(jù)遷移等管理控制的職能,下圖是 GFS 的架構(gòu)圖。

 

如果要設(shè)計(jì)個(gè)分布式文件系統(tǒng),該從哪些方面考慮?

該圖中 GFS master 即為 GFS 的中心節(jié)點(diǎn),GF chunkserver 為 GFS 的存儲(chǔ)節(jié)點(diǎn)。其操作路徑如下:

  • Client 向中心節(jié)點(diǎn)請(qǐng)求“查詢某個(gè)文件的某部分?jǐn)?shù)據(jù)”;
  • 中心節(jié)點(diǎn)返回文件所在的位置 (哪臺(tái) chunkserver 上的哪個(gè)文件) 以及字節(jié)區(qū)間信息;
  • Client 根據(jù)中心節(jié)點(diǎn)返回的信息,向?qū)?yīng)的 chunk server 直接發(fā)送數(shù)據(jù)讀取的請(qǐng)求;
  • chunk server 返回?cái)?shù)據(jù)。

在這種方案里,一般中心節(jié)點(diǎn)并不參與真正的數(shù)據(jù)讀寫,而是將文件 meta 信息返回給 Client 之后,即由 Client 與數(shù)據(jù)節(jié)點(diǎn)直接通信。其主要目的是降低中心節(jié)點(diǎn)的負(fù)載,防止其成為瓶頸。這種有中心節(jié)點(diǎn)的方案,在各種存儲(chǔ)類系統(tǒng)中得到了廣泛應(yīng)用,因?yàn)橹行墓?jié)點(diǎn)易控制、功能強(qiáng)大。

無中心節(jié)點(diǎn)

以 ceph 為代表,每個(gè)節(jié)點(diǎn)都是自治的、自管理的,整個(gè) ceph 集群只包含一類節(jié)點(diǎn),如下圖 (最下層紅色的 RADOS 就是 ceph 定義的“同時(shí)包含 meta 數(shù)據(jù)和文件數(shù)據(jù)”的節(jié)點(diǎn))。

 

如果要設(shè)計(jì)個(gè)分布式文件系統(tǒng),該從哪些方面考慮?

A [Ceph Node] leverages commodity hardware and intelligent daemons, and a [Ceph Storage Cluster] accommodates large numbers of nodes, which communicate with each other to replicate and redistribute data dynamically. Ceph provides an infinitely scalable [Ceph Storage Cluster] based upon RADOS

無中心化的最大優(yōu)點(diǎn)是解決了中心節(jié)點(diǎn)自身的瓶頸,這也就是 ceph 號(hào)稱可以無限向上擴(kuò)容的原因。但由 Client 直接和 Server 通信,那么 Client 必須要知道,當(dāng)對(duì)某個(gè)文件進(jìn)行操作時(shí),它該訪問集群中的哪個(gè)節(jié)點(diǎn)。ceph 提供了一個(gè)很強(qiáng)大的原創(chuàng)算法來解決這個(gè)問題——CRUSH 算法。這個(gè)算法挺復(fù)雜的,有興趣的可以看看 @crush paper [1](要翻墻才能打開)

五、持久化

對(duì)于文件系統(tǒng)來說,持久化是根本,只要 Client 收到了 Server 保存成功的回應(yīng)之后,數(shù)據(jù)就不應(yīng)該丟失。這主要是通過多副本的方式來解決,但在分布式環(huán)境下,多副本有這幾個(gè)問題要面對(duì)。

  • 如何保證每個(gè)副本的數(shù)據(jù)是一致的?
  • 如何分散副本,以使災(zāi)難發(fā)生時(shí),不至于所有副本都被損壞?
  • 怎么檢測(cè)被損壞或數(shù)據(jù)過期的副本,以及如何處理?
  • 該返回哪個(gè)副本給 Client?

如何保證每個(gè)副本的數(shù)據(jù)是一致的

同步寫入是保證副本數(shù)據(jù)一致的最直接的辦法。當(dāng) Client 寫入一個(gè)文件的時(shí)候,Server 會(huì)等待所有副本都被成功寫入,再返回給 Client。

這種方式簡(jiǎn)單、有保障,唯一的缺陷就是性能會(huì)受到影響。假設(shè)有 3 個(gè)副本,如果每個(gè)副本需要 N 秒,則可能會(huì)阻塞 Client 3N 秒的時(shí)間,有幾種方式,可以對(duì)其進(jìn)行優(yōu)化:

  • 并行寫:由一個(gè)副本作為主副本,并行發(fā)送數(shù)據(jù)給其他副本;
  • 鏈?zhǔn)綄懀簬讉€(gè)副本組成一個(gè)鏈 (chain),并不是等內(nèi)容都接受到了再往后傳播,而是像流一樣,邊接收上游傳遞過來的數(shù)據(jù),一邊傳遞給下游。

還有一種方式是采用 CAP 中所說的 W+R>N 的方式,比如 3 副本 (N=3) 的情況,W=2,R=2,即成功寫入 2 個(gè)就認(rèn)為成功,讀的時(shí)候也要從 2 個(gè)副本中讀。這種方式通過犧牲一定的讀成本,來降低寫成本,同時(shí)增加寫入的可用性。這種方式在分布式文件系統(tǒng)中用地比較少。

如何分散副本,以使災(zāi)難發(fā)生時(shí),不至于所有副本都被損壞

這主要避免的是某機(jī)房或某城市發(fā)生自然環(huán)境故障的情況,所以有一個(gè)副本應(yīng)該分配地比較遠(yuǎn)。它的副作用是會(huì)帶來這個(gè)副本的寫入性能可能會(huì)有一定的下降,因?yàn)樗x Client 最遠(yuǎn)。所以如果在物理?xiàng)l件上無法保證夠用的網(wǎng)絡(luò)帶寬的話,則讀寫副本的策略上需要做一定考慮。可以參考同步寫入只寫 2 副本、較遠(yuǎn)副本異步寫入的方式,同時(shí)為了保證一致性,讀取的時(shí)候又要注意一些,避免讀取到異步寫入副本的過時(shí)數(shù)據(jù)。

怎么檢測(cè)被損壞或數(shù)據(jù)過期的副本,以及如何處理

如果有中心節(jié)點(diǎn),則數(shù)據(jù)節(jié)點(diǎn)定期和中心節(jié)點(diǎn)進(jìn)行通信,匯報(bào)自己的數(shù)據(jù)塊的相關(guān)信息,中心節(jié)點(diǎn)將其與自己維護(hù)的信息進(jìn)行對(duì)比。如果某個(gè)數(shù)據(jù)塊的 checksum 不對(duì),則表明該數(shù)據(jù)塊被損壞了;如果某個(gè)數(shù)據(jù)塊的 version 不對(duì),則表明該數(shù)據(jù)塊過期了。

如果沒有中心節(jié)點(diǎn),以 ceph 為例,它在自己的節(jié)點(diǎn)集群中維護(hù)了一個(gè)比較小的 monitor 集群,數(shù)據(jù)節(jié)點(diǎn)向這個(gè) monitor 集群匯報(bào)自己的情況,由其來判定是否被損壞或過期。

當(dāng)發(fā)現(xiàn)被損壞或過期副本,將它從 meta 信息中移除,再重新創(chuàng)建一份新的副本就好了,移除的副本在隨后的回收機(jī)制中會(huì)被收回。

該返回哪個(gè)副本給 Client

這里的策略就比較多了,比如 round-robin、速度最快的節(jié)點(diǎn)、成功率最高的節(jié)點(diǎn)、CPU 資源最空閑的節(jié)點(diǎn)、甚至就固定選第一個(gè)作為主節(jié)點(diǎn),也可以選擇離自己最近的一個(gè),這樣對(duì)整體的操作完成時(shí)間會(huì)有一定節(jié)約。

六、伸縮性

存儲(chǔ)節(jié)點(diǎn)的伸縮

當(dāng)在集群中加入一臺(tái)新的存儲(chǔ)節(jié)點(diǎn),則它主動(dòng)向中心節(jié)點(diǎn)注冊(cè),提供自己的信息,當(dāng)后續(xù)有創(chuàng)建文件或者給已有文件增加數(shù)據(jù)塊的時(shí)候,中心節(jié)點(diǎn)就可以分配到這臺(tái)新節(jié)點(diǎn)了,比較簡(jiǎn)單。但有一些問題需要考慮。

  • 如何盡量使各存儲(chǔ)節(jié)點(diǎn)的負(fù)載相對(duì)均衡?
  • 怎樣保證新加入的節(jié)點(diǎn),不會(huì)因短期負(fù)載壓力過大而崩塌?
  • 如果需要數(shù)據(jù)遷移,那如何使其對(duì)業(yè)務(wù)層透明?

如何盡量使各存儲(chǔ)節(jié)點(diǎn)的負(fù)載相對(duì)均衡

首先要有評(píng)價(jià)存儲(chǔ)節(jié)點(diǎn)負(fù)載的指標(biāo)。有多種方式,可以從磁盤空間使用率考慮,也可以從磁盤使用率 +CPU 使用情況 + 網(wǎng)絡(luò)流量情況等做綜合判斷。一般來說,磁盤使用率是核心指標(biāo)。

其次在分配新空間的時(shí)候,優(yōu)先選擇資源使用率小的存儲(chǔ)節(jié)點(diǎn);而對(duì)已存在的存儲(chǔ)節(jié)點(diǎn),如果負(fù)載已經(jīng)過載、或者資源使用情況不均衡,則需要做數(shù)據(jù)遷移。

怎樣保證新加入的節(jié)點(diǎn),不會(huì)因短期負(fù)載壓力過大而崩塌

當(dāng)系統(tǒng)發(fā)現(xiàn)當(dāng)前新加入了一臺(tái)存儲(chǔ)節(jié)點(diǎn),顯然它的資源使用率是最低的,那么所有的寫流量都路由到這臺(tái)存儲(chǔ)節(jié)點(diǎn)來,那就可能造成這臺(tái)新節(jié)點(diǎn)短期負(fù)載過大。因此,在資源分配的時(shí)候,需要有預(yù)熱時(shí)間,在一個(gè)時(shí)間段內(nèi),緩慢地將寫壓力路由過來,直到達(dá)成新的均衡。

如果需要數(shù)據(jù)遷移,那如何使其對(duì)業(yè)務(wù)層透明?

在有中心節(jié)點(diǎn)的情況下,這個(gè)工作比較好做,中心節(jié)點(diǎn)就包辦了——判斷哪臺(tái)存儲(chǔ)節(jié)點(diǎn)壓力較大,判斷把哪些文件遷移到何處,更新自己的 meta 信息,遷移過程中的寫入怎么辦,發(fā)生重命名怎么辦。無需上層應(yīng)用來處理。

如果沒有中心節(jié)點(diǎn),那代價(jià)比較大,在系統(tǒng)的整體設(shè)計(jì)上,也是要考慮到這種情況,比如 ceph,它要采取邏輯位置和物理位置兩層結(jié)構(gòu),對(duì) Client 暴露的是邏輯層 (pool 和 place group),這個(gè)在遷移過程中是不變的,而下層物理層數(shù)據(jù)塊的移動(dòng),只是邏輯層所引用的物理塊的地址發(fā)生了變化,在 Client 看來,邏輯塊的位置并不會(huì)發(fā)生改變。

中心節(jié)點(diǎn)的伸縮

如果有中心節(jié)點(diǎn),還要考慮它的伸縮性。由于中心節(jié)點(diǎn)作為控制中心,是主從模式,那么在伸縮性上就受到比較大的限制,是有上限的,不能超過單臺(tái)物理機(jī)的規(guī)模。我們可以考慮各種手段,盡量地抬高這個(gè)上限。有幾種方式可以考慮:

  • 以大數(shù)據(jù)塊的形式來存儲(chǔ)文件——比如 HDFS 的數(shù)據(jù)塊的大小是 64M,ceph 的的數(shù)據(jù)塊的大小是 4M,都遠(yuǎn)遠(yuǎn)超過單機(jī)文件系統(tǒng)的 4k。它的意義在于大幅減少 meta data 的數(shù)量,使中心節(jié)點(diǎn)的單機(jī)內(nèi)存就能夠支持足夠多的磁盤空間 meta 信息;
  • 中心節(jié)點(diǎn)采取多級(jí)的方式——頂級(jí)中心節(jié)點(diǎn)只存儲(chǔ)目錄的 meta data,其指定某目錄的文件去哪臺(tái)次級(jí)總控節(jié)點(diǎn)去找,然后再通過該次級(jí)總控節(jié)點(diǎn)找到文件真正的存儲(chǔ)節(jié)點(diǎn);
  • 中心節(jié)點(diǎn)共享存儲(chǔ)設(shè)備——部署多臺(tái)中心節(jié)點(diǎn),但它們共享同一個(gè)存儲(chǔ)外設(shè) / 數(shù)據(jù)庫(kù),meta 信息都放在這里,中心節(jié)點(diǎn)自身是無狀態(tài)的。這種模式下,中心節(jié)點(diǎn)的請(qǐng)求處理能力大為增強(qiáng),但性能會(huì)受一定影響。iRODS 就是采用這種方式。

七、高可用性

中心節(jié)點(diǎn)的高可用

中心節(jié)點(diǎn)的高可用,不僅要保證自身應(yīng)用的高可用,還得保證 meta data 的數(shù)據(jù)高可用。

meta data 的高可用主要是數(shù)據(jù)持久化,并且需要備份機(jī)制保證不丟。一般方法是增加一個(gè)從節(jié)點(diǎn),主節(jié)點(diǎn)的數(shù)據(jù)實(shí)時(shí)同步到從節(jié)點(diǎn)上。也有采用共享磁盤,通過 raid1 的硬件資源來保障高可用。顯然增加從節(jié)點(diǎn)的主備方式更易于部署。

meta data 的數(shù)據(jù)持久化策略有以下幾種方式。

  • 直接保存到存儲(chǔ)引擎上,一般是數(shù)據(jù)庫(kù)。直接以文件形式保存到磁盤上,也不是不可以,但因?yàn)?meta 信息是結(jié)構(gòu)化數(shù)據(jù),這樣相當(dāng)于自己研發(fā)出一套小型數(shù)據(jù)庫(kù)來,復(fù)雜化了。
  • 保存日志數(shù)據(jù)到磁盤文件 (類似 MySQL 的 binlog 或 Redis 的 aof),系統(tǒng)啟動(dòng)時(shí)在內(nèi)存中重建成結(jié)果數(shù)據(jù),提供服務(wù)。修改時(shí)先修改磁盤日志文件,然后更新內(nèi)存數(shù)據(jù)。這種方式簡(jiǎn)單易用。

當(dāng)前內(nèi)存服務(wù) + 日志文件持久化是主流方式。一是純內(nèi)存操作,效率很高,日志文件的寫也是順序?qū)懀欢遣灰蕾囃獠拷M件,獨(dú)立部署。

為了解決日志文件會(huì)隨著時(shí)間增長(zhǎng)越來越大的問題,以讓系統(tǒng)能以盡快啟動(dòng)和恢復(fù),需要輔助以內(nèi)存快照的方式——定期將內(nèi)存 dump 保存,只保留在 dump 時(shí)刻之后的日志文件。這樣當(dāng)恢復(fù)時(shí),從最新一次的內(nèi)存 dump 文件開始,找其對(duì)應(yīng)的 checkpoint 之后的日志文件開始重播。

存儲(chǔ)節(jié)點(diǎn)的高可用

在前面“持久化”章節(jié),在保證數(shù)據(jù)副本不丟失的情況下,也就保證了其的高可用性。

八、性能優(yōu)化和緩存一致性

這些年隨著基礎(chǔ)設(shè)施的發(fā)展,局域網(wǎng)內(nèi)千兆甚至萬兆的帶寬已經(jīng)比較普遍,以萬兆計(jì)算,每秒傳輸大約 1250M 字節(jié)的數(shù)據(jù),而 SATA 磁盤的讀寫速度這些年基本達(dá)到瓶頸,在 300-500M/s 附近,也就是純讀寫的話,網(wǎng)絡(luò)已經(jīng)超過了磁盤的能力,不再是瓶頸了,像 NAS 網(wǎng)絡(luò)磁盤這些年也開始普及起來。

但這并不代表,沒有必要對(duì)讀寫進(jìn)行優(yōu)化,畢竟網(wǎng)絡(luò)讀寫的速度還是遠(yuǎn)慢于內(nèi)存的讀寫。常見的優(yōu)化方法主要有:

  • 內(nèi)存中緩存文件內(nèi)容;
  • 預(yù)加載數(shù)據(jù)塊,以避免客戶端等待;
  • 合并讀寫請(qǐng)求,也就是將單次請(qǐng)求做些積累,以批量方式發(fā)送給 Server 端。

緩存的使用在提高讀寫性能的同時(shí),也會(huì)帶來數(shù)據(jù)不一致的問題:

  • 會(huì)出現(xiàn)更新丟失的現(xiàn)象。當(dāng)多個(gè) Client 在一個(gè)時(shí)間段內(nèi),先后寫入同一個(gè)文件時(shí),先寫入的 Client 可能會(huì)丟失其寫入內(nèi)容,因?yàn)榭赡軙?huì)被后寫入的 Client 的內(nèi)容覆蓋掉;
  • 數(shù)據(jù)可見性問題。Client 讀取的是自己的緩存,在其過期之前,如果別的 Client 更新了文件內(nèi)容,它是看不到的;也就是說,在同一時(shí)間,不同 Client 讀取同一個(gè)文件,內(nèi)容可能不一致。

這類問題有幾種方法:

  • 文件只讀不改:一旦文件被 create 了,就只能讀不能修改。這樣 Client 端的緩存,就不存在不一致的問題;
  • 通過鎖:用鎖的話還要考慮不同的粒度。寫的時(shí)候是否允許其他 Client 讀? 讀的時(shí)候是否允許其他 Client 寫? 這是在性能和一致性之間的權(quán)衡,作為文件系統(tǒng)來說,由于對(duì)業(yè)務(wù)并沒有約束性,所以要做出合理的權(quán)衡,比較困難,因此最好是提供不同粒度的鎖,由業(yè)務(wù)端來選擇。但這樣的副作用是,業(yè)務(wù)端的使用成本抬高了。

九、安全性

由于分布式文件存儲(chǔ)系統(tǒng),肯定是一個(gè)多客戶端使用、多租戶的一個(gè)產(chǎn)品,而它又存儲(chǔ)了可能是很重要的信息,所以安全性是它的重要部分。

主流文件系統(tǒng)的權(quán)限模型有以下這么幾種。

  • DAC: 全稱是 Discretionary Access Control,就是我們熟悉的 Unix 類權(quán)限框架,以 user-group-privilege 為三級(jí)體系,其中 user 就是 owner,group 包括 owner 所在 group 和非 owner 所在的 group、privilege 有 read、write 和 execute。這套體系主要是以 owner 為出發(fā)點(diǎn),owner 允許誰對(duì)哪些文件具有什么樣的權(quán)限。
  • MAC: 全稱是 Mandatory Access Control,它是從資源的機(jī)密程度來劃分。比如分為“普通”、“機(jī)密”、“絕密”這三層,每個(gè)用戶可能對(duì)應(yīng)不同的機(jī)密閱讀權(quán)限。這種權(quán)限體系起源于安全機(jī)構(gòu)或軍隊(duì)的系統(tǒng)中,會(huì)比較常見。它的權(quán)限是由管理員來控制和設(shè)定的。Linux 中的 SELinux 就是 MAC 的一種實(shí)現(xiàn),為了彌補(bǔ) DAC 的缺陷和安全風(fēng)險(xiǎn)而提供出來。關(guān)于 SELinux 所解決的問題可以參考 What is SELinux?
  • RBAC: 全稱是 Role Based Access Control,是基于角色 (role) 建立的權(quán)限體系。角色擁有什么樣的資源權(quán)限,用戶歸到哪個(gè)角色,這對(duì)應(yīng)企業(yè) / 公司的組織機(jī)構(gòu)非常合適。RBAC 也可以具體化,就演變成 DAC 或 MAC 的權(quán)限模型。

市面上的分布式文件系統(tǒng)有不同的選擇,像 ceph 就提供了類似 DAC 但又略有區(qū)別的權(quán)限體系,Hadoop 自身就是依賴于操作系統(tǒng)的權(quán)限框架,同時(shí)其生態(tài)圈內(nèi)有 Apache Sentry 提供了基于 RBAC 的權(quán)限體系來做補(bǔ)充。

十、其他

空間分配

有連續(xù)空間和鏈表空間兩種。連續(xù)空間的優(yōu)勢(shì)是讀寫快,按順序即可,劣勢(shì)是造成磁盤碎片,更麻煩的是,隨著連續(xù)的大塊磁盤空間被分配滿而必須尋找空洞時(shí),連續(xù)分配需要提前知道待寫入文件的大小,以便找到合適大小的空間,而待寫入文件的大小,往往又是無法提前知道的 (比如可編輯的 word 文檔,它的內(nèi)容可以隨時(shí)增大);

而鏈表空間的優(yōu)勢(shì)是磁盤碎片很少,劣勢(shì)是讀寫很慢,尤其是隨機(jī)讀,要從鏈表首個(gè)文件塊一個(gè)一個(gè)地往下找。為了解決這個(gè)問題,出現(xiàn)了索引表——把文件和數(shù)據(jù)塊的對(duì)應(yīng)關(guān)系也保存一份,存在索引節(jié)點(diǎn)中 (一般稱為 i 節(jié)點(diǎn)),操作系統(tǒng)會(huì)將 i 節(jié)點(diǎn)加載到內(nèi)存,從而程序隨機(jī)尋找數(shù)據(jù)塊時(shí),在內(nèi)存中就可以完成了。通過這種方式來解決磁盤鏈表的劣勢(shì),如果索引節(jié)點(diǎn)的內(nèi)容太大,導(dǎo)致內(nèi)存無法加載,還有可能形成多級(jí)索引結(jié)構(gòu)。

文件刪除

實(shí)時(shí)刪除還是延時(shí)刪除? 實(shí)時(shí)刪除的優(yōu)勢(shì)是可以快速釋放磁盤空間;延時(shí)刪除只是在刪除動(dòng)作執(zhí)行的時(shí)候,置個(gè)標(biāo)識(shí)位,后續(xù)在某個(gè)時(shí)間點(diǎn)再來批量刪除,它的優(yōu)勢(shì)是文件仍然可以階段性地保留,最大程度地避免了誤刪除,缺點(diǎn)是磁盤空間仍然被占著。在分布式文件系統(tǒng)中,磁盤空間都是比較充裕的資源,因此幾乎都采用邏輯刪除,以對(duì)數(shù)據(jù)可以進(jìn)行恢復(fù),同時(shí)在一段時(shí)間之后 (可能是 2 天或 3 天,這參數(shù)一般都可配置),再對(duì)被刪除的資源進(jìn)行回收。

怎么回收被刪除或無用的數(shù)據(jù)? 可以從文件的 meta 信息出發(fā)——如果 meta 信息的“文件 - 數(shù)據(jù)塊”映射表中包含了某個(gè)數(shù)據(jù)塊,則它就是有用的;如果不包含,則表明該數(shù)據(jù)塊已經(jīng)是無效的了。所以,刪除文件,其實(shí)是刪除 meta 中的“文件 - 數(shù)據(jù)塊”映射信息 (如果要保留一段時(shí)間,則是把這映射信息移到另外一個(gè)地方去)。

面向小文件的分布式文件系統(tǒng)

有很多這樣的場(chǎng)景,比如電商——那么多的商品圖片、個(gè)人頭像,比如社交網(wǎng)站——那么多的照片,它們具有的特性,可以簡(jiǎn)單歸納下:

  • 每個(gè)文件都不大;
  • 數(shù)量特別巨大;
  • 讀多寫少;
  • 不會(huì)修改。

針對(duì)這種業(yè)務(wù)場(chǎng)景,主流的實(shí)現(xiàn)方式是仍然是以大數(shù)據(jù)塊的形式存儲(chǔ),小文件以邏輯存儲(chǔ)的方式存在,即文件 meta 信息記錄其是在哪個(gè)大數(shù)據(jù)塊上,以及在該數(shù)據(jù)塊上的 offset 和 length 是多少,形成一個(gè)邏輯上的獨(dú)立文件。這樣既復(fù)用了大數(shù)據(jù)塊系統(tǒng)的優(yōu)勢(shì)和技術(shù)積累,又減少了 meta 信息。

文件指紋和去重

文件指紋就是根據(jù)文件內(nèi)容,經(jīng)過算法,計(jì)算出文件的唯一標(biāo)識(shí)。如果兩個(gè)文件的指紋相同,則文件內(nèi)容相同。在使用網(wǎng)絡(luò)云盤的時(shí)候,發(fā)現(xiàn)有時(shí)候上傳文件非常地快,就是文件指紋發(fā)揮作用。云盤服務(wù)商通過判斷該文件的指紋,發(fā)現(xiàn)之前已經(jīng)有人上傳過了,則不需要真的上傳該文件,只要增加一個(gè)引用即可。在文件系統(tǒng)中,通過文件指紋可以用來去重、也可以用來判斷文件內(nèi)容是否損壞、或者對(duì)比文件副本內(nèi)容是否一致,是一個(gè)基礎(chǔ)組件。

文件指紋的算法也比較多,有熟悉的 md5、sha256、也有 google 專門針對(duì)文本領(lǐng)域的 simhash 和 minhash 等。

十一、總結(jié)

分布式文件系統(tǒng)內(nèi)容龐雜,要考慮的問題遠(yuǎn)不止上面所說的這些,其具體實(shí)現(xiàn)也更為復(fù)雜。本文只是盡量從分布式文件系統(tǒng)所要考慮的問題出發(fā),給予一個(gè)簡(jiǎn)要的分析和設(shè)計(jì),如果將來遇到類似的場(chǎng)景需要解決,可以想到“有這種解決方案”,然后再來深入研究。

同時(shí),市面上也是存在多種分布式文件系統(tǒng)的形態(tài),下面就是有研究小組曾經(jīng)對(duì)常見的幾種分布式文件系統(tǒng)的設(shè)計(jì)比較。

幾種分布式文件系統(tǒng)的比較

 

從這里也可以看到,選擇其實(shí)很多,并不是 GFS 論文中的方式就是最好的。在不同的業(yè)務(wù)場(chǎng)景中,也可以有更多的選擇策略。

文中相關(guān)鏈接如下:

[1]https://ceph.com/wp-content/uploads/2016/08/weil-crush-sc06.pdf

作者介紹

張軻是杭州 TGO 分會(huì)的會(huì)員,目前任職于杭州大樹網(wǎng)絡(luò)技術(shù)有限公司,擔(dān)任首席架構(gòu)師,負(fù)責(zé)系統(tǒng)整體業(yè)務(wù)架構(gòu)以及基礎(chǔ)架構(gòu),熟悉微服務(wù)、分布式設(shè)計(jì)、中間件領(lǐng)域,對(duì)運(yùn)維、測(cè)試、敏捷開發(fā)等相關(guān)領(lǐng)域也有所涉獵。

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2013-01-07 10:29:31

大數(shù)據(jù)

2010-11-01 05:50:46

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

2013-06-18 14:33:13

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

2018-07-06 09:16:22

HadoopRAID文件系統(tǒng)

2022-05-06 19:32:38

物聯(lián)網(wǎng)數(shù)字孿生

2016-09-14 23:51:23

2017-10-17 08:33:31

存儲(chǔ)系統(tǒng)分布式

2010-11-15 13:24:07

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

2012-08-31 16:04:11

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

2013-06-18 14:00:59

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

2012-09-19 15:05:24

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

2010-06-04 18:45:43

Hadoop分布式文件

2012-09-19 13:43:13

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

2013-05-27 14:46:06

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

2013-06-18 14:13:43

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

2011-07-15 17:48:27

Platform

2011-03-16 14:23:38

分布式文件

2012-10-09 16:43:47

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

2012-05-10 14:04:07

分布式文件系統(tǒng)架構(gòu)

2023-05-05 08:16:56

SeaweedFS分布式文件
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

欧美成人福利| 在线视频1区2区| 亚洲精品女人| 国产一区二区三区直播精品电影| 亚洲欧美视频二区| 日本在线视频网址| 久久精品一区二区三区不卡 | 久久国产精品一区二区三区四区| 激情视频网站在线观看| 校花撩起jk露出白色内裤国产精品| 欧美在线你懂得| 日韩精品一区二区在线视频| 国产专区在线播放| 国产成人在线视频播放| 国产v综合v亚洲欧美久久| 欧美特黄一级片| 天天做夜夜做人人爱精品| 欧美日韩国产bt| 波多野结衣家庭教师在线播放| 在线观看国产原创自拍视频| 成人h动漫精品一区二| 国产精品一区久久久| 日本道在线观看| 欧美成人69av| 中文字幕日韩欧美在线| 污污内射在线观看一区二区少妇| 亚洲国产一区二区久久| 色综合天天综合在线视频| 日韩专区第三页| 日本最新在线视频| 久久久国产综合精品女国产盗摄| 成人综合色站| aaa一区二区三区| 蜜桃在线一区二区三区| 日本久久久久久| 福利一区二区三区四区| 欧美久久综合| 久久成人精品电影| 日本视频在线免费| 精品国产美女| 亚洲欧洲日本专区| 人人妻人人澡人人爽人人精品| 免费精品一区| 555夜色666亚洲国产免| 亚洲欧美偷拍另类| 国产69精品久久| 欧美吻胸吃奶大尺度电影| 日本wwww视频| 制服丝袜专区在线| 精品久久久久久久久久ntr影视| www国产无套内射com| 国产秀色在线www免费观看| 中文字幕av在线一区二区三区| 欧美日韩亚洲一区二区三区在线观看 | 亚洲一区二区三区毛片| 一区二区三区亚洲视频| 久久国产剧场电影| 91精品国产自产在线观看永久| 中文字幕激情视频| 免费的成人av| 成人h片在线播放免费网站| jizz国产在线| 久久99热这里只有精品| 91精品国产综合久久香蕉| 在线观看国产小视频| 免费在线观看精品| 成人精品久久久| 国产绳艺sm调教室论坛| 国产激情视频一区二区三区欧美| 999视频在线观看| 亚洲第一成人av| 成人黄色小视频在线观看| 国产精品一区二区三区免费| 天堂中文网在线| 久久精品夜色噜噜亚洲a∨| 色视频一区二区三区| av免费在线一区二区三区| 国产欧美一区二区精品久导航| 日韩中文字幕一区二区| 日本在线www| 一区二区不卡在线视频 午夜欧美不卡在 | 97精品视频| 久久久av一区| 激情五月婷婷在线| 国产日韩一区二区三区在线| 国产精品91免费在线| 一级片一区二区三区| 国产福利一区二区| 美日韩精品免费| 网友自拍视频在线| 亚洲国产精品久久久久婷婷884| 成人中文字幕在线播放| 欧美影视资讯| 欧美一级专区免费大片| 人妻体内射精一区二区三区| 亚洲宅男网av| 操日韩av在线电影| 国产一级精品视频| 麻豆一区二区三| 国产精品v欧美精品v日韩精品 | 国产美女亚洲精品7777| 337p日本欧洲亚洲大胆色噜噜| 少妇按摩一区二区三区| 国产精品久久久久蜜臀| 97在线视频一区| 国产精品久久综合青草亚洲AV| 成人免费视频播放| 杨幂一区欧美专区| 欧美办公室脚交xxxx| 在线播放中文一区| 日本aaa视频| 中文字幕亚洲综合久久五月天色无吗''| 91精品国产99| 国产女人18毛片水真多| 久久综合色综合88| 人人妻人人澡人人爽欧美一区双| 欧美日韩不卡| 亚洲精美色品网站| 欧美卡一卡二卡三| 日韩不卡一二三区| 久久伊人一区二区| 欧洲一区二区三区| 欧美日韩激情在线| 亚洲狠狠婷婷综合久久久久图片| 午夜精品久久99蜜桃的功能介绍| 国产精品三级久久久久久电影| 色噜噜在线播放| 自拍视频在线观看一区二区| 日本女优爱爱视频| 青青草久久爱| 98精品国产自产在线观看| a级片在线视频| 中文字幕在线一区二区三区| 成人一级片网站| 欧美男男freegayvideosroom| 久久91亚洲人成电影网站| 国产精品久久久久久久成人午夜| 国产午夜亚洲精品不卡| 久久国产乱子伦免费精品| 国内视频在线精品| 欧美激情视频网站| 亚洲av综合色区无码一区爱av | 综合网五月天| 免费污视频在线一区| 亚洲人成网站免费播放| 日韩特级黄色片| 99re8在线精品视频免费播放| 激情五月婷婷六月| 中文字幕亚洲在线观看| 九九热最新视频//这里只有精品| 国产精品热久久| 亚洲欧洲精品成人久久奇米网| 久热精品在线播放| 日韩不卡一区| 91香蕉亚洲精品| 国产区在线观看| 欧美一区二区三区在线观看| 一级黄色片日本| 国产在线精品一区二区三区不卡| 异国色恋浪漫潭| 国产电影一区二区| 久久成年人视频| 亚洲免费国产视频| 亚洲韩国精品一区| 免费中文字幕av| 久久成人在线| 亚洲欧美日产图| 亚洲一区二区av| 欧美老少配视频| 天天操天天干天天| 一本久道久久综合中文字幕| 谁有免费的黄色网址| 免费在线视频一区| 日本老太婆做爰视频| 伊人www22综合色| 97在线观看免费| 国产玉足榨精视频在线观看| 欧美日韩一区三区| 久久久久香蕉视频| jizz一区二区三区| 欧美本精品男人aⅴ天堂| 欧美激情精品久久| 波多野结衣中文字幕一区 | 中文字幕国产专区| 日本视频一区二区| 91视频成人免费| 一区二区三区四区高清视频| 97在线看福利| 春暖花开成人亚洲区| 91精选在线观看| 欧美日韩精品区| 国产精品五月天| av免费观看不卡| 日韩av中文字幕一区二区三区| 在线不卡日本| 国产厕拍一区| 国产精品美女主播| 欧美草逼视频| 亚洲天堂2020| 后进极品白嫩翘臀在线视频| 欧美性猛交xxxx久久久| 国产色无码精品视频国产| 99免费精品在线| 欧美一级一级性生活免费录像| 亚洲AV成人无码精电影在线| 国产福利电影一区二区三区| 国产欧美在线一区| 欧美在线1区| 三级三级久久三级久久18| 911亚洲精品| 国产精品色悠悠| a√中文在线观看| 日韩综合中文字幕| 天天躁日日躁狠狠躁喷水| 欧美精品99久久久**| 国产精品国产三级国产专区52| 亚洲婷婷国产精品电影人久久| 一起草在线视频| 国产一区二区在线观看视频| 久久无码高潮喷水| 黄色日韩在线| 男女爱爱视频网站| 奇米影视亚洲| 欧美精品免费观看二区| 91精品啪在线观看国产手机| 国产一区视频在线播放| 日本精品在线一区| 国产精品va在线播放我和闺蜜| 9765激情中文在线| 欧美精品第一页在线播放| 激情在线小视频| 中日韩美女免费视频网站在线观看| 天堂在线视频免费| 精品福利二区三区| 国产黄a三级三级看三级| 欧美日韩www| 中文字幕+乱码+中文字幕明步| 精品福利在线视频| www.av视频在线观看| 亚洲一线二线三线视频| 91视频免费在线看| 一区二区三区日韩精品| 超碰手机在线观看| 亚洲免费视频成人| 手机在线免费看片| 亚洲女性喷水在线观看一区| 免费在线观看黄色小视频| 国产精品国产三级国产有无不卡 | 精品人妻一区二区三区蜜桃 | 日本精品一区二区在线观看| 日韩欧美国产1| 精品人妻无码一区二区| 日韩午夜三级在线| www男人的天堂| 欧美xingq一区二区| 成人毛片在线免费观看| 精品久久久久99| 天堂在线视频免费观看| 亚洲精品一区二区网址| 免费在线黄色网址| 国产亚洲福利一区| 自拍视频在线免费观看| 久久成人这里只有精品| 青草视频在线免费直播| 国内精品伊人久久| 超碰一区二区| 国产精品永久在线| 亚洲国产aⅴ精品一区二区| 高清视频一区二区三区| 日本一道高清一区二区三区| 免费日韩电影在线观看| 欧美一区二区三| 男人的天堂成人| 亚洲午夜91| 欧美 日韩精品| 老司机午夜精品| 激情小说欧美色图| 26uuu国产一区二区三区| 中文字幕欧美激情极品| 亚洲人妖av一区二区| 国产乡下妇女做爰| 欧美三区在线观看| 亚洲成人精品女人久久久| 日韩激情视频在线| 超碰97在线免费观看| 九九九久久久久久| 成人小电影网站| 91久久久久久久久久| 国内毛片久久| 一区二区精品国产| 亚洲巨乳在线| 少妇一级淫免费播放| 成人性色生活片| 极品蜜桃臀肥臀-x88av| 亚洲一区二区三区四区的| 国产性生活视频| 欧美一区二区久久| 欧洲天堂在线观看| 欧美成人激情视频免费观看| 悠悠资源网亚洲青| 亚洲综合在线做性| 国产乱码精品一区二区三区四区| 三年中国中文在线观看免费播放| 国产亚洲精品bv在线观看| 亚洲欧美偷拍另类| 久久无码av三级| 久久精品视频免费在线观看| 色88888久久久久久影院野外| 超碰在线人人干| 视频直播国产精品| 欧美成人黑人| 国产伦理久久久| 久久久久久久久久久9不雅视频 | 亚洲午夜精品福利| 国产亚洲永久域名| 日本少妇xxx| 国产精品久久久一区麻豆最新章节| 影音先锋亚洲天堂| 日韩午夜激情av| 国产精品嫩草影院8vv8| 国产久卡久卡久卡久卡视频精品| 实拍女处破www免费看| 亚洲国产wwwccc36天堂| 92久久精品一区二区| 亚洲深夜福利在线| 老司机深夜福利在线观看| **亚洲第一综合导航网站| 日本学生初尝黑人巨免费视频| 色香蕉久久蜜桃| 天堂中文资源在线观看| 欧美激情精品久久久久久黑人| 69堂免费精品视频在线播放| 久久精品99| 99精品视频免费| 香港三日本8a三级少妇三级99| 伊人一区二区三区| 国产偷拍一区二区| 久久综合网hezyo| 免费成人高清在线视频| 日韩高清av| 日韩av高清在线观看| 一级黄色片大全| 黑人巨大精品欧美一区二区三区| 成人毛片视频免费看| 欧美激情中文字幕乱码免费| 欧美a在线观看| 国产内射老熟女aaaa| 国产精品69毛片高清亚洲| 欧美视频www| 91精品国产一区二区人妖| 高清全集视频免费在线| 91久久久久久久久久久久久| 外国成人激情视频| 国产5g成人5g天天爽| 亚洲欧美电影一区二区| 性生活黄色大片| 国内成人精品一区| 欧美一区自拍| 日本三级免费观看| 国产日韩欧美精品一区| 亚洲天堂手机在线| 久久精品美女视频网站| 日韩视频在线直播| 国产一二三在线视频| 99久久综合色| 久久久久久亚洲av无码专区| 影音先锋日韩有码| 91丨精品丨国产| av网站大全免费| 久久综合色综合88| 一级做a爱片久久毛片| 欧美精品手机在线| 偷拍亚洲精品| 最新中文字幕2018| 亚洲女人****多毛耸耸8| 亚洲AV午夜精品| 国产脚交av在线一区二区| 色爱综合网欧美| 亚洲熟妇一区二区| 欧美性xxxx极品hd满灌| 欧美极品另类| 国产一区二区三区四区五区在线 | 草草视频在线播放| 91国产视频在线播放| 日韩激情在线| 在线观看你懂的视频| 欧美日韩在线免费观看| 日本在线观看www| 国产综合 伊人色| 欧美a级理论片| 国产第一页第二页| 在线色欧美三级视频| 久久精品国产亚洲精品2020| 欧美videosex性欧美黑吊| 国产专区一区二区| 麻豆精品国产传媒mv男同| 久艹视频在线观看| 国产亚洲a∨片在线观看| 欧美a在线观看| 日日摸天天爽天天爽视频|