为什么需要共享存储

绝大多数集群都使用共享存储。那why?集群中要保证重要资源的可用性。资源可能运行在任意节点,可能需要访问相同的文件。如果集群资源只处理静态文件,那就不需要共享存储。如果文件改动不频繁,那么可以通过复制或rsync之类的方案来进行节点间同步。而当数据时动态的而且频繁变化,那么就需要共享存储了。

通常,集群资源使用三类文件:

一、二进制可执行文件,最好分别安装在每个节点上。这样保证每个节点上应用独立运行。

二、配置文件,推荐将这类配置文件放置在共享存储上,这样确保集群中的节点访问相同的配置文件。理论上,节点间对配置文件进行人工同步也是可行的,但是实际上会出现问题,可能导致各节点上配置文件版本不一致。

三、最重要的一种文件类型,数据文件。这一般是最有价值的数据,一般放在共享存储上,集群中的节点能同时使用,需要通过冗余来保护这些数据。

单一操作系统上的文件系统

一般的文件系统包含在系统内核中,来实现文件、文件夹等:

文件系统维护FAT(File Allocation Table):逻辑文件和物理磁盘块编号的关联信息。

文件系统维护磁盘block信息,处理应用的读写请求(使用FAT信息)。

维护”file cache“,当新信息写到文件后,保存在磁盘同时复制到文件系统的”cache buffers“,应用又需要读取相同文件分区时,文件系统从cache缓冲区进行简单检索,而不是去磁盘重新读取。

NAS、SAN及集群文件系统

在选择共享存储解决方案时,通常从NAS和SAN中选择,还有如集群存储,典型集群存储有两种实现方式:一种是硬件+软件,如SAN架构+IBM GPFS;另一种是专用集群存储,如NetApp GX,NetApp GX是构建在NAS基础架构之上的,通过操作系统实现集群存储。

NAS

网络附加存储NAS(Network attached storage)基于网络共享,传统NAS提供文件级别的存储服务。NAS服务器一般由存储硬件、操作系统以及其上的文件系统等几个部分组成。在Linux集群中,NAS通常采用NFS提供文件共享,也可以选用CIFS。NAS的优点是价格合理、设置简单、便于管理。在集群中最重要的是要避免网络中出现单点故障,所以如果计划使用NAS服务器来作为共享存储时,需要考虑冗余。一般NAS具有一定的可扩展性,但是它的可扩展性不是线性的,在某一临界点曲线变为水平后,NAS就无力应付此时的负载。而目前有集群NAS解决方案,它是一种横向扩展(Scale-out)存储架构,具有容量和性能线性扩展的优势。

HA集群中使用NAS的原因是NAS可以提供并发访问,而SAN不行,除非在客户端使用OCFS2、GFS2等文件系统。

SAN

SAN提供块级别的存储服务,能够提供很好的冗余的同时提供高性能,SAN还具有无限扩展能力,但是构建比较复杂。通常采用磁盘阵列,采用一个专用网络来访问这些磁盘,SAN可以使用FDDI、以太网或其他方式实现(后面会介绍FC和iSCSI两种)。典型的场景中,SAN filer中的磁盘阵列通常使用RAID来确保冗余。在阵列之上,创建LUN,集群节点连接到LUN,当做本地磁盘使用。典型环境中所有部件都要保证冗余,节点都分别连接到两个SAN交换机(参见下图),依次连接到SAN存储的两个不同的控制器。

SAN提供共享磁盘,但本身无法提供共享文件系统。如果集群节点需要访问同一个共享磁盘(LUN),并使用常规文件系统,磁盘的逻辑结构很快就被破坏了。共享磁盘搭配传统文件系统的两个问题:

磁盘空间分配不一致

如果一个共享磁盘同时挂载到多个节点,文件系统会加载FAT到每个节点的内存中。当其中一个节点上的应用尝试写文件,此节点上的文件系统会查询FAT和可用block,然后分配供使用,然后修改自己的FAT,但是不会修改其他节点上的FAT。如果其他节点上的应用尝试写文件时,可能会分配和之前相同的block供使用,因为这个节点不知道另一个节点已经占用了这个block。

注:文件系统处理数据参见上面。

文件数据不一致

