中文 English

别被“飞牛盘 / Btrfs盘”骗了:超低价硬盘背后的 SMR 坑

发布时间: 2026-07-09
NAS 硬盘 SMR CMR Btrfs 飞牛 存储 消费避坑

先说结论

机械硬盘不是只看容量和价格。CMR 像正常车道,随机写入比较稳定;SMR 像屋顶瓦片,一层压着一层,容量更高,但改一小块数据时可能要重写一整片区域。更麻烦的是,SMR 还分 硬盘自己管理的 SMR主机必须配合管理的 SMR。最近 PDD 上一些超低价大容量盘被包装成“飞牛盘”“Btrfs盘”,听起来像 NAS 神盘,实际很可能是 host-managed SMR 企业退役盘。它不是完全不能用,而是非常挑系统、挑文件系统、挑写入模式。普通 NAS、Windows 桌面、黑群晖、ZFS/RAID 混用场景,基本不推荐碰。

我的购买建议很粗暴:看不到准确型号,不买;查不到厂商 datasheet,不买;Linux 下 queue/zoned 显示 host-managed,普通用户不买;卖家只强调 Btrfs/飞牛/低价,却不说 SMR 类型,不买。

AI 生成封面:CMR 和 SMR 磁道对比。

图 1:AI 生成封面。CMR 和 SMR 的差别,不是“新旧技术”这么简单,而是写入规则完全不同。

一、为什么这事最近突然值得写

如果你最近刷到过特别便宜的大容量机械硬盘,尤其是标题里写着“飞牛盘”“Btrfs盘”“NAS 仓库盘”“超大容量企业盘”的那种,大概率会心动。几百块买十几 TB、二十 TB,看起来像捡漏。

但这里面有一个非常隐蔽的坑:有些盘不是传统 CMR,也不是普通消费者以前遇到的那种“硬盘自己兜底”的 SMR,而是 host-managed SMR,中文可以叫“基于主机管理的 SMR”或者“主机管理型 SMR”。它要求操作系统、文件系统、应用写入方式一起配合,按照 zone 顺序写。你把它当普通 SATA 盘塞进 NAS 里,它可能不是立刻爆炸,而是出现更讨厌的症状:初始化慢、重建慢、随机写入卡死、阵列同步像便秘、某些系统直接不认盘,或者一开始能用,后面空间回收和碎片一多就越来越难受。

这类盘被叫成“Btrfs盘”,是因为 Btrfs 确实有 zoned mode,能在一定条件下支持 zoned block device。但这句话被拿来当营销话术时,很容易误导消费者:Btrfs 能支持,不等于你的 NAS、你的内核、你的工具链、你的使用习惯都已经支持。

打个比方:一辆手动挡卡车可以拉很多货,不代表每个拿 C2 驾照的人都能把它开进地下车库。车是好车,但你不该把“便宜大车”理解成“人人可用的家用车”。

CMR 和 SMR 磁道区别示意图。

图 2:CMR 像一条条留了缝的车道;SMR 像屋顶瓦片叠在一起。容量更密,但局部修改会牵连更多区域。

二、CMR 和 SMR 到底差在哪

CMR 是 Conventional Magnetic Recording,传统磁记录。可以粗略理解成每条磁道之间留一点安全距离。硬盘磁头写入时,不容易影响旁边的磁道。好处是随机写入比较直观:我要改这一块,就改这一块,代价相对可预测。

SMR 是 Shingled Magnetic Recording,叠瓦式磁记录。它把磁道像屋顶瓦片一样重叠起来,提高单位面积能存的数据量。厂商能在同样盘片数量、同样机械结构下做出更高容量,成本也更有吸引力。问题是,瓦片一旦叠起来,底下一片不能随便单独改。你要改中间某一块,可能会影响它上面盖着的一串瓦片,于是硬盘或主机需要把一整个 zone 重新整理。

