Home | 簡體中文 | 繁體中文 | 雜文 | 知乎專欄 | Github | OSChina 博客 | 雲社區 | 雲棲社區 | Facebook | Linkedin | 視頻教程 | 打賞(Donations) | About
知乎專欄多維度架構 微信號 netkiller-ebook | QQ群:128659835 請註明“讀者”

26.11. Distributed File System(簇檔案系統)

我吧分散式檔案系統分為三類,聚合檔案系統,全局檔案系統,負載均衡檔案系統。

除了gfs其他檔案系統都是建立在本地檔案系統之上的網絡檔案系統。

几乎所有DFS都能通過fuse mount 到本地,但有些DFS mount 後性能不佳。

還有一個與分散式檔案系統密切相關的,就是塊設備,塊設備不是檔案系統,可以稱為裸設備。

26.11.1. FC 光纖存儲

常用 Fibre Channel HBA 卡

QLogic QLE2562 - PCI-Express Dual Channel 8Gb Fibre Channel HBA

Emulex LightPulse Fibre Channel SCSI driver 8.2.0.87.1p

HBA 卡使用SFP+光纖模組,LC-LC光纖跳綫

26.11.2. 聚合檔案系統

以NFS, glusterfs 為代表,其特點是server獨立運行,Server與Server間沒有通信,然後訪問者將其聚合組織並規劃目錄,為client提供數據共享。

glusterfs 可以實現Mirror與Strip等更複雜的組合,但全由client完成,server之間沒有交互。

		

+-------------------------+        +-----------------------+
| Client                  |       /| Images Data           |
+-------------------------+      / +-----------------------+
| /mnt                    |     /  +-----------------------+     +--------------------+
| /mnt/images             |<----  /| Include Data          |     | Design by neo chen |
| /mnt/include            |<------ +-----------------------+     +--------------------+
| /mnt/lib                | ...    netkiller.github.com
| /mnt/data               | ...    +-----------------------+
| /mnt/data/backup        |<-------| Backup Data           |
+-------------------------+        +-----------------------+

		
		

26.11.3. 全局檔案系統

如 gfs,它可以提供server間檔案系統協商,同步元數據等等。常規檔案系統只能用於本地硬碟,如果兩個伺服器同時mount iscsi存儲,會出現A伺服器寫入後,B伺服器無法看到A剛剛寫入的數據,如果兩台同時寫入數據,會損壞檔案系統。

		

		    +--------------------------------+
		    | Server Load Balancing          |
		    +--------------------------------+
		                    |
		                    V
--------------------- 1Gbps Ethernet ---------------------
            |                                |
            |        netkiller.sf.net        |
            V                                V
+------------------------+        +-----------------------+
| Server Master          |        | Server Master / Slave |
+------------------------+        +-----------------------+
| /u01                   |        | /u01                  |     +--------------------+
| /u02                   |        | /u02                  |     | Design by neo chen |
| /u03                   |        | /u03                  |     +--------------------+
+------------------------+        +-----------------------+
          |   |                             |   |
          V   V                             V   V
--------------------- 10Gbps Ethernet ---------------------
                           |  |
                           V  V
              +----------------------------+
              | IP SAN - ISCSI target      |
              +----------------------------+
              | LUN0 | LUN1 | LUN2 | ...   |
              +----------------------------+

		
		

26.11.4. 負載均衡檔案系統

這種檔案系統通常至少有三部分組成,存儲節點,訪問節點,管理節點。不同的系統叫法不同,但其原理相同。

存儲節點,負責數據存儲,數據通過hash散列

訪問節點,用戶通過該節點訪問數據,做數據上傳下載。訪問方式分為點對點與三角方式

管理節點,服務數據Mirror,Strip等,元數據同步等等...

點到點系統只提供一個訪問入口,如:MooseFS

		
          +--------------------------------+
          | User                           |
          +--------------------------------+
          | mount ip_address => /mnt/test  |
          +--------------------------------+
                          |
                          V
