知乎專欄 | 多維度架構 | 微信號 netkiller-ebook | QQ群:128659835 請註明“讀者” |
我吧分散式檔案系統分為三類,聚合檔案系統,全局檔案系統,負載均衡檔案系統。
除了gfs其他檔案系統都是建立在本地檔案系統之上的網絡檔案系統。
几乎所有DFS都能通過fuse mount 到本地,但有些DFS mount 後性能不佳。
還有一個與分散式檔案系統密切相關的,就是塊設備,塊設備不是檔案系統,可以稱為裸設備。
常用 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光纖跳綫
以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 | +-------------------------+ +-----------------------+
如 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 | ... | +----------------------------+
這種檔案系統通常至少有三部分組成,存儲節點,訪問節點,管理節點。不同的系統叫法不同,但其原理相同。
存儲節點,負責數據存儲,數據通過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伺服器作為訪問節點。這種系統非常適合多媒體數據存儲。通過負載均衡可能實現橫向與縱向靈活擴展
本地檔案系統是建立在塊設備之上的。使用塊設備,首先配置好塊設備,然後你就可以把它當成物理硬碟一樣對待,在塊設備上分區,格式化。
以DRBD,nbd-server為代表,網絡塊設備可以保證兩塊物理硬碟的數據同步,常用語HA集群
Linux Server A Linux Server B ---------------- ----------------- File System File System Block Device <--------------> Block Device
更多細節參考 http://netkiller.github.com/storage/
DAS、NAS、SAN
NAS 說白了就是一個嵌入式電腦,經過精簡內核的Linux,通過samba,nfs,WebDav,ftp...等等方式實現共享存儲
如果你有興趣,可以DIY一個NAS,使用Openfiler
只要你有¥什麼都好說
主伺服器:建議採用 RAID 10
資料庫節點:建議採用 RAID 10
資料庫應儘量避免使用RAID 5,RAID 5在做校驗過程時,效率會很低。
資料庫節點一旦出現問題,立即從集群中撤出,排除故障後,在回覆使用。
我個人推薦使用 ext4, xfs 或 reiserfs
zfs 也不錯
• 光纖通道管理 • iSCSI • IP/RDMA • iSER • SRP • NFS v3 和v4 • CIFS • HTTP • WebDAV • FTP • NDMP v4
下面流程是自動化完成,這裡分部講解
過程 26.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 手札》