这个概念小学生也能听懂:CMR 像每个同学都有独立课桌,换一本书只动自己的桌面;SMR 像大家把书本层层压在一起,最下面那本也能拿,但拿完以后要把上面的书重新摆好。书架看起来更省空间,整理成本却被藏起来了。

所以,SMR 不是“假硬盘”,也不是天然垃圾。它适合大量顺序写、少量随机改、软件栈知道自己在做什么的场景,比如冷数据归档、对象存储、某些数据中心顺序写入管线。它不适合被伪装成“随便插、随便用、随便组阵列”的普通盘。

三、SMR 还分三种:真正要警惕的是 host-managed

很多人讨论 SMR 时,只说“SMR 不好”。这句话太粗糙。SMR 至少要分三类看。

第一类是 drive-managed SMR,也就是硬盘固件自己管理。主机以为它是一块普通盘,随机写也照常发给硬盘;硬盘内部再用缓存、整理、垃圾回收来掩盖叠瓦限制。这类盘的兼容性最好,但在持续随机写、缓存耗尽、阵列重建时可能性能断崖。

第二类是 host-aware SMR。它既能兼容普通块设备,又能把 zone 控制能力暴露给懂它的软件。懂的人可以优化,不懂的人也能勉强用。

第三类是 host-managed SMR。这是本文重点。它不再假装自己是普通盘,而是要求主机按 zone 规则写。Zoned Storage 文档说得很直白:host-managed 模型为了可预测性能和主机层面的 zone 控制,只适合顺序写工作负载,并且需要修改主机软件。Western Digital 的 Ultrastar DC HC650 datasheet 也写得很清楚:host-managed SMR 面向数据中心最高容量,SMR 盘专门用于顺序写环境,并且需要应用层改变以调用 Linux 库来顺序化写入。

SMR 三种控制模型示意图。

图 3:SMR 最大的区别不是“叠不叠瓦”,而是谁负责管理叠瓦带来的顺序写约束。

真实截图:Zoned Storage 官方文档解释 zoned device 的顺序写约束。

图 4:真实截图。Zoned Storage 文档把 zoned device 的核心约束说清楚了:zone 内必须顺序写,不能像普通盘那样随便原地覆盖。

真实截图:WD 支持页面说明如何判断内部盘使用 CMR 还是 SMR。

图 5:真实截图。WD 官方支持页面建议通过标签和产品数据表判断 CMR/SMR,而不是只看店铺标题。

真实截图:WD Ultrastar DC HC650 datasheet 中的 host-managed SMR 说明。

图 6:真实截图。HC650 这类 host-managed SMR 盘本来就是面向顺序写数据中心场景,不是普通家用 NAS 兼容盘。

四、“飞牛盘 / Btrfs盘”的话术为什么危险

我不建议把所有低价盘一棍子打死。企业盘退役、渠道清仓、保修缩水、通电时间高,这些都可能让价格下降。问题在于,如果卖家把一块 host-managed SMR 盘包装成“飞牛盘 / Btrfs盘”,却不主动解释它和普通 CMR 盘的差异,那消费者就很容易买错。

“飞牛盘”这个词本身不是技术规格。它更像“适合某个 NAS 系统玩家折腾”的二级市场标签。Btrfs 也不是万能护身符。Btrfs zoned mode 的存在,说明某些 Linux + Btrfs 组合可以支持 zoned device;但这不代表你的系统镜像、内核版本、btrfs-progs、RAID 方案、备份软件、Docker 数据目录、下载器缓存、虚拟机镜像都适合跑在这块盘上。

更现实的是,普通消费者买硬盘不是为了做存储系统论文。你买 NAS 盘,通常要的是这几件事:

  1. 插上能识别;
  2. 扩容或重建速度正常;
  3. 小文件、照片、Docker、数据库、下载缓存不会把系统拖死;
  4. 出问题时能迁移、能救数据、能换盘;
  5. 保修和来源说得清楚。

