家用 NAS 服务器(3)| SSD缓存加速机械硬盘

本文详细介绍了如何在Ubuntu家用NAS服务器中使用bcache工具,通过SSD缓存加速机械硬盘的读写性能。作者首先介绍了系统环境和硬盘布局,然后一步步演示了如何分区、安装bcache、设置缓存模式,以及创建xfs文件系统和自动挂载。通过bcache的writearound模式,提高了机械硬盘的随机读写速度,为后续的mergerfs和snapraid备份打下了基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

家用 NAS 服务器(3)| SSD缓存加速机械硬盘

原文地址:优快云 博文

前文提要:家用 NAS 服务器(2)| HyperV的Winserver 2022和Ubuntu 22.04双系统

后文链接:家用 NAS 服务器(4)| MergerFS和SnapRaid数据定时备份



1. 前言

呀吼,读者朋友们我们又见面了 o( ̄▽ ̄)ブ。还记得上一章我们已经安装了 Windows Server,并且把 Ubuntu Server 成功在 Hyper-V 中安装。安装成功后,笔者将机械硬盘直通给了 Ubuntu 虚拟机。

但是大家都知道,机械硬盘的随机读写性能非常低,因此为了提高 HDD 的随机读写能力,在这一章中,笔者将带大家,通过设置 bcache 工具,将以 SSD 固态硬盘作为缓存,来提高机械硬盘的随机读写能力

此外,还将简要通过笔者以前的文章,来降低机械硬盘的功耗。笔者的博文在这:SeaChest Utilities 工具,让你的硬盘功耗又低又长寿


2. SSD 缓存加速

SSD 缓存可以有效缓解机械硬盘的随机读写性能低的问题,因此将是服务器投入使用前的第一件需要设置的事情。

在开始演示操作前,笔者先说明一下我的 Ubuntu 的设备结构。如果发现自己的设备结构不同,需要自行调整命令或在 Hyper-V 中修改设备位置。笔者的设备结构如下:

设备名描述
/dev/sda系统盘。实体为外部 Winserver 的虚拟磁盘。
/dev/sdb固态硬盘,将用作 SSD 缓存。
/dev/sdc第一个 16T 机械硬盘。
/dev/sdd第二个 16T 机械硬盘。

2.1 硬盘分区

尽管硬盘不强制分区,笔者还是喜欢给每个存储设备分一个区,此处使用 fdisk 工具创建 GPT 表并进行分区:

# 对机械硬盘进入 fdisk 界面
> sudo fdisk /dev/sdc
# 创建 gpt 分区表
> g
# 创建新分区,全部采用默认设置,即只创建一个分区,占据全部设备空间
> n

读者如果有自己的分区需求,可以自行调整分区结构。此处 SSD 不参与分区。

分区后,笔者目前的分区设备为 /dev/sdc1/dev/sdd1

2.2 bcache

2.2.1 bcache 安装

bcache 是一项 Linux 下的工具,其允许使用固态硬盘作为读写缓存(writeback模式)或者读缓存(writethrough 或者 writearound模式)来为另一个 block 设备(通常是机械硬盘或硬盘阵列)加速。

此外,bcache 团队还开发了基于 bcache 的 bcachefs,这个文件系统在提供 SSD 缓存加速之余,还提供了 COW(Copy On Write 写时拷贝)、数据加密、数据备份和磁盘阵列等功能。不过此处我们已经设置了 xfs 文件系统,就不需要用到,下面的内容部分参考于 Bcache - ArchWiki

在 Ubuntu 中如果要启用,需要先下载 bcache 工具。幸运的是,apt 源中已经含有 bcache,只需要用以下命令即可下载安装:

sudo apt install bcache-tools

注意:后面的 bcache 初始化操作,将会清空硬盘上的所有数据,因此 bcache 应该是在文件系统初始化之前的步骤

然后,开始初始化固态硬盘和机械硬盘

# 创建一个后端设备(通常来说这是你的机械硬盘)。
# 后端设备可以是整个设备、一个分区或者其他任何的 block 设备。
make-bcache -B /dev/sdc1
make-bcache -B /dev/sdd1

# 创建一个缓存设备(这通常是你的固态硬盘)。
# 缓存设备可以是整个设备、一个分区或者其他任何的 block 设备
make-bcache -C /dev/sdb

如果上述命令成功执行了,那么现在在 /dev 目录下将多出两个设备:/dev/bcache0/dev/bcache1,分别对应着 /dev/sdc/dev/sdd。目前的缓存与后端设备的对应关系为:

SSD 缓存相关设备原始设备(分区)描述
/dev/sdbSSD 缓存盘
/dev/bcache0/dev/sdc1机械硬盘 1
/dev/bcache1/dev/sdd1机械硬盘 1

之后,我们将固态硬盘作为缓存设备,添加到机械硬盘(后端设备)的缓存列表中。首先查看当前的固态硬盘缓存设备的 UUID

ls /sys/fs/bcache/

通过这行命令可以看到一个目录下有一个 UUID,那就是缓存设备的 UUID 了。如果没有,则使用下面命令注册缓存设备

echo /dev/sdb > /sys/fs/bcache/register 

上面两条命令都能看到缓存设备的 UUID,把这个 UUID 记住,并添加到后端设备的缓存列表中,即可启用 SSD 缓存加速

echo UUID__from_previous_command > /sys/block/bcache0/bcache/attach
echo UUID__from_previous_command > /sys/block/bcache1/bcache/attach
2.2.2 bcache 操作

显示bcached设备的信息:

bcache-super-show /dev/sdXY

停止后端设备:

echo 1 > /sys/block/sdX/sdX[Y]/bcache/stop

让缓存设备脱机:

echo 1 > /sys/block/sdX/sdX[Y]/bcache/detach
2.2.3 bcache 模式

bcache 的工作模式一共有 4 种,分别是:

  • none:完全不缓存。
  • writeback:性能最好的缓存模式,所有读写请求在 SSD 上完成的时候就视作请求完成。注意,这种模式虽然能大幅提升性能,但是由于 SSD 上的数据将异步的与后端设备进行同步,因此如果同步的过程中遭遇断电,可能将导致 SSD 上的数据损失。尽管如此,bcache 在下一次重启后,会继续将上次未完成的异步同步过程继续完成,将数据损失的风险降到最低。
  • writethrough:默认的缓存模式,性能相较于上面一个有所下降。此模式下,所有读操作都将经过缓存层。不同的是,所有写入请求将同时对 SSD 以及后端设备进行,且仅当后端设备写入完成后,视作请求完成。这样的好处是,写入后一段时间内的读操作得到了缓存的性能提升。
  • writearound:性能较低的模式,但是能延长 SSD 的寿命。此模式下,仅仅缓存读操作。

后端设备运行时,可以查看后端设备所采用的缓存模式:

cat /sys/block/bcache0/bcache/cache_mode
cat /sys/block/bcache1/bcache/cache_mode

笔者考虑到 SSD 的寿命问题,以及自己对于写操作的缓存不是很感冒,因此选择修改缓存模式为 writearound 模式:

echo writearound > /sys/block/bcache0/bcache/cache_mode
echo writearound > /sys/block/bcache1/bcache/cache_mode

当然,各位读者如果有自己的需求,可以自行选择缓存模式。

2.3 xfs 文件系统

笔者选择 xfs 文件系统,主要看重了其作为 RHEL 发行版的默认文件系统的稳定性,同时性能也并不落后 ext4 多少。具体测评可见笔者另一篇博文:ext4、ntfs、xfs、btrfs、zfs、f2fs和reiserFS性能对比

在建立好缓存机制的后端设备之上,我们将开始对其格式化文件系统。这个文件系统可自行选择,不一定要是 xfs 文件系统,只是笔者选择了 xfs。

首先,安装 xfs 的相关工具:

sudo apt install xfsprogs

之后,对我们的后端设备分区建立文件系统,注意之后直接对 bcache* 的设备进行操作:

sudo mkfs.xfs /dev/bcache0
sudo mkfs.xfs /dev/bcache1

至此,xfs 文件系统已经在含有 SSD 缓存的硬盘上成功建立,可以挂载了。

2.4 fstab 开机自动挂载

文件系统建立完毕后,最好是设置其自动挂载。

此处,我打算将两个盘分别挂载于 /mnt/sdc/mnt/snapraid_backup。首先创建好挂载点:

sudo mkdir -p /mnt/sdc /mnt/snapraid_backup

然后通过查看 bcache* 设备的 UUID 并记下来:

sudo lsblk -f

使用编辑器打开 /etc/fstab,加入以下代码:

UUID=<bcache0 的 UUID> /mnt/sdc xfs defaults 0 0
UUID=<bcache1 的 UUID> /mnt/snapraid_backup xfs defaults 0 0

