共享储存服务器怎么搭建?

共享储存服务器怎么搭建?,第1张

可以采用这种文件共享存储服务器方案,如
产品型号:ZI2W6S8-8438HV
产品类型:双路二十核机架式服务器
处 理 器:Xeon Silver 4210
内 存:8G DDR4 REG ECC
硬 盘:HD SATA3 2TB
网 卡:双千兆
管 理:硬件监控、远程管理
机 构:2U机架式
电 源:500W
*** 作系统:Linux免费版 / VMware ESXi
服务:全国联保 叁年质保

1选择机架设备

小型企业通过在桌面或架子上堆叠服务器硬件和网络设备来开始运营并不罕见。这样做的成本的确比较低廉,但会存在未来隐患,随着公司业务的发展,这些设备可能会成为一个巨大的混乱。这些设备暴露在外会增加物理篡改的风险,也会埋下一些定时炸d,比如说不小心造成的咖啡溢出,环境灰尘以及员工不小心被暴露的电线绊倒所存在的危险等等。

但是,使用机架式设备能避免这类事故。为什么这样说呢因为这些机架经过专业设计,可以轻松地容纳这种类型的硬件。虽然,与非机架安装等价物相比,它们似乎非常昂贵,但从长远的角度来说,性价比高,你可以使用它们轻松管理你的设备以及其它好处会远远超过其成本。

2要了解服务器机架的基本特征

在购买或安装服务器机架之前,你需要学习并了解服务器机架的基本特征。服务器机架通常以机架单位来衡量,通常表示为“U”或“RU”。机架单元的高度相当于175英寸(445毫米),兼容设备的测量单位为“U”的倍数。通常,服务器的范围从1U到4U,网络交换机在1U到2U之间,而一些刀片服务器在5U到10U之间或甚至更多。

在确定服务器机架之前,你还需要考虑服务器机架的宽度和高度(深度)。通常可接受的宽度为19英寸,深度为600-1,000mm。然而,这些机架中的许多通常具有可调节的后支架,即使大多数机架安装服务器通常包括可调节的安装套件,一旦它们具有足够的深度来容纳服务器就可以使用。

四柱机架是当今市场上最受欢迎的商用服务器机架之一,它设计用于容纳19英寸宽的设备和服务器。

普通机架的高度约为42U,其中一半的机架高度为24U,但有几种其他类型的机架,机架高度从5U到20U不等。这些不是对这些机架外部尺寸的测量,因为该特征高度依赖于机架的设计并且它是变化的。一些机架配有脚轮,有助于缓解运动。

开放式机架和小型壁挂式机柜是在空间有限的地方安装IT服务器的绝佳选择。但是,你需要意识到,如果你决定使用开放式机架,则必须满足特殊要求才能安装服务器,包括将机架固定在地板上。壁挂式机柜不适用于由少数服务器组成或比网络交换机重的任何负载。

3隔离服务器以降低噪音

如果你没有专门放置和存放设备的单独房间,你将不得不考虑内部服务器设备附带的噪音。你需要一个分区的房间,即使它是一个小区域,因为从长远来看,它是值得的。

建立分区以后,能够消除或者减弱那些会影响员工整体工作效率的隐患。另外还有一个好处就是能够防止任何未经授权的人员篡改你的设备,有助于保护设备免受损坏并防止被盗。

在小型企业中,除了将机架放在房间的角落或IT部门内部别无选择外,强烈建议使用具有隔音功能的机架。 由于通风口无法实现完全隔音,因此这些机架通常通过其降噪特性来衡量。它们产生的噪音和机架本身的整体降噪能力的结合通常会决定它们的工作效果。

4想要散发热量则需一个合适的空调机组

IT设备和服务器产生的热量通常很高,可能会缩短设备的使用寿命。它们还可能导致中断和崩溃,这可能很难解释,这就是为什么在构建内部服务器机房时安装冷却装置非常关键的原因。