host-managed SMR 正好在这些点上都更挑剔。它不是不能用,而是把“管理复杂度”从硬盘固件转移到了主机软件和用户身上。你省下的钱,可能最后变成排障时间、数据迁移时间和焦虑成本。

五、消费者如何区分 SMR 和 CMR

最靠谱的顺序是:先看准确型号,再查厂商 datasheet,再看系统暴露的 zoned 信息,最后才看卖家描述。

不要只看“企业盘”“氦气盘”“NAS盘”“飞牛盘”“Btrfs盘”。这些词都不能证明 CMR。你要让卖家给出清晰的硬盘标签照片,至少能看到型号。然后去厂商官网、官方 PDF、官方支持页面查 recording technology。WD 官方支持页面也明确建议通过标签和产品数据表判断内部硬盘使用 CMR 还是 SMR。

如果盘已经到手,在 Linux 上有一个非常直接的只读检查:

cat /sys/block/sdX/queue/zoned

常见结果大概是:

none
host-aware
host-managed

none 说明系统没有把它识别成 zoned block device。它可能是 CMR,也可能是 drive-managed SMR,因为 drive-managed SMR 会把叠瓦细节藏起来。host-aware 说明它能暴露 zone 能力但仍有兼容性。host-managed 就要格外小心:普通 NAS、桌面系统、传统 RAID、很多虚拟化和容器数据目录都不该默认认为它能正常工作。

如果你还没买,无法运行命令,那就看型号。比如某些 Ultrastar DC HC 系列型号存在 host-managed SMR 版本,厂商资料会写得很清楚。注意,同一品牌同一容量附近可能有 CMR 型号,也可能有 SMR 型号,不能靠“20TB 都一样”“企业盘都一样”来猜。

购买前检查流程。

图 7:别让店铺标题替你判断。准确型号、厂商 datasheet、系统 zoned 信息,比“神盘”两个字可靠得多。

六、一键只读检测脚本

下面脚本只做只读检测,不格式化、不挂载、不写盘、不联网、不安装第三方工具。它们的目标不是 100% 判断所有 SMR/CMR 型号,而是帮你快速拿到“型号、总线、容量、zoned 暴露情况、下一步人工判断建议”。

6.1 Windows 11:PowerShell 只读报告

以普通 PowerShell 运行即可。Windows 内置工具通常不能可靠暴露 host-managed SMR 的 zone 信息,所以它会强调“拿型号去查官方资料”。

$ErrorActionPreference = "Stop"

function Mask-Value([string]$value) {
    if ([string]::IsNullOrWhiteSpace($value)) { return "-" }
    $v = $value.Trim()
    if ($v.Length -le 4) { return "****" }
    return ("****" + $v.Substring($v.Length - 4))
}

Write-Host "HDD CMR/SMR read-only inventory for Windows 11"
Write-Host "This script does not write to disks and does not use network services."
Write-Host ""

$physical = Get-PhysicalDisk | Sort-Object FriendlyName
foreach ($disk in $physical) {
    $sizeTb = [math]::Round($disk.Size / 1TB, 2)
    $serial = Mask-Value ([string]$disk.SerialNumber)
    Write-Host ("Name      : {0}" -f $disk.FriendlyName)
    Write-Host ("Serial    : {0}" -f $serial)
    Write-Host ("MediaType : {0}" -f $disk.MediaType)
    Write-Host ("BusType   : {0}" -f $disk.BusType)
    Write-Host ("Size      : {0} TB" -f $sizeTb)
    Write-Host ("Health    : {0}" -f $disk.HealthStatus)
    Write-Host ("Advice    : Windows built-in tools usually cannot prove CMR/SMR. Check the exact model in the vendor datasheet.")
    Write-Host "----"
}

6.2 Ubuntu 26.04:Bash 只读报告