例如节点A一个进程读取一个block X上的数据,这个block被复制到节点A的文件系统cache中。如果A节点上同一个或另一个进程读取同一个block的数据,A节点的文件系统会直接从cache中复制数据。节点B上的进程修改block X上的数据,而节点A实际上并不知道,会继续使用cache中的数据提供给应用使用,但其实数据已经不可用了。

因此,共享磁盘搭配常规文件系统来作为共享文件系统是不可行的。这种方式可以用于如fail-over系统。

集群文件系统

   集群文件系统是同时挂载到多个服务器来共享的一种文件系统。集群文件系统可以解决上面那种共享磁盘的不一致的问题。使用服务器间网络来互相通信来进行同步,可以使用以太网、SAN、或一些快速低延迟的集群内联设备。

上面例子中集群文件系统安装在几台服务器上。

第一个节点上APP1向集群文件系统请求读取数据(block number 5),集群文件系统将请求发送到包含的常规文件系统。另一个节点上的APP2向集群文件系统请求写入数据(block number 7)。集群文件系统通过inter-server网络来通知其他节点的集群文件系统,block被修改。集群文件系统会清除cache中的相关旧数据。所有节点上的FAT也会通过inter-server网络进行同步。集群文件系统解决了不一致问题并允许多个节点将共享磁盘当做共享文件系统使用。

一些常见的集群文件系统有:GFS、GPFS等。

iSCSI或光纤通道SAN

采用SAN时,需要决定使用iSCSI还是FC。市场上出现的是光纤SAN,当时LAN网络只能达到百兆。现在LAN网络可以达到千兆、万兆了,所以新的技术标准出现了,即iSCSI。iSCSI的原理很简单,将生成的SCSI包封装上IP报头使之可以在普通以太网上传输。

光纤SAN号称比iSCSI更可靠、更快,实际上并不尽然。市场上有一些高端iSCSI解决方案,使用专用的iSCSI网络,同时进行优化后,iSCSI可以比FC SAN更快更可靠。同时iSCSI SAN相比FC SAN创建更为简单。实现FC技术的另一种选择是使用FCoE(Fibre Channel over Ethernet)来替代昂贵的光纤硬件设施。这种解决方案使用万兆以上的以太网,同时使用FC协议。现在主流的Linux都支持FCoE。

进一步理解iSCSI

配置iSCSI时,需要配置两个部分:iSCSI target和iSCSI initiator。这里我们以SAN为例子,iSCSI target运行在SAN存储上,启用3260端口对client提供服务。iSCSI initiator运行在集群节点上并连接到iSCSI target。这种架构中,通常采用一个专用的SAN网络,是一个特殊的以太网,网络是冗余的。(可能会导致LUN被节点发现四次)

在SAN网络上需要进行一些特殊的优化。首先集群节点可以选用iSCSI HBA卡。这种网卡是一种智能网卡,主要是将iSCSI层和TCP/IP协议栈的功能交由HBA来完成,这样,对主机CPU的需求也可减小到最少。一般建议开启巨型帧,MTU设置为9000,来确保处理数据的速度,同时还可以使用带iSCSI减压引擎(TOE)功能的HBA来更有效的处理数据。然而,目前iSCSI HBA可能会被更高速的NIC替代。

多路径

SAN通常配置冗余。在典型架构中,集群节点有四条路径到LUN,在节点上会发现/dev/sda、/dev/sdb、/dev/sdc、/dev/sdd,实际上是同一个设备。正如四个/dev/sdx绑定到一个特定的路径,不该连接到其中的任意一个。如果连接的路径断掉了,节点将断开连接。这就是为什么要使用multipath。

multipath是一个可加载的驱动,用来分析上面的存储设备,它会发现/dev/sdx其实是同一个LUN,同时创建一个特定的设备供节点连接。当multipath驱动加载后,“multipath -l”可以确认拓扑,可以看到一个新建的设备,在/dev/mapper目录下。

参考:http://www.stalker.com/notes/SFS.html

