Host-Managed SMR 硬盘做冷数据归档与备份

分享在 Proxmox VE (PVE) 上使用 16TB Host-Managed SMR(HM-SMR)硬盘做冷数据存储与备份的实践:为何选择 HM-SMR、在 PVE 上使用 btrfs 的配置步骤、fio 顺序写入测试实测速度(约 140–160MB/s)、以及在 PVE 界面添加目录存储的实际操作建议。
2025-12-20
2815 字 · 约 8 分钟阅读

Host-Managed SMR(简称 HM-SMR)是一种特殊类型的硬盘驱动器,采用了叠瓦式磁记录技术(Shingled Magnetic Recording, SMR)。与传统的硬盘不同,HM-SMR 硬盘在写入数据时需要主机(Host)进行管理,以确保数据的正确写入和读取。

这是一块非常硬核的硬盘,胜在价格便宜,缺点是对文件系统和写入模式要求较高,不适合随机写入场景,更多适合归档存储和顺序写入场景,对顺序写入有着极其严格变态的要求。

我购买了一块 16TB 的 HM-SMR 硬盘,价格仅为同价位 CMR 硬盘容量的1/3,主要用于 PVE 硬盘的冷数据存储和备份,接下来分享一下我的使用体验和配置方法。

PVE 原生支持 Zone 写入的文件系统,由于这块盘不支持随机写入,不能用 ext4 或 xfs(除非套一层 dm-zoned,但那个性能开销大且麻烦)。直接用 btrfs:

# -d single -m single 表示数据和元数据都用单盘模式
# 系统会自动检测到这是 Zoned 设备并开启 Zoned 模式
mkfs.btrfs -d single -m single -f /dev/sdd

挂在到 /mnt/smr_backup

mkdir -p /mnt/smr_backup
# 查看 UUID
blkid /dev/sdd
# 编辑 fstab
nano /etc/fstab
# 添加一行 (替换你的 UUID)
UUID=你的UUID值  /mnt/smr_backup  btrfs  defaults,nofail  0  0
# 挂载
systemctl daemon-reload
mount -a

可以测试一下写入速度,顺序写入速度非常不错:

apt install fio -y

fio --name=write_test --filename=/mnt/smr_backup/testfile --size=5G --bs=1M --rw=write --direct=1 --ioengine=io_uring

我的测试结果大概在 140-160MB/s 左右,完全满足备份需求,如下:

root@pve:/mnt # fio --name=write_test --filename=/mnt/smr_backup/testfile --size=5G --bs=1M --rw=write --direct=1 --ioengine=io_uring
write_test: (g=0): rw=write, bs=(R) 1024KiB-1024KiB, (W) 1024KiB-1024KiB, (T) 1024KiB-1024KiB, ioengine=io_uring, iodepth=1
fio-3.39
Starting 1 process
write_test: Laying out IO file (1 file / 5120MiB)
Jobs: 1 (f=1): [W(1)][100.0%][w=132MiB/s][w=132 IOPS][eta 00m:00s]
write_test: (groupid=0, jobs=1): err= 0: pid=8044: Sun Dec 21 00:42:57 2025
  write: IOPS=145, BW=146MiB/s (153MB/s)(5120MiB/35185msec); 0 zone resets
    slat (nsec): min=17042, max=62309, avg=29487.62, stdev=4883.18
    clat (msec): min=3, max=118, avg= 6.84, stdev= 1.96
     lat (msec): min=3, max=118, avg= 6.87, stdev= 1.96
    clat percentiles (msec):
     |  1.00th=[    6],  5.00th=[    6], 10.00th=[    6], 20.00th=[    7],
     | 30.00th=[    7], 40.00th=[    7], 50.00th=[    7], 60.00th=[    7],
     | 70.00th=[    8], 80.00th=[    8], 90.00th=[    8], 95.00th=[    8],
     | 99.00th=[    8], 99.50th=[    9], 99.90th=[   32], 99.95th=[   36],
     | 99.99th=[  120]
   bw (  KiB/s): min=98304, max=172032, per=100.00%, avg=149123.66, stdev=9832.95, samples=70
   iops        : min=   96, max=  168, avg=145.63, stdev= 9.60, samples=70
  lat (msec)   : 4=0.47%, 10=99.10%, 20=0.27%, 50=0.14%, 250=0.02%
  cpu          : usr=0.48%, sys=0.26%, ctx=5120, majf=0, minf=8
  IO depths    : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued rwts: total=0,5120,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=1

Run status group 0 (all jobs):
  WRITE: bw=146MiB/s (153MB/s), 146MiB/s-146MiB/s (153MB/s-153MB/s), io=5120MiB (5369MB), run=35185-35185msec

接着在 PVE 界面添加存储,选择目录类型,路径选择 /mnt/smr_backup 即可,如下:

配置完成后,可以直接在 PVE 界面使用这块 HM-SMR 硬盘进行虚拟机和容器的备份存储,享受大容量低成本存储的优势。

这个写入是完全安全的,vzdump 备份本身是顺序写入的场景,非常适合 HM-SMR 硬盘使用。

留言

发表留言