| 知乎专栏 | 
我吧分布式文件系统分为三类,聚合文件系统,全局文件系统,负载均衡文件系统。
除了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
下面流程是自动化完成,这里分部讲解
过程 6.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 手札》