Ubuntu/Linux 是最适合识别 host-managed SMR 的环境,因为 /sys/block/*/queue/zoned 通常能直接告诉你块设备的 zoned 类型。

#!/usr/bin/env bash
set -euo pipefail

mask() {
  local v="${1:-}"
  if [[ -z "$v" ]]; then printf -- "-"; return; fi
  if ((${#v} <= 4)); then printf -- "****"; return; fi
  printf -- "****%s" "${v: -4}"
}

echo "HDD CMR/SMR read-only inventory for Ubuntu 26.04"
echo "This script does not write to disks and does not use network services."
echo

for sys in /sys/block/sd* /sys/block/hd*; do
  [[ -e "$sys" ]] || continue
  dev="/dev/${sys##*/}"
  [[ -b "$dev" ]] || continue

  rotational="$(cat "$sys/queue/rotational" 2>/dev/null || echo "?")"
  [[ "$rotational" == "1" ]] || continue

  model="$(cat "$sys/device/model" 2>/dev/null | xargs || echo "unknown")"
  vendor="$(cat "$sys/device/vendor" 2>/dev/null | xargs || echo "unknown")"
  zoned="$(cat "$sys/queue/zoned" 2>/dev/null || echo "unknown")"
  size_bytes="$(blockdev --getsize64 "$dev" 2>/dev/null || echo 0)"
  size_tb="$(awk -v b="$size_bytes" 'BEGIN { printf "%.2f", b/1000/1000/1000/1000 }')"
  wwid="$(cat "$sys/device/wwid" 2>/dev/null || true)"

  echo "Device  : $dev"
  echo "Vendor  : $vendor"
  echo "Model   : $model"
  echo "WWID    : $(mask "$wwid")"
  echo "Size    : ${size_tb} TB"
  echo "Zoned   : $zoned"
  case "$zoned" in
    host-managed)
      echo "Advice  : AVOID for normal NAS, desktop, classic RAID, and mixed random-write workloads unless you explicitly planned a zoned stack."
      ;;
    host-aware)
      echo "Advice  : Treat as workload-sensitive. Confirm filesystem, kernel, and application support."
      ;;
    none)
      echo "Advice  : Not exposed as a zoned block device. It may be CMR or drive-managed SMR. Check the exact vendor datasheet."
      ;;
    *)
      echo "Advice  : Unknown zoned status. Check kernel support and vendor documentation."
      ;;
  esac
  echo "----"
done

6.3 macOS 26:Zsh 只读报告

macOS 内置命令通常也不能直接告诉你 CMR/SMR 类型,但可以快速列出磁盘型号,方便你继续查 datasheet。

#!/bin/zsh
set -euo pipefail

echo "HDD CMR/SMR read-only inventory for macOS 26"
echo "This script does not write to disks and does not use network services."
echo

echo "Physical disks:"
diskutil list physical
echo

echo "SATA and USB storage model hints:"
system_profiler SPSerialATADataType SPUSBDataType 2>/dev/null | \
  awk '
    /Model:|Product ID:|Vendor ID:|Medium Type:|BSD Name:|Capacity:/ {
      gsub(/Serial Number: .*/, "Serial Number: ****", $0);
      print
    }
  '

echo
echo "Advice:"
echo "macOS built-in tools usually cannot prove CMR/SMR."
echo "Use the exact model number from the label or this report, then check the vendor datasheet."
echo "If a seller says Btrfs-only, Feiniu-only, or Linux-only, ask whether the drive is host-managed SMR before buying."

七、人工自动执行和 Agent 自动配置

人工自动执行很简单:按你的系统复制上面的脚本,运行,拿到报告。Linux 用户重点看 Zoned 字段。如果是 host-managed,除非你明确知道自己在搭 zoned storage,否则不要拿它做主力 NAS 盘。

如果你习惯让本机 Agent 帮你整理报告,可以把下面这段 prompt 给它。注意要求它只读、不要安装软件、不要格式化磁盘、不要输出完整序列号。

