HPC高性能计算

高性能计算(HPC,High-Performance Computing)是计算机科学的一个分支,研究集群架构、并行算法和相关软件基础,通过分布式计算实现单台计算机无法达到的运算速度。高性能集群就是采用集群技术来实现高性能计算,在有限的时间范围内对问题求解。

PBS(Portable Batch System)

PBS是便携式批处理系统。集群服务器能够发挥并行运算的能力,必须依靠资源管理软件,PBS就是这样的资源管理者。每一个计算任务被定义为作业(Job), 比如模拟计算或者数据分析。PBS提供了作业管理的队列和批处理方式执行的环境。当大家的程序(job)同时在系统中执行时,这些程序彼此之间会竞争CPU等计算存储资源,为了避免不同程序在执行时不被其他的程序干扰,保证程序的效能和数据是准确的,尤其是在并行化运行环境中可以很好的发挥集群的作用。PBS的主要特点有:代码开放,免费获取;支持批处理、交互式作业和串行、多种并行作业

Slurm/Torque

Slurm给人感觉是专为HPC量身定做的,不支持windows,小巧精干而且简单易用,结构清晰明了,让人一目了然。而SGE则大而全,除了各类Unix和Linux还支持Windows,支持跨多个域/多个网段,复杂而晦涩难懂.
而Torque(Terascale Open-source Resource and QUEue Manager)是个分布式的资源调度系统,可以管理批处理任务和分布式上的资源,常在高性能计算集群中用于计算作业的提交和管理。用户可以使用TORQUE将计算作业提交到不同计算队列,常用的命令包括qsub(提交作业), qstat(作业状态查询)和qdel(删除作业)。

主要包括三部分:
PBS服务守护进程: pbs_server 负责接收作业提交,位于服务节点
PBS调度守护进程: pbs_sched 负责调度作业,位于服务节点
PBS MOM守护进程: pbs_mom 负责监控本机并执行作业,位于所有计算节点

Infiniband网络与以太网

InfiniBand(直译为“无限带宽”技术,缩写为IB)是一个用于高性能计算的计算机网络通信标准,它具有极高的吞吐量和极低的延迟,用于计算机与计算机之间的数据互连。InfiniBand也用作服务器与存储系统之间的直接或交换互连,以及存储系统之间的互连。InfiniBand的特别之处在于RDMA(远程直接内存访问),这允许网卡在服务器上读取和写入数据,而无需服务器处理器来进行这个工作。InfiniBand的远程直接内存访问(RDMA)能力可以降低CPU负载。

Infiniband网络和以太网区别

  • 以太网使用软件控制数据的传输,需要使用高性能CPU做数据包的处理
  • InfiniBand链路层提供有序数据包传递和基于信用的流量控制,CPU占用可忽略不计
  • 在传统以太网应用架构中,应用程序不可以直接访问网络
  • InfiniBand绕过操作系统内核创建应用程序间通信的直接通道,为应用程序提供延迟极低的消息传输服务

    链路

    链路指无源的点到点的物理连接。有线通信时,链路指两个节点之间的物理线路,如电缆或光纤。无线电通信时,链路指基站和终端之间传播电磁波的路径空间。换句话说,链路就是从一个结点到相邻结点的一段物理线路,中间没有任何其他的交换结点。在进行数据通信时,两个计算机之间的通路往往是由许多的链路串接而成的。

    NFS

    NFS是Network File System的缩写及网络文件系统。NFS主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录。NFS系统和Windows网络共享、网络驱动器类似, 只不过windows用于局域网, NFS用于企业集群架构中, 如果是大型网站, 会用到更复杂的分布式文件系统FastDFS,glusterfs,HDFS。

