我有兴趣构建一个 NAS,作为少数人的文件服务器(大多数时候我自己是唯一的用户)。我认为服务器将在 Linux 上运行,并使用 Samba 将文件提供给我的计算机(双启动 Linux Mint 和 Windows 10)和我的手机(运行 Android)。NAS 将仅使用 SATA-HDD 驱动器,并将由像这样的嵌入式低功耗设备制成:
NAS 还会在后台频繁地向驱动器执行写入操作,每天访问并将数据附加到几千个小型 .csv 文件中。
我在网上看到,NAS 驱动器可以在传输过程中压缩数据以提高传输速度,而且压缩还可以显著减少驱动器上的存储空间。但是,我有一些疑问:
如果为了节省空间而在设备上压缩这些 .csv 文件,那么当需要再次访问这些文件时,是否会显著增加时间或 CPU 使用率? 是否有更快的压缩方法(如 gunzip)可以压缩这些文件?
如果文件在 NAS 上被压缩,那么它们是否会被运行 Windows、Linux Mint 和 Android 的设备作为网络压缩/解压缩的一部分解压缩接收,或者它们是否会被接收为需要处理的压缩文件?
J4105 CPU 具有硬件加速编码。这是否可以用来提高正在访问的文件的压缩/解压缩速度?
答案1
这里有很多问题需要解开——首先回答所问的问题——
这取决于压缩类型和级别。无论如何,在小文件上都不会明显。这可能会对典型的大文件产生全面的负面影响。
不清楚您打算如何实现压缩。如果您天真地使用 bzip/bzip,那么它将非常不切实际,并且会向客户端显示压缩文件。下面将详细介绍这一点。
不太可能。您需要找到/创建一个可以利用这些功能的压缩程序 - 但这些功能不是为此目的而设计的(它们是用于处理视频的,这完全不同,而且首先,通常是有损的。
评论/想法/建议
我会谨慎对待压缩 - 它会增加复杂性(特别是如果您处于潜在的数据丢失情况)。大多数文件要么太小而不值得关注,要么已经压缩。硬盘很便宜。
如果使用压缩,请查看在文件系统级别起作用或作为虚拟文件系统呈现的机制 - 这样就可以无缝衔接。显然 btrfs 可以做到这一点。
您可能想看看静态加密。LUKS 可以使用 AES-NI 指令(即大多数 CPU 上的 CPU 硬件,包括 J4105),因此对性能的影响很小。如果您的硬盘出现故障,如果您想 RMA 或丢弃驱动器,知道您的数据不可读会很有用。您需要一种在启动时提供密钥的机制。我已经开始使用留在机器中的 USB 密钥(确保它已备份)。
您没有提到 RAID。如果您想要可靠性,则需要 RAID1 或 10。不要乱用 RAID0、5 或 6。此外,RAID 不是备份。另外,请确保您监控 RAID 阵列状态。
您没有提到磁盘管理。由于您的系统没有配备 ecc 内存,因此请避免使用 ZFS,并确保使用 LVM。
看看 Owncloud/Next cloud - 它提供类似 Dropbox 的跨平台功能,并且可以托管在您的 NAS 上。