但是,如果你只需要几个网络交换机,五托架网络连接存储(NAS)系统或服务器,你可能不需要担心冷却系统,除非你需要更大的NAS,多个服务器和一个中型UPS,这样的话热量会迅速增加。

服务器机架的热容量也直接受外部温度的影响。这就是强烈建议你在服务器机房安装空调装置的原因。

只要打开服务器并产生热量,这些空调就必须始终打开。建议使用不同的断路器安装独立的独立装置,以便在需要维修任何一个断路器时可以定期更换它们。

不要想着打开窗户再加上两部风扇来散发热量。

5学会正确处理电缆

只有正确的电缆管理才能确保适当的通风。这就是为什么尝试将42个1U服务器强制进入全高机架是一个非常糟糕的主意,因为它会导致严重的布线限制或限制。许多旧服务器的机箱通常需要彼此之间1U到2U的空间,以确保正确的气流。目前,大多数现代机架式服务器都不需要这些空间。

设置一个装满机架的服务器机房需要的不仅仅是使用一些螺丝来帮助将这些设备固定到位。你需要了解如何管理从这些机架中排列的所有设备及其相应的以太网电缆中出来的电缆。除了机柜内布线外,还需要妥善管理或终止用于IP摄像机,台式计算机和所有其他网络设备的以太网LAN点的电缆。

处理所有这些的最佳方法是使用RJ45配线架终止以太网电缆。安装在1U空间中的普通接线板通常提供多达24个端口,并且通常需要某种形式的手动输入,例如剥离电缆,将其固定到接线板中以及使用线缆测试工具来验证其连接性。根据你的预算,你可以让网络专业人士或专家在一天内为你处理所有这些问题。

除了配线架之外,你还需要使用束线带,因为当你尝试固定杂散电缆时它们会派上用场。你可以获得可以重复使用的标准电缆扎带,当你批量购买时它们非常便宜。

6学会标记,保持简单

在设置服务器时,要学会标记和记录你所使用的流程,这点是非常重要的。这样做,便于任何新员工或者供应商在需要了解服务器机房时,能够高效并系统的了解到服务器的整体系统情况。并且还可以防止可能发生的任何灾难性错误,包括重新启动或拔出系统而不发出任何形式的警告。

正确标记基础设施的最简单和最好的方法之一是使用标签打印机。该打印机可以从任何硬件商店购买。你必须使用正确描述它们的唯一名称或其IP地址来标记网络和服务器设备。你还应该为键盘,鼠标和视频开关,路由器,NAS设备,冗余硬件和数据备份设备等其他IT设备执行相同的 *** 作。

这些注意事项应打印出来并妥善详细,以便轻松解释与你的内部硬件相关的重要程序。这些打印件应贴在冰箱磁铁或服务器机柜上。为了获得最佳结果,它们应包括与数据备份,联网,启动或关闭这些设备相关的 *** 作说明,以防断电。

除了以上几点,还有一些需要你去了解和注意的地方:

a空间要求

b地板和柜子类型

c设备尺寸

d加热和冷却系统

e电气设置

f防火

g紧急电气备份

h安全和警报

最重要的一点是,以上所有内容都要花钱,所以要规划好你的预算,不要让设置服务器机房花掉了你整个IT预算。

针对贵公司部门较多,如果条件允许,我认为买台服务器搭建server 2003或者2008,整个公司采用域环境进行访问,对每个部门可以有效地解决储存问题。比如说财政部资料相对比较保密,你可以拒绝其他部门访问。每个部门的人可以访问自己的文件。

在架构设计:文件服务的设计与实现一文中,通过实现一个文件服务来梳理了一个架构设计的一般流程,并得到如下静态架构图

本文继续聊聊文件服务中的子模块:「存储模块」的设计,包括:

前面的架构没有对存储进行特别设计,直接使用了本地存储。考虑到后期文件数量可能会越来越多,本地存储可能无法支撑,且本地存储的安全性也没有保障。为了便于后期扩展,需要对「存储」部分进行设计。

