知乎专栏 |
我吧分布式文件系统分为三类,聚合文件系统,全局文件系统,负载均衡文件系统。
除了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 手札》