------------------ 1Gbps Ethernet ---------------------
         |                                   |
         V                                   V
+-------------------------+       +----------------------+
| Manager Node            |       | Access node          |
+-------------------------+       +----------------------+
| Mirror | Strip |  ...   |       | Index                |
+-------------------------+       +----------------------+
		 |
		 V
--------------------- 1Gbps Ethernet ---------------------
         |                                     |
         |            netkiller.sf.net         |
         V                                     V
+---------------------+              +--------------------+
| Data Node           |              | Date Node          |
+---------------------+              +--------------------+
| 01 02 03 ...    10  |              | 01 02 03 ...    10 |     +--------------------+
| 0A 0B 0C ...    0F  |<-- Mirror -->| 0A 0B 0C ...    0F |     | Design by neo chen |
| FA FB FC ...    FF  |              | FA FB FC ...    FF |     +--------------------+
+---------------------+              +--------------------+

		
		
三角鏈路
		

          +--------------------------------+
          | Server Load Balancing          |
          +--------------------------------+
                          |
                          V
------------------ 1Gbps Ethernet ----------------------------------
         |                               |                  |
         V                               V                  V
+-------------------------+       +-------------+    +-------------+
| Manager Node            |       | Access Node |    | Access Node |
+-------------------------+       +-------------+    +-------------+
| Mirror | Strip |  ...   |       | Index       |    | Index       |
+-------------------------+       +-------------+    +-------------+
		 |
		 V
--------------------- 1Gbps Ethernet ---------------------
         |                                     |
         |            netkiller.sf.net         |
         V                                     V
+---------------------+              +--------------------+
| Data Node           |              | Date Node          |
+---------------------+              +--------------------+
| 01 02 03 ...    10  |              | 01 02 03 ...    10 |     +--------------------+
| 0A 0B 0C ...    0F  |<-- Mirror -->| 0A 0B 0C ...    0F |     | Design by neo chen |
| FA FB FC ...    FF  |              | FA FB FC ...    FF |     +--------------------+
+---------------------+              +--------------------+

		
		

這種檔案系統的特點是,當用戶訪問檔案系統時,首先訪問管理節點,管理節點會返回一個數據地址,用戶再從訪問節點的地址取得數據。

以MogileFS為代表

某些系統甚至直接使用反向代理或者WEB伺服器作為訪問節點。這種系統非常適合多媒體數據存儲。通過負載均衡可能實現橫向與縱向靈活擴展

26.11.5. 網絡塊設備

本地檔案系統是建立在塊設備之上的。使用塊設備,首先配置好塊設備,然後你就可以把它當成物理硬碟一樣對待,在塊設備上分區,格式化。

以DRBD,nbd-server為代表,網絡塊設備可以保證兩塊物理硬碟的數據同步,常用語HA集群

		

Linux Server A                   Linux Server B
----------------                 -----------------
File System                      File System
Block Device    <--------------> Block Device
		
		

更多細節參考 http://netkiller.github.com/storage/

26.11.6. Storage 存儲

26.11.6.1. 存儲種類

DAS、NAS、SAN

26.11.6.1.1. Direct Attached Storage

PC + Raid Card ====== Array

26.11.6.1.2. Network-attached storage

NAS 說白了就是一個嵌入式電腦,經過精簡內核的Linux,通過samba,nfs,WebDav,ftp...等等方式實現共享存儲

如果你有興趣,可以DIY一個NAS,使用Openfiler

26.11.6.1.3. Storage area network

只要你有¥什麼都好說

26.11.6.1.3.1. FC SAN

FC 是光纖通道網絡存儲,需要專用交換機與HBA卡

提供 6G/8G 數據傳輸

26.11.6.1.3.2. IP SAN

1G/10G iSCSI,採用TCP/IP協議傳輸SCSI指令

客戶端不需要專門的HBA卡,專業iSCSI HBA目前非常昂貴

26.11.6.1.3.3. FCoE (Fibre Channel over Ethernet)