共享存储的目的是:

  • 实现多台服务器之间数据共享
  • 实现多台服务器之间数据一致

    负载均衡

    负载均衡(Load Balance),意思是将负载(工作任务,访问请求)进行平衡、分摊到多个操作单元(服务器,组件)上进行执行。是解决高性能,单点故障(高可用),扩展性(水平伸缩)的终极解决方案。

    DFS(Distributed File System)

    分布式文件系统(Distributed File System,DFS)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点(可简单的理解为一台计算机)相连;或是若干不同的逻辑磁盘分区或卷标组合在一起而形成的完整的有层次的文件系统。DFS为分布在网络上任意位置的资源提供一个逻辑上的树形文件系统结构,从而使用户访问分布在网络上的共享文件更加简便。单独的DFS共享文件夹的作用是相对于通过网络上的其他共享文件夹的访问点。

    Linux目录规范(FHS(Filesystem Hierarchy Standard)

    Filesystem Hierarchy Standard (FHS)是指Linux目录规范,根据FHS的官方文件指出, 他们的主要目的是希望让使用者可以了解到已安装软件通常放置于那个目录下, 所以他们希望独立的软件开发商、操作系统制作者、以及想要维护系统的用户,都能够遵循FHS的标准。 也就是说,FHS的重点在于规范每个特定的目录下应该要放置什么样子的数据而已。 这样做好处非常多,因为Linux操作系统就能够在既有的面貌下(目录架构不变)发展出开发者想要的独特风格。

    MinIo服务(兼容S3接口存储服务)

    MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。Minio使用纠删码erasure code和校验和checksum来保护数据免受硬件故障和数据损坏。因此,即便您丢失一半数量(N/2)的硬盘,您仍然可以恢复数据。

    纠错码介绍(erasure code)

    纠删码是一种恢复丢失和损坏数据的数学算法, Minio采用Reed-Solomon code将对象拆分成可变数据块和奇偶校验块。 比如12块盘(driver),一个对象可以被切分到所有驱动器上的可变数量的数据和奇偶校验块—从6个数据和6个奇偶校验块到10个数据和2个奇偶校验块。但是,默认情况下,MinIO在N/2个数据块和N/2个奇偶校验驱动器上分片对象,当然用户可以通过storage classes来自定义配置,不过官方还是建议采用使用N/2个节点来分配数据块和奇偶校验块,这样能够以最佳的方式保护防止驱动器(driver)故障.在上面的12个驱动器示例(使用默认配置)中,您可以丢失6个驱动器中的任何一个,但仍然可以从其余驱动器可靠地重构和恢复数据。

在经典的RAID6中可以在损失两块盘的情况下不丢数据,然而在Minio中纠错码可以保证当一般的盘故障时依然不会影响到数据。此外,纠错码在在对象级别,并且每次就可以修复一个对象。对于RAID而言,数据的修复在卷(volume)级别,这就意味比较高的修复时间。由于MinIO对每个对象单独编码,所以它可以逐步的对对象进行修复。一旦部署了存储服务器,就不需要在服务器的生命周期内更换或修复驱动器。MinIO的纠错码后端是为提高操作效率而设计的,它可以更加高效的利用硬件而达到加速的效果。

TCP/IP协议

四层应用模型

  1. 网络接口层(接口层:各种物理通信网络接口)
  2. Internet层(网络层:IP,ICMP,ARP,RARP)
  3. 传输层(TCP,UDP)
  4. 应用层(HTTP,DNS,FTP,SMTP,TELENT)

    IP(Internet Protocol)

    相当于网络中的一个节点,类似于地址,简单称之为IP地址。同一网络中,IP地址具有唯一性。IP地址分为两类,IPv4和IPv6.IPv4使用32位,以十进制表示。如192.168.0.1 IPv6地址是128位(16个字节),写成8个16位的无符号整数,并用冒号分开。

    TCP(Transmission Control Protocol)

    传输控制协议,即两点直接可靠连接或者说可靠性传输(三次握手)

    UDP(User Datagram Protocol)

    一种非连接,不可靠的传输方式,但是效率高,速度快,适合音频和视频。

    DNS(Domain Name System)

    域名解析系统。域名便于人们记忆,但是机器只识别IP地址。域名和IP地址之间的转换称之为域名解析。域名解析需要专门的域名解析服务器(DNS)
    完成

    DHCP(Dynamic Host Configure Protocol)

    动态主机配置协议(客户端67 服务器68)。主机向DHCP服务器发送请求,DHCP分配给主机一个正式IP

    FTP(文件传输协议)

    用于Internet上控制文件的双向传输

    域名、域、主机名

    域名

  • 域名是 Internet 上的一个服务器或一个网络系统的名字,在全世界,没有重复的域名。
  • 以若干个英文字母和数字组成,由“.”分隔成几部分,如 ibm.com 就是一个域名。
  • 可以通过 DNS 把域名解析成 IP 地址,然后去访问相应的站点。
  • 域名的范围要比主机名大。
  • 一个域名下可以有多个主机名,域名下还可以有子域名。例如,域名 abc.com 下,有主机 server1 和
  • server2,其主机全名就是 server1.abc.com 和 server2.abc.com 。
  • 在相同 IP 地址下,由于虚拟主机可以寄存多个不同主机名和域名的 Web 网站,因此在发送 HTTP 请求时,必须在 Host 首部内完整指定主机名或域名的 URI 。

    二级域名

    很多人都误把带 www 当成一级域名,把其他前缀的当成二级域名,是错误的。很多网站都设置了 301 重定向,就是点击一级域名的时候,由于设置了301重定向,会直接跳转到设置好的二级域名上。正确的域名划分为:

  • .com 顶级域名

  • baidu.com 一级域名
  • www.baidu.com 二级域名
  • bbs.baidu.com 二级域名
  • tieba.baidu.com 二级域名

    在因特网上,每一网络所涉及的范围。它是域名系统命名层次结构的一部分。例如:“.com(商业机构)”、“.edu(教育机构)”、“.gov(政府部门)”。最高层次的域通常为国名。例如“.cn(中国)”。

    主机名

    域名分为三部分: 主机名 + 公司名 + com(cn 等等),当然还有更复杂的,但是一般第一个 www 就是主机名,所以 news.sina.com、sport.sina.com 中的 news、sport 都属于主机名,当然主机名不一定只有一个单词,可以为 stefan.news 或者更多。
    一个局域网中,每台机器都有一个主机名,比如 localhost,用于主机与主机之间的便于区分,就可以为每台机器设置主机名,以便于以容易记忆的方法来相互访问

    集群-大规模Linux集群部署-MPI集群搭建与MPI编程

    集群部署
    指对已经在物理层实现了连通及配置的集群各节点安装、配置操作系统和相应的应用软件,并且要在此基础上安装、配置各种集群软件及服务,使集群全部节点间实现在应用层面上的连通,能够作为一个整体对外提供服务。

集群部署的目的
提供一种安全、可靠、快速的部署方法,使操作人员可以从繁重的操作系统安装及配置、应用软件和各种服务的配置等极易出错的工作中解放出来,提高部署的效率和准确性。当然,这也必须要有相应的操作系统、集群技术、以及网络协议的支持。

调度系统对比

软件 厂商 授权许可 平台支持 最大节点数 是否收费
OpenLava Teraproc GPL Linux 数千 免费
PBS Pro Altari 商业授权 Linux,Windows 50k+ 付费
TORQUE Adaptive Computing 商业授权 Linux, Unix 数千 付费
Moab Cluster Suite Adaptive Computing 商业授权 多平台 数千 付费
Platform LSF IBM 商业授权 Unix, Linux, Windows 未知 付费
Slurm SchedMD GPL Linux,Unix 120k+ 免费

网卡(Network Interface Card)

网卡(Network Interface Card,简称NIC),也称网络适配器,是电脑与局域网相互连接的设备。无论是普通电脑还 是高端服务器,只要连接到局域网,就都需要安装一块网卡。如果有必要,一台电脑也可以同时安装两块或多块网卡。一块网卡包括OSI 模型的两个层, 物理层和数据链路层:

  1. 物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等, 并向数据链路层设备提供标准接口。
  2. 数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送控制、向网络层 提供标准的数据接口等功能。

网卡的功能主要有两个:

  1. 将电脑的数据封装为帧,并通过网线(对无线网络来说就是电磁波)将数据发送到网络上去
  2. 接收网络上其它设备传过来的帧,并将帧重新组合成数据,发送到所在的电脑中。

网卡能接收所有在网络上传输信号,但正常情况下只接受发送到该电脑的帧和广播帧,将其余的帧丢弃。然后,传送到系统CPU 做进一步处理。当电 脑发送数据时,网卡等待合适的时间将分组插入到数据流中。接收系统通知电脑消息是否完整地到达,如果出现问题, 将要求对方重新发送。

SSH 免密登录

SSH协议

SSH 是一种计算机之间加密登录的协议,它相对于telnet和rsh的明文传输,提供了加密、校验和压缩,使得我们可以很安全的远程操作,而不用担心信息泄露。

加密

加密的意思是将一段数据经过处理之后,输出为一段外人无法或者很难破译的数据,除了指定的人可以解密之外。一般来说,加密的输入还会有一个key,这个key作为加密的参数,而在解密的时候也会用一个相关联(有可能是相同)的key作为输入。

私钥加密
所谓的私钥加密,是说加密方和解密方用的都是同一个key,这个key对于加密方和解密方来说是保密的,第三方是不能知道的。在第三方不知道私钥的情况下,是很难将加密的数据解密的。一般来说是加密方先产生私钥,然后通过一个安全的途径来告知解密方这个私钥。

公钥加密
公钥加密,是说解密的一方首先生成一对密钥,一个私钥一个公钥,私钥不会泄漏出去,而公钥则是可以任意的对外发布的。用公钥进行加密的数据,只能用私钥才能解密。加密方首先从解密方获取公钥,然后利用这个公钥进行加密,把数据发送给解密方。解密方利用私钥进行解密。如果解密的数据在传输的过程中被第三方截获,也不用担心,因为第三方没有私钥,没有办法进行解密。

免密码登录

  1. 在自己的操作系统上生成SSH私钥和公钥,一般会是id_rsa的私钥文件和名为id_rsa.pub的公钥文件
  2. 将公钥上传到服务器上
  3. 私钥用来配置本地的ssh,修改 ~/.ssh/config 文件

图片.png

NIS 服务器 (Network Information Service) 与 NFS (Network File System)服务器

NIS服务器是一个用户账号管理系统的服务器,需要NFS服务器的配合,要不然话就没有任何价值。NFS服务器主要功能就是共享文件,可以挂载到本地,配合NIS可以发挥出最大的功能。