存储的方式有很多,本地存储、NAS、分布式存储,为了能支持不同的存储方式,需要对「存储模块」进行抽象。考虑到「存储模块」涉及到IO,是一个相对底层的模块。「上传」这个核心模块不能依赖于具体的存储,所以这里也需要对其进行依赖反转。

见紫色部分,UploadService调用了FileInfoRepository来存储FileInfo,而FileInfoRepository是个接口,具体实现由存储模块中的实现类来实现。

我们先看本地存储。最简单的实现,就是直接使用IO将文件写到对应的目录下就可以了。但是,本地存储会有如下几个问题:

下面我们针对上面的问题,来一个个的解决。

首先,对于多租户来说,在我们的架构中,实际对应的是Group,我们按照Group的不同,来划分目录即可。即 不同的租户有不同的文件根目录 ,后期某个租户迁移时,直接迁移对应目录即可。这也稍微解决了单目录文件数量多的问题。

对于单目录下,随着文件数量的增加导致访问速度下降的问题,我们该如何解决呢?

如果你做过分布式系统,那么想一想, 我们是否可以把单目录看成是一个服务器,访问目录下的文件看成是一个个的请求呢 ?如果可以,那解决单目录下访问速度慢的问题是不是就变成了「如何解决单服务器下,负载过高」的问题了?那解决服务端负载过高的方法是否适用于解决目录访问速度下降的问题呢?

我们从下面几个方面来分析一下:

首先来看「解决服务端负载过高的方法」!答案很明显: 分流+负载均衡

分布式服务的负载均衡有几种方式呢?

再来看「目录访问和服务器的区别」,虽然可以把目录看成服务器,但是两者还是有区别的:

也就是说,对于目录来说,我们不需要考虑创建成本。

那么针对服务器负载高的解决方案是否适合目录访问呢?或者哪种方式适合目录访问呢?我们一个个来分析:

可以看到,主要的问题就是创建目录的问题!如何保证在目录数量改变时,不需要调整程序呢?

实际上git已经给出了答案:

也就是说,根据sha1散列的前两位对文件进行归类。这样既解决了目录创建问题,也解决了文件分布问题。可能的问题是,「sha1散列2^80次,可能会发生一次碰撞」。这个问题对于一般文件系统来说,好像也没有担心的必要。

解决了「单目录文件过多,导致访问速度下降」的问题,我们来看下一个问题: 数据安全

文件数据是存放在电脑磁盘上的,如果硬盘损坏,可能导致文件的丢失。这实际还是一个「单点问题」!

「单点问题」的解决方案是什么呢? 冗余 啊!

最简单的方案就是定时去备份数据,可以有如下几种方案:

我们继续一个个的讨论。

首先是 人工备份 ,这是最low的方案,当然也是最简单的,即有人定期去备份就行了。问题是时效性不高,例如一天备份一次,如果磁盘在备份前坏了,那就会丢失一天的数据。同时恢复比较耗时,需要人工处理。

第二个方案是 代码实现 ,即在上传文件时,程序就自动备份。以上面的架构为例,可以添加一个BackupListener,当上传完成后,通过事件,自动备份上传的文件。同时下载时需要判定文件是否完整,如果有问题则使用备份数据。此方案时效性得到了保障,但是将数据备份和业务放到了一起,且需要编码实现,增加了业务代码量。

第三个方案是 libfuse ,libfuse是用户态文件系统接口。下面是libfuse官方简介:

简单来说,就是可以用libfuse构建一个用户态文件系统。之前在老东家做了一个日志分析平台,日志的收集就使用了libfuse,大致架构如下:

业务系统写日志到挂载的用户态文件系统中,用户态文件系统自动转发到了后续的处理中间件:redis、消息队列、文件系统。

在这里也可以用类似的功能,即在文件上传后,用户态文件系统自动备份。此方案解耦了文件备案逻辑与业务逻辑。