因為iSCSI很廉價,FC市場被iSCSI蠶食,傳統FC收到iSCSI壓力。推出新一代協議,希望能在現有光纖通道的成功基礎上,借助于乙太網的力量重新保持自身在數據中心存儲區域網路中的霸主地位。

iSCSI通過TCP/IP協議在可能產生損耗或阻塞的區域網路和寬頻網上傳送數據存儲塊。相比之下,FCoE則只是利用了乙太網的拓展性,並保留了光纖通道在高可靠性和高效率方面的優勢。

26.11.6.2. RAID

26.11.6.2.1. 緩存伺服器

全部採用RAID 0

一旦出現問題,立即將其從集群中踢出去,帶節點故障排除後,恢復它的功能。

26.11.6.2.2. Web 伺服器

採用RAID 1

伺服器僅僅存放腳本程序,數據建議放在外掛存儲上。

26.11.6.2.3. 資料庫

主伺服器:建議採用 RAID 10

資料庫節點:建議採用 RAID 10

資料庫應儘量避免使用RAID 5,RAID 5在做校驗過程時,效率會很低。

資料庫節點一旦出現問題,立即從集群中撤出,排除故障後,在回覆使用。

26.11.6.2.4. 數據備份

數據備份伺服器建議採用RAID 5/6

RAID 5 陣列容量計算公式 :

可用容量 =(n-1)/n的總磁碟容量(n為磁碟數)

26.11.6.3. File System 檔案系統

我個人推薦使用 ext4, xfs 或 reiserfs

zfs 也不錯

26.11.6.3.1. Distributed File System(DFS)

RAID 0提高吞吐能力是有限的,IO也會有瓶頸,NAS吞吐能力一樣有限,SAN價格不菲。

DFS是一個不錯的選擇

26.11.6.4. 數據訪問協議

				• 光纖通道管理
				• iSCSI
				• IP/RDMA
				• iSER
				• SRP
				• NFS v3 和v4
				• CIFS
				• HTTP
				• WebDAV
				• FTP
				• NDMP v4
			

26.11.6.5. 數據管理

26.11.6.5.1. Share 共享
26.11.6.5.2. Mirror 遠程鏡像同步
26.11.6.5.3. 壓縮與重複數據消除

EMC Data Domain

開源 Opendedup

26.11.6.5.4. Backup 備份與恢復

Bacula/Zmanda

26.11.6.5.5. 故障報告

26.11.7. 磁碟快照

下面流程是自動化完成,這裡分部講解

過程 26.1. 升級操作流程

  1. 數據備份

    通常絶大多數人,備份還採用 cp / tar / 以及稍微有點技術含量的rsync做差異備份 例如

    					
    cp -r /www/example.com/www.example.com /backup/www.example.com-2016-05-23
    tar zcvf www.example.com-2016-05-23.tgz /www/example.com/www.example.com
    
    rsync -auzv /www/example.com/www.example.com /backup/www.example.com-2016-05-23
    					
    				

    這種備份適合比較小的軟件包,對於圖片伺服器什麼的就比較耗時。我很早就開始嘗試使用快照備份當時使用LVM,後來轉為Btrfs檔案系統,到2010的時候btrfs快照已經非常成熟.

    					
    [root@www.netkiller.cn www]# btrfs subvolume snapshot /www /www/backup_2016-05-23
    Create a snapshot of '/www' in '/www/backup_2016-05-23'
    					
    				

    快照瞬間建立,使用下面命令查看快照

    					
    [root@www.netkiller.cn www]# btrfs subvolume list /www
    ID 284 gen 18583 top level 5 path backup_2016-05-23
    					
    				

    掛載快照

    					
    [root@www.netkiller.cn www]# mount -t btrfs -o subvol=backup_2016-05-23 /dev/xvdb1 /mnt
    [root@www.netkiller.cn www]# ll /mnt/
    					
    				

    關於BTRFS詳細使用方法,請參考 《Netkiller Linux 手札》