请作为本机只读存储检查助手工作:
1. 根据当前系统选择 Windows 11 / Ubuntu 26.04 / macOS 26 对应脚本。
2. 只允许读取磁盘信息,不允许格式化、挂载、卸载、分区、写入或安装第三方软件。
3. 输出每块机械硬盘的型号、容量、总线、健康状态和 zoned/SMR 判断线索。
4. 序列号、完整计算机名、内网地址必须脱敏。
5. 如果 Linux 显示 host-managed,给出“不推荐普通 NAS/桌面/传统 RAID 使用”的结论。
6. 如果无法判断 CMR/SMR,只输出“需要用准确型号查询厂商 datasheet”,不要编造结论。

八、996 和 965,为什么特别像 SMR 和 CMR

这个类比有点标题党,但非常好懂。

965 像 CMR。每天工作时间和休息时间之间留了边界,系统里有缓冲。你临时改一个安排,通常只影响一小段;人也有恢复空间。它不一定极限压榨每一分钟,但长期稳定、可预测。

996 像 SMR。表面上单位时间产出更高,因为把空隙压掉了,把休息时间挤掉了,看起来“面积利用率”提升。但一旦发生变化,比如需求改了、人生病了、项目返工了,就会发现系统没有缓冲。改一件事,会牵连一串事。最后不是没有成本,而是成本从排班表上转移到了人的身体、情绪和家庭里。

drive-managed SMR 像公司嘴上说“不加班”,但内部靠大家默默消化,短期看不出来,长期会突然卡住。host-managed SMR 像公司直接说:“我们就是高强度排班,但你们每个人必须严格按顺序接活,谁乱插队谁负责。”如果整个组织就是为这种模式设计的,也许能跑;如果你只是普通人买来当家庭 NAS,那就是把复杂度买回家。

996 和 965 对比 SMR/CMR 的类比图。

图 8:SMR 和 996 都不是“凭空提高效率”。它们把缓冲压缩掉,然后要求别的地方承担复杂度。

九、Q&A

Q:SMR 一定不能买吗?

不一定。冷数据、顺序写、明确支持 zoned device 的系统,可以用。问题是它不适合被当成“便宜普通盘”卖给不了解差异的消费者。

Q:Btrfs 支持 zoned mode,是不是就安全了?

不是。Btrfs 支持是一层,内核、工具链、发行版、NAS 系统、应用写入模式、备份和恢复流程都是另一层。不要把“能支持”理解成“随便用”。

Q:queue/zoned 显示 none 就一定是 CMR 吗?

不一定。drive-managed SMR 也可能对主机隐藏叠瓦细节,所以显示 none。要最终判断,仍然要查准确型号和厂商数据表。

Q:卖家说这是企业盘,企业盘不是更好吗?

企业盘只是说明它原本面向企业场景,不代表适合家庭 NAS。数据中心会配套软件、监控、备件和批量迁移流程,普通用户通常没有这些条件。

Q:已经买了 host-managed SMR 怎么办?

不要急着放重要数据。先在 Linux 下确认 queue/zoned,再用空盘做长时间顺序写、随机写、掉电恢复、重建模拟。普通用户更现实的处理方式是退货,或者只把它当可丢失的冷数据实验盘。

十、最后的购买清单

买大容量机械盘之前,按这几条过一遍:

  1. 要准确型号,不要只看容量和标题;
  2. 查厂商 datasheet,不要只看卖家描述;
  3. 看到“飞牛盘 / Btrfs盘 / Linux 专用 / 不支持普通系统”等说法,默认提高警惕;
  4. Linux 到手先看 /sys/block/*/queue/zoned
  5. host-managed 不推荐普通 NAS、桌面、传统 RAID、虚拟机数据盘;
  6. 低价如果来自无保、退役、高通电、特殊写入模型,就不是捡漏,而是在购买风险。

硬盘这东西,便宜几十块、几百块当然香。但真正贵的不是硬盘本身,而是数据、时间和排障心情。CMR 和 SMR 的关系,就像 965 和 996 的关系:一个留缓冲,一个压密度。你可以为了特定目标选择后者,但别在不知道规则的情况下,把它当成普通生活方式。

参考资料