选择一台设备作为服务器。

选择一台设备作为服务器。

这不是一个编码问题。这是出于对我的个人项目的好奇而提出的问题。

我有一个简单的服务器端 Web 服务器,它可以通过网络连接到有限的客户端。(假设在任何给定时间最多 10 个。服务器端负载永远不会增长。)现在,应用程序要将一些文件分发到我的客户端系统。我可以选择将其托管在我的桌面或 XEON 服务器上,两者都包含一个网卡。无论哪种情况(桌面/服务器),服务器都将位于同一网络中。即使客户端数量有限,但文件可以很大(以 GB 为单位),并且所有客户端都可以同时请求。

现在,我必须决定使用哪个设备作为服务器。我还想知道我应该考虑什么来提高下载性能。

台式机运行 Core I7、第 4 代。2TB HDD、128GB 闪存驱动器、8GB RAM Xeo 服务器。(我会列出规格)

计算可能不会成为主要瓶颈。一切都将是网络 IO。由于我位于同一个网络中,因此我的网络带宽无法提高。我可以选择服务器,因为计算线程可以更多。我还将拥有更多 RAM,这将保证文件驻留在主内存中。与台式机相比,文件 IO 将更快,L1/L2 缓存也是如此。我觉得台式机/至强之间的网络性能不会提高,因为它受到网卡的瓶颈限制。请告诉我还有哪些其他因素会使一个选择比其他选择好得多。(两者都运行 Ubuntu 14.04(台式机运行客户端版本,至强运行服务器版本。))

答案1

网络设备 - 如果您还没有,请购买一台千兆交换机,该交换机具有足够的端口,可连接路由器和所有将连接到路由器的系统。您的系统应该已经具备千兆位。如果没有,请花 15 美元买一对。它们的价格并不贵。

文件服务器,使用 XEON 系统,尤其是当其 RAM 为 ECC(错误纠正代码)时。i7 系列不能使用 ECC,而 ECC 非常适合保持数据存活(意味着没有与 RAM 相关的无声损坏)。您将始终与无声损坏作斗争,为什么要让事情复杂化?

由于您使用的是 Ubuntu Server 14.04,因此您必须决定希望它扮演什么角色。我建议使用 SSH 与服务器通信。如果服务器有 IPMI(智能平台管理接口,如果您不知道,请查找),则取下显示器并运行无头模式。我建议在上面放置一个受密码保护的 SSH 密钥,这样服务器更安全,请阅读 -> https://askubuntu.com/questions/2271/how-to-harden-an-ssh-server

在强化服务器后,您可能应该使用 Samba 进行文件通信。由于您只使用 Linux 机器,因此您可以使用 NFS(网络文件系统),但如果您想使用混合网络,最好习惯使用 Samba。这是我在 /etc/samba/smb.conf 底部使用的

[Storage]
   comment = Storage
   path = /media/Storage
   browseable = yes
   read only = no
   guest ok = yes
   create mask = 0755
   writeable = yes

您需要做的一件事是确定分区格式。很多事情都可能出错。从您列出的规格来看,您似乎只有一个驱动器,这是正常的起始位置。我建议在其上使用 EXT4,因为它是 Linux 原生的。其他人推荐 EXT3,老实说,两者都适合您的目的。如果您决定使用多个驱动器并希望将空间集中到单个挂载点,您有几个选择。BTRFS 具有 Raid 等效 0、1、5、6,其中 5 和 6 是实验性的。还有久经考验的 mdadm,它很容易设置,并会为您提供软件 raid。您还可以走实用路线并使用 AUFS(另一个统一文件系统)或 MHDDFS(多硬盘驱动器磁盘文件系统)之类的东西。我更喜欢 MHDDFS,因为它简单、易于使用,并且您不需要将其编译到内核中。还有 Mergerfs,尽管我没有用过那么多。如果您确实采取务实路线,我建议使用 Snapraid 来保持驱动器的奇偶校验。您需要每月清理 10% 最旧的数据,以防止静默数据损坏。

由于您只有一个驱动器,因此除了购买更快的驱动器外,您无法真正提高驱动器速度。4TB WD Green 驱动器将 WDIDLE 设置为无限,在我的网络上以超过千兆的速度运行,因此我只是将驱动器池化并使用 snapraid 来保证我的数据安全。

你可能还应该花点时间获取 DNS 并设置 ownCloud 或 FTP。你可以托管自己的电子邮件,但设置起来很麻烦。你还应该整理一个 rsync 备份,因为 raid 不是备份。诸如此类。

我希望我已经阐明了这个问题。一如既往,多读书。Linux 是一个有用的操作系统,但它的文档到处都是。一定要检查文章的日期,避免阅读十页过时的材料。

相关内容