最后一个方案是 RAID ,即廉价冗余磁盘阵列。RAID不但可备份文件,还支持并发读写,提高上传下载速率。

常用的RAID有:RAID0,RAID1,RAID01/RAID10,RAID5和RAID6等。我们来看看这几种RAID的特点,以及是否适用于我们的文件服务。你会发现从RAID0到RAID6,又是一个从单点到分布式的过程。

看下面的两张图应该能更好的理解:

无论是RAID10还是RAID01,对磁盘的使用效率都不高。那如何提高磁盘使用率呢?就有了RAID3。

对于本地存储来说,RAID是个相对实用的解决方案,既能提高数据安全、快速扩容,也提高了读写速率。但是无论扩展多少磁盘,容量还是相对有限,吞吐也相对有限,同时由于其还是单点,如果文件服务本身挂掉,就会导致单点故障。所以就有了分布式文件系统。

分布式文件系统下次单独讨论!

最后打个广告,帮朋友开的专栏《零基础Unity3D 游戏 开发》,适合没有基础、想从事 游戏 开发的小白!朋友从事 游戏 多年,开发了多款 游戏 ,收了30多个徒弟,技术杠杠的!

NFS(Network File System),网络文件存储系统,它最早是由 Sun 公司开发的,也是 FreeBSD 支持的文件系统中的一个,它允许网络中的计算机之间通过TCP/IP 网络共享资源。通过 NFS 协议,我们本地 NFS 的客户端应用可以透明的读写位于服务端 NFS 服务器上的文件,就像访问本地文件一样方便。简单的理解,NFS 就是可以透过网络,让不同的主机,不同的 *** 作系统可以共享存储的服务。
NFS 在文件传送或信息传送过程中依赖 RPC(Remote Procedure Call)协议,即远程过程调用,NFS的各项功能都必须向 RPC 来注册,如此一来 RPC 才能了解 NFS 这服务的各项功能 Port,PID,NFS 在服务器所监听的 IP 等,而客户端才能透过 RPC 的询问找到正确对应的端口,所以 NFS 必须要有 RPC 存在是才能成功的提供服务,简单的理解二者关系:NFS 是一个文件存储系统,而 RPC 是负责信息的传输。

通过上面的简介,我们知道 NFS 服务需要依赖 RPC 服务,所以这里 NFS 服务端需要安装 rpcbind 和 nfs-utils ,客户端只需要安装 nfs-utils 即可,由于我们选用 CentOS 系统,所以可以使用 yum 快速的安装。

然后安装 NFS 服务

另:Ubuntu 1604 安装命令

我们在服务端创建一个共享目录 /data/share ,作为客户端挂载在远端入口,然后设置权限

然后,修改 NFS 配置文件 /etx/exports

说明一下,这里配置后边有很多参数,每个参数有不同的含义,具体可以参考下边。此处,我配置了将 /data/share 文件目录设置为允许IP为 19216800/24 区间的客户端挂载。然后,如果客户端IP不在该区间也想要挂载的话,可以设置IP区间更大或者设置为 即允许所有客户端挂载,例如: /home (ro, sync,insecure,no_root_squash) 设置 /home 目录允许所有客户端只读挂载。

接下来,我们先启动 RPC 服务

我们发现,启动了 NFS 服务后,RPC 注册的端口列表明显增多。现在服务端都启动起来了,在服务端看下是否正确加载了设置的 /etc/exports 配置

最后,在另一台Linux虚拟机上测试一下,是否能够正确挂载。首先,我们可以在客户端查看下NFS服务端设置可共享的目录信息

然后,在客户端创建挂载目录/share

最后,挂载远端目录到本地 /share 目录

可以看到,可以正确将远端 NFS 目录挂载到本地。注意:挂载点 /share 目录必须已经存在,而且目录中没有文件或子目录
最后,我们在 NFS 服务端 /data/share 目录下创建一个文件,看下客户端能否正确读取并修改

都可以了,这里因为上面设置了 NFS 远端目录权限为 rw 拥有读写权限,如果设置为 ro ,那么客户端只能读取,不能写入。根据实际应用场景合理配置。
NFS 默认使用 UDP协议进行挂载,为了提供 NFS 的稳定性,可以使用 TCP 协议挂载,那么客户端挂载命令如下:

最后,卸载命令

由于阿里云线上有NAS存储,又不能公网访问,所以本地通过软件构建一个NAS以供测试。

NFS的挂载原理

NFS分为客户端与服务器端,一般设置为一个Server端,多个客户端,也可设置为多对多,当服务器端设置好共享目录/data后,客户端通过相应的访问权限,将共享目录挂载到本地系统的某个目录下,就可以透明的看到共享目录里的文件了,依据服务器制定的相应权限做 *** 作

NFS服务器与客户端的通信原理

客户端NFS和服务端NFS通讯过程

1)首先服务器端启动RPC服务,并开启111端口

2)启动NFS服务,并向RPC注册端口信息

3)客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口

4)服务端的RPC(portmap)服务反馈NFS端口信息给客户端。

5)客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。

NFS系统守护进程

nfsd:它是基本的NFS守护进程,主要功能是管理客户端是否能够登录服务器;

mountd:它是RPC安装守护进程,主要功能是管理NFS的文件系统。

当客户端顺利通过nfsd登录NFS服务器后,在使用NFS服务所提供的文件前,还必须通过文件使用权限的验证。它会读取NFS的配置文件/etc/exports来对比客户端权限。

portmap:主要功能是进行端口映射工作。当客户端尝试连接并使用RPC服务器提供的服务(如NFS服务)时,portmap会将所管理的与服务对应的端口提供给客户端,从而使客户可以通过该端口向服务器请求服务。

环境:

新建一个虚拟机,系统安装使用最小化安装,可参照我前面的文章,有详细介绍。一般情况是系统盘是和数据盘分开。系统盘在线上我一般情况是分配20G,如果是容器等应用系盘我会分配50G,当然如果是有很多镜像的容器环境,那么我会系统将/var/lib/docker等用单独的数据盘来挂载。

安装配置NAS文件共享存储

1、服务端安装

2、关闭防火墙

3、配置nas

配置文件:/etc/exports

共享目录创建:

4 本地NAS存储目录 1921682300/24(授权访问客户端的地址段)

5 重新加载NFS配置

参数说明:

rw:可读写的权限

ro:只读的权限 anonuid:可以自行设定这个UID的值,这个UID必需要存在于你的/etc/passwd当中anongid:同anonuid,但是变成groupID就是了 sync:资料同步写入到内存与硬盘当中 async:资料会先暂存于内存当中,而非直接写入硬盘 insecure:允许从这台机器过来的非授权访问

no_root_squash:登入NFS主机,使用该共享目录时相当于该目录的拥有者,如果是root的话,那么对于这个共享的目录来说,他就具有root的权限,这个参数『极不安全』,不建议使用

root_squash:登入NFS主机,使用该共享目录时相当于该目录的拥有者。但是如果是以root身份使用这个共享目录的时候,那么这个使用者(root)的权限将被压缩成为匿名使用者,即通常他的UID与GID都会变成nobody那个身份

all_squash:不论登入NFS的使用者身份为何,他的身份都会被压缩成为匿名使用者,通常也就是nobody

6 启动服务

7 设置开机启动

8 查看端口占用,以便开着防火墙的时候设置,如果闲麻烦,可以通过限制访问IP

Linux nfs客户端安装

vi /ettc/hosts

在末尾加入

开机自动挂载

vi /etc/fstab

##尾行下面新增加一行写入

注:_netdev表示设备需要网络


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13253300.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-27
下一篇 2023-06-27

发表评论

登录后才能评论

评论列表(0条)

保存