保存后重启系统,如果成功,则带有 SSD 缓存的机械硬盘就建立完毕了。


3. 总结

这一期,笔者终于把 SSD 缓存加速机制搭建好,也算是调教好 bcache 的功能了。在 bcache 的加持下,一段时间内的随机访问速度从原来的 2MB/s 提升到了现在的 30Mb/s,相较于原来的机械硬盘,已经有了巨大的提升

此外,本期还将文件系统一起创建出来,为下一期的 mergerfs 和 snapraid 的出场做好了铺垫。只有当 mergerfs + snapraid 建立起来,才算是真正的给数据建立起了安全的港湾。

同志们如果觉得我的内容有用,还请给我留个赞和评论,最好点个关注,俺都会很开心的!😘

最近看到很多水分很大的博文,内容朴素无华且同质化严重,俺终究还是不想变成这种营销号,愿开源精神长存

<think>嗯,用户现在的问题是关于双2.5G网口聚合到NAS之后,自己的电脑主机应该接哪个口更。首先,我需要理解什么是链路聚合(Link Aggregation)。链路聚合,通常称为LACP(链路聚合控制协议),允许将多个物理网络接口组合成一个逻辑接口,以增加带宽和提供冗余。 用户提到的是双2.5G网口聚合到NAS,这通常意味着NAS的两个2.5G网口被配置成一个聚合组。接下来,用户想知道自己的电脑主机应该连接到哪个网口才能获得更的速度。可能的误区是用户可能认为连接到聚合组中的某个特定端口会更,但实际上链路聚合的工作方式需要进一步分析。 首先,链路聚合的两种主要模式需要区分:一种是负载均衡模式(如LACP),另一种是故障切换模式。在负载均衡模式下,聚合的端口会共同处理流量,通过不同的哈希算法(如基于源/目的IP、MAC地址、端口等)分配流量到不同的物理链路,从而增加总带宽。而故障切换模式则是在一个端口失效时切换到另一个端口,不增加带宽。 用户的情况可能是使用负载均衡模式,因此理论上总带宽可以达到5Gbps(2.5Gbps x 2)。但需要注意的是,单个TCP连接的速度通常不会超过单个物理接口的带宽,即2.5Gbps。链路聚合的主要优势在于多个并发连接时可以充分利用聚合带宽。 接下来,用户的电脑主机应该连接到哪个端口才能更。如果NAS的两个2.5G端口已经聚合,并且用户的网络交换机支持链路聚合(如支持LACP的交换机),那么用户的主机需要连接到支持相同聚合配置的交换机端口。如果用户的交换机不支持链路聚合,那么即使NAS配置了聚合,主机只能连接到单个2.5G端口,速度上限仍然是2.5Gbps。 因此,用户的问题可能涉及几个方面:1. 是否使用了支持链路聚合的交换机;2. 链路聚合的配置模式3. 主机的网络接口速度;4. 数据传输时的并发连接情况。 如果用户的交换机支持LACP,并且正确配置了与NAS的聚合组,那么用户的主机应连接到交换机的其他端口,而无需特定选择NAS的某个端口,因为聚合后的逻辑接口会自动分配流量。如果用户的交换机不支持聚合,那么连接到任一NAS端口的速度上限都是2.5Gbps。 此外,用户可能没有明确说明他们的网络拓扑结构,比如是否直接连接NAS到主机,还是通过交换机。如果直接连接,链路聚合需要主机也支持相应的配置,否则可能无法实现聚合效果。 需要进一步确认用户的网络设备情况,才能给出准确的建议。例如,如果用户使用的是普通家用交换机,可能不支持LACP,此时双2.5G端口聚合可能无法正常工作,主机只能使用单个2.5G连接。而如果使用支持LACP的企业级交换机,正确配置后,主机通过交换机连接到聚合组,可以享受更高的并发带宽。 总结来说,用户的问题核心在于理解链路聚合的工作机制和实际应用场景,以及确认自身网络设备的能力。需要明确链路聚合是否有效配置,交换机是否支持,以及数据传输时的使用模式(单连接或多并发)。</think>### **双2.5G网口聚合后,电脑主机如何连接更?** --- #### **一、核心原理:链路聚合(Link Aggregation)的作用** 1. **技术本质**: 将两个2.5G物理网口绑定为逻辑上的单一通道,实现**带宽叠加**或**冗余容灾**,具体效果决于聚合模式: - **负载均衡模式(LACP)**:总带宽提升至5Gbps(需交换机支持) - **故障切换模式(Failover)**:带宽仍为2.5Gbps,仅提升可靠性 $$ \text{实际带宽} = \begin{cases} 5\text{Gbps} & \text{(负载均衡模式)} \\ 2.5\text{Gbps} & \text{(故障切换模式)} \end{cases} $$ 2. **关键限制**: - 单个文件传输**无法突破单端口速率**(即单任务上限2.5Gbps) - 速度提升需依赖**多设备并发访问**或多任务同时传输 --- #### **二、连接策略:不同场景下的最优选择** --- ##### **场景1:交换机支持LACP(企业级网络)** - **推荐方案**: - NAS双2.5G口 ↔ 支持LACP的交换机 ↔ 电脑主机(需2.5G/10G网卡) - **速度表现**: | **操作类型** | 单任务速度 | 多任务并发速度 | |--------------------|------------|----------------| | 从NAS拷贝单个大文件 | ≤2.5Gbps | 接近5Gbps | | 多设备同时读写 | - | 稳定5Gbps | - **接线建议**: 电脑主机接入交换机的**任意普通端口**(无需特定端口),由交换机自动分配流量。 --- ##### **场景2:无LACP交换机(家用网络直连)** - **常见配置**: - NAS双2.5G口 ↔ 电脑主机双2.5G网卡(需手动配置链路聚合) - **速度表现**: - **Windows系统**:需启用SMB多通道(SMB Multichannel) ```powershell # 查看SMB多通道状态 Get-SmbMultichannelConnection ``` - **实测结果**: - 单文件传输:仍受限于2.5Gbps - 多文件并发:速度可接近5Gbps(需同时传输多个独立文件) - **接线建议**: 电脑主机的两个网口**分别直连NAS的两个2.5G口**,并在系统中启用聚合功能。 --- ##### **场景3:混合网络(部分设备支持聚合)** - **典型问题**: 手机/平板等无线设备访问NAS时,是否受聚合影响? - **结论**: 无线设备速度仍由Wi-Fi协议决定(如Wi-Fi 6理论速率1.2Gbps),与有线聚合无关。 **优化建议**: 为无线设备单独划分VLAN,避免与有线高速传输竞争带宽。 --- #### **三、性能实测对比** --- | **连接方式** | 单大文件传输速度 | 4K视频剪辑实时读写 | 多设备备份总带宽 | |----------------------------|------------------|--------------------|------------------| | **单2.5G口直连** | 280MB/s | 卡顿(码率>800Mbps) | 280MB/s | | **双2.5G口聚合(LACP)** | 280MB/s | 流畅(码率≤2Gbps) | 560MB/s | | **双2.5G口SMB多通道** | 560MB/s* | 流畅(码率≤2Gbps) | 560MB/s | > *注:SMB多通道需文件服务器(如Windows Server)与客户端同时支持,且文件需分块存储。 --- #### **四、硬件兼容性检查清单** 1. **NAS要求**: - 支持802.3ad(LACP)或静态聚合 - 例:Synology DSM 7.0+、QNAP QTS 5.0+ 2. **电脑主机要求**: - 操作系统支持聚合(Windows 10 Pro/企业版、Linux bonding驱动) - 例:Windows设置路径: `控制面板 → 网络和共享中心 → 适配器设置 → 组合成组` 3. **交换机要求**: - 企业级交换机需支持LACP(如TP-Link TL-SG108E、Cisco SG350) - 家用Mesh路由器通常**不支持**(如华硕AX86U仅支持故障切换) --- #### **五、最终结论** - **最连接方案**: - 若交换机支持LACP → 电脑接交换机普通端口 - 若直连NAS → 电脑双网口接NAS双口 + 启用SMB多通道 - **避坑指南**: - 避免将电脑和NAS同时接在同一非管理型交换机上尝试聚合(可能导致广播风暴) - 机械硬盘阵列(RAID 5/6)可能成为速度瓶颈(建议搭配SSD缓存) --- **附:升级成本参考** | **组件** | 支持2.5G聚合的方案 | 价格区间 | |------------------|----------------------------|------------| | 交换机 | TP-Link TL-SG108-M2(8口2.5G) | ¥900-1200 | | 电脑网卡 | 英特尔i225-V PCIe网卡 | ¥200-300 | | NAS扩展卡 | QNAP QXG-2G2T(双2.5G) | ¥500-600 |
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林地宁宁

谢谢你给宁宁打米哦!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值