Linux HA集群——共享存储篇相关推荐

  1. biee 12c linux 安装,oracle biee 12c linux ha 集群安装配置手册.pdf

    oracle biee 12c linux ha 集群安装配置手册 Oracle BIEE 12c Linux 系统集群安装配置文档 仇 辉 2017 年 2 月 1 1 文档控制 编制 日期 作者 ...

  2. Linux HA集群

    我们先说一下几个概念: 服务(Service),是HA集群中提供的资源,包括Float IP,共享的存储,apache等等. 成员服务器(Member Server) 也叫节点(Node),是HA中实 ...

  3. linux+Oracle集群课程全面升级

    作为国内最早从事开源架构师级课程研发的公司,从2006年10月开始,荣新稳步提升,将互联网运维作为主导就业方向,并将Linux集群架构课程发展成为国内最顶级.覆盖技术最全面的Linux课程,作为荣新I ...

  4. 红帽436——HA高可用集群之概念篇

    一.集群概念: 集群:提高性能,降低成本,提高可扩展性,增强可靠性,任务调度室集群中的核心技术. 集群作用:保证业务不断 集群三种网络:业务网络,集群网络,存储网络 二.集群三种类型: HA:高可用集 ...

  5. 使用Hyper-V集群和存储功能以达到HA

    虽然Hyper-V缺少高可用性功能,但其Windows集群和存储功能能够与VMware HA相媲美. 在Hyper-V上运行Exchange Server虚拟机的例子中,可以为邮箱存储服务器在集群里配 ...

  6. 视频教程-Linux 云计算架构师视频课程(集群、存储、调优)-Linux

    Linux 云计算架构师视频课程(集群.存储.调优) 10年Linux使用及管理经验,7年IT在线教育培训经验.拥有RHCA高级架构师及Openstack证书.精通Linux.Python.思科.C+ ...

  7. Linux 高性能计算集群(六)BeoWulf

    概述 1 集群 1.1 什么是集群 简 单的说,集群(cluster)就是一组计算机,它们作为一个整体向用户提供一组网络资源.这些单个的计算机系统就是集群的节点(node).一个理想的 集群是,用户从 ...

  8. (超详细)基于Zookeeper的Hadoop HA集群的搭建

    基于Zookeeper的Hadoop HA集群的搭建 JunLeon--go big or go home 前言: 高可用(high availability,HA)指的是若当前工作中的机器宕机了,系 ...

  9. Hadoop-2.8.5的HA集群搭建

    一.Hadoop HA 机制的学习 1.1.Hadoop 2.X 的架构图 2.x版本中,HDFS架构解决了单点故障问题,即引入双NameNode架构,同时借助共享存储系统来进行元数据的同步,共享存储 ...

最新文章

  1. Splunk安装和配置及源码编译安装SVN
  2. Java 的类加载顺序
  3. numpy.lib.stride_tricks.as_strided() 高效切分数组
  4. sklearn数据集操作API
  5. tar中的zxvf都是什么?
  6. java使用泛型后消除泛型_如何以及何时使用泛型
  7. linux系统下压缩文件,Linux系统下文件的压缩.打包与解压
  8. Android异步处理:Handler+Looper+MessageQueue深入详解
  9. 为什么现在辞职的年轻教师越来越多?
  10. 直接在线查看github里的jupyter notebook
  11. ios获取区域服务器信息,ios获取服务器数据
  12. 计算机骗局案例,骗局揭秘 | 卖你一台假电脑,再送你一个假鲁大师
  13. react 点击使父元素消失_在 React 组件中使用 Refs 指南
  14. 最大功率点跟踪测试软件,最大功率点跟踪(MPPT)
  15. 数学建模笔记——评价类模型(一)
  16. matalb laod时无法读取文件
  17. Investigating Typed Syntactic Dependencies for Targeted Sentiment Classification Using GAT(2020)
  18. Win10恢复账户默认半透明头像
  19. 生信步骤|转录组测序上游分析:hisat2+samtools+stringtie
  20. php redis 详细操作

热门文章

  1. 决定成败的关键——创业计划书
  2. nmap加载nse脚本在内网渗透中的使用-上
  3. cisco 3560 MAC MOVE功能解决802.1x认证主机从交换机端口之间移动认证会话不断开问题
  4. 大型稀疏线性方程组求解技术——工业仿真的底层核心
  5. 使用阿里大鱼发送短信验证
  6. 2.地址已经被使用——Address already in use
  7. echarts的tooltip显示百分号
  8. marlin源码分析 一
  9. iOS 微信支付 实用教程
  10. 关于两种单菌种发酵的豆瓣酱代谢组学方面差异研究