Disks

RouterOS 如何检测、格式化和管理磁盘与分区:槽位名称、自动挂载、挂载点、分区、交换空间、内存文件夹、文件系统检查和性能测试。

磁盘

Disks CLI 参考

RouterOS 会检测连接到路由器的存储驱动器(USB、SATA、NVMe 和 microSD 驱动器),并在启动时或插入后自动挂载。您可以根据路由器支持的能力使用任意数量的驱动器,例如用于 User Manager 数据库、Web 代理缓存、容器存储或日志文件。

本页介绍驱动器本身:如何检测、格式化和管理。网络存储协议(iSCSI、NFS、SMB、NVMe over TCP)、RAID 和高级文件系统属于 Storage 软件包,并在 Storage 章节中介绍。

信息

Storage 软件包增加了磁盘监控、RAID、rsync、iSCSI、NVMe over TCP、NFS、SMB 客户端以及 Btrfs 和 XFS 文件系统。详情请参阅 Storage 章节。 危险

从 RouterOS 设备物理移除磁盘前,务必先执行 /disk/eject,否则可能丢失数据。

磁盘的检测方式

/disk 菜单列出所有受支持且工作正常的已连接存储设备,包括空的驱动器槽位。每个驱动器都会根据所连接的接口和编号获得槽位名称,例如 usb1、sata1 或 nvme1。

[admin@MikroTik] > /disk/print proplist=slot,model,interface,size,fs where slot=nvme9
Flags: B - BLOCK-DEVICE
Columns: SLOT, MODEL, INTERFACE, SIZE, FS
#   SLOT   MODEL        INTERFACE                   SIZE  FS
0 B nvme9  TS1TUTE210T  PCIe 2x8 GT/s  1 024 209 543 168  -

print 输出中的关键标志:

  • B - BLOCK-DEVICE 标记可存储数据的设备,因此可以格式化和使用。没有该标志的设备(例如 PCIe 桥)仅描述磁盘布局。
  • E - EMPTY 标记空槽位。
  • M - MOUNTED 标记文件系统已挂载的磁盘或分区。

完整的标志列表请参阅 Disks CLI 参考。

具有受支持文件系统和分区表的驱动器会自动挂载并出现在 /file 中。要确认驱动器可用,请在连接后检查它是否出现在 /file 中。

格式化磁盘

新驱动器的第一项操作是格式化。要格式化磁盘,请选择文件系统并使用槽位名称运行 /disk/format。RouterOS 会请求确认,然后格式化驱动器并自动挂载:

[admin@MikroTik] > /disk/format nvme9 file-system=ext4
nvme9: file-system: ext4
nvme9: mke2fs -t ext4 -L nvme9-fs /dev/nvme0n1
...
nvme9: Creating journal (262144 blocks): done
nvme9: Writing superblocks and filesystem accounting information: done
nvme9: format done

未指定标签时,RouterOS 会将文件系统标记为 <slot>-fs,因此 nvme9 的标签是 nvme9-fs。文件系统选项:

  • ext4:大多数场景的默认选择。支持多个分区和日志,速度快。
  • fat32 和 exfat:几乎任何设备都能读取,例如相机或 Android 手机。fat32 有 4 GB 文件大小限制。
  • btrfs 和 xfs:需要 Storage 软件包的高级文件系统。请参阅 Btrfs。
  • discard 和 discard-secure:丢弃驱动器的所有块,不写入文件系统。
  • wipe 和 wipe-quick:移除文件系统和所有数据。wipe 会覆写数据使其无法恢复;wipe-quick 仅移除文件系统。

格式化会销毁目标上的所有数据。对于文件系统部分占用的磁盘,可使用 file-system=wipe-quick 快速移除。

格式化后,驱动器会自动挂载:

[admin@MikroTik] > /disk/print where slot=nvme9
Flags: B - BLOCK-DEVICE; M - MOUNTED
Columns: SLOT, MOUNT-POINT, MODEL, INTERFACE, SIZE, FS
#    SLOT   MOUNT-POINT  MODEL        INTERFACE                   SIZE  FS
0 BM nvme9  nvme9        TS1TUTE210T  PCIe 2x8 GT/s  1 024 209 543 168  ext4
[admin@MikroTik] > /file/print where name~"nvme9"
Columns: NAME, TYPE, LAST-MODIFIED
# NAME              TYPE       LAST-MODIFIED
0 nvme9             disk       2026-09-25 11:47:05
1 nvme9/lost+found  directory  2026-09-25 11:47:05

挂载点

已挂载的文件系统可通过其挂载点访问,挂载点也是 /file 中使用的路径前缀,以及其他功能引用文件时的路径前缀。默认情况下挂载点就是槽位名称,因此 nvme1 上的文件以 nvme1/... 表示。

如果同一驱动器在不同启动之间可能位于不同槽位(例如在多盘位机箱中),请使用 mount-point-template 为其指定稳定的挂载点。模板可以组合以下变量:

  • [slot]
  • [model]
  • [serial]
  • [fw-version]
  • [fs-label]
  • [fs-uuid]
  • [fs]

例如,按序列号挂载驱动器:

/disk/set nvme1 mount-point-template="[serial]"

变量可以组合,例如 mount-point-template="[model]-[fs]"。空模板会被拒绝。/disk/settings 中的 default-mount-point-template 设置会将该模板应用于每个新磁盘和分区。

分区

要将驱动器划分为多个分区,请先在不使用分区表的情况下格式化,然后添加分区。RouterOS 将分区信息保存在 GUID 分区表(GPT)中。

/disk/format nvme9 file-system=ext4
/disk/add type=partition parent=nvme9 partition-size=4G
[admin@MikroTik] > /disk/print where slot~"nvme9"
Flags: B - BLOCK-DEVICE; g - GUID-PARTITION-TABLE, p - PARTITION
Columns: SLOT, MODEL, INTERFACE, SIZE, FS
#    SLOT         MODEL        INTERFACE                   SIZE  FS
0 Bg nvme9        TS1TUTE210T  PCIe 2x8 GT/s  1 024 209 543 168  -
1 Bp nvme9-part1  TS1TUTE210T                     4 000 000 000  -

每个分区都会从父设备派生获得自己的槽位名称:nvme9 的第一个分区是 nvme9-part1。g - GUID-PARTITION-TABLE 标志标记父设备,p - PARTITION 标志标记分区。

  • 不指定 partition-size 时,分区会使用驱动器上的所有剩余空间。
  • 使用 partition-offset 以字节为单位设置分区起始位置。
  • 分区的使用方式与磁盘相同:格式化、挂载,并使用其自身的槽位名称管理。
  • /disk/format 中的 mbr-partition-table=yes 会改为写入 MBR 分区表;仅在目标系统不接受 GPT 表时使用。

交换空间

信息

交换空间需要 container 软件包。 交换空间保留给容器,使容器能够使用超过路由器物理内存的内存。交换空间可以是整个分区或一个文件。交换空间大小限制为路由器可用 RAM 的 10 倍。

交换分区会将整个磁盘或分区专用于交换,性能优于交换文件:

/disk/set nvme9-part1 swap=yes

交换文件位于现有文件系统上,例如 Btrfs 磁盘,并仅占用其大小所指定的空间:

/disk/add type=file file-path=nvme9-part1/swapfile file-size=512M swap=yes

交换文件会在 /disk 中显示,并带有 S - SWAP-ENABLED 标志:

[admin@MikroTik] > /disk/print where slot~"nvme9"
Flags: B - BLOCK-DEVICE; M - MOUNTED, S - SWAP-ENABLED
       g - GUID-PARTITION-TABLE, p - PARTITION
Columns: SLOT, MOUNT-POINT, SIZE, FS, SWAP
#     SLOT                       MOUNT-POINT               SIZE  FS    SWAP
0 B g nvme9                                   1 024 209 543 168  -     no
1 BMp nvme9-part1                nvme9-part1      4 000 000 000  ext4  no
2  S  file-nvme9-part1-swapfile                     536 866 816  -     yes

内存文件夹

要将文件保存在内存中,请添加 tmpfs 文件夹。路由器重启或断电后,其内容会被清空。

/disk/add type=tmpfs tmpfs-max-size=100M

该文件夹会作为磁盘条目出现在 /file 中,例如 tmp1。tmpfs-max-size 限制该文件夹可以使用的 RAM 大小。在存储空间有限的设备上,或对于重启后必须清除的数据,可使用内存文件夹。关于大小限制、共享方式以及重启后的行为,请参阅 Tmpfs。

挂载镜像

RouterOS 也可以直接挂载 .iso 和 .squashfs 镜像。要挂载镜像,请使用以下命令:

/disk/add type=file file-path=disk1/mycopy.iso

请务必将 disk1/mycopy.iso 改为镜像所在的实际路径。

磁盘日志

配置磁盘日志记录时,请务必手动创建用于存储日志文件的目录,因为这种情况下不存在的目录不会自动创建。

[admin@MikroTik] >  /system/logging/action/set disk disk-file-name=disk1/log

日志文件会出现在 /file 中您创建的目录下:

[admin@MikroTik] >  /file/print where name~"disk1/log"
 # NAME                                              TYPE                             SIZE CREATION-TIME
 0 disk1/log                                        directory                             2015-07-03 12:44:09
 1 disk1/log/syslog.0.txt                           .txt file                         160 2015-07-03 12:44:11

说明

防火墙、Web 代理等日志主题往往会在系统 NAND 磁盘上保存大量日志或频繁写入日志,从而加速其磨损。此时请使用外接存储或远程日志,或将数据保存到内存文件夹。

磁盘上的 Web 代理缓存

Web 代理将其缓存保存在磁盘上,通常是 USB 驱动器。在 IP -> Proxy 下(即 /ip/proxy 的 cache-path 设置)设置缓存路径后,Web 代理存储会自动创建在 /file 中。如果使用不存在的目录路径,附加的子目录也会自动创建:

[admin@MikroTik] >  /ip/proxy/set cache-path=usb1/cache-n-db/proxy/
[admin@MikroTik] >  /file/print
 # NAME                                              TYPE                             SIZE CREATION-TIME
 0 skins                                             directory                             2015-03-02 18:56:23
 1 sys-note.txt                                      .txt file                        23   2015-07-03 11:40:48
 2 usb1                                             disk                                  2015-07-03 11:35:05
 3 usb1/lost+found                                  directory                             2015-07-03 11:34:56
 4 usb1/cache-n-db                                  directory                             2015-07-03 11:41:54
 5 usb1/cache-n-db/proxy                            web-proxy store                       2015-07-03 11:42:09

缓存配置请参阅 Web 代理。

检查与修复

/disk/check 和 /disk/repair 会对驱动器执行文件系统检查,相当于 fsck/e2fsck。它们适用于 ext4、Btrfs 和 XFS。仍在使用中的文件系统无法检查:

/disk/check nvme9-part1
Columns: OUTPUT
OUTPUT
could not unmount, stop using it first

当分区上的交换文件使其保持占用时也会发生这种情况,请在检查分区前移除交换项。先卸载文件系统:

/disk/set nvme9-part1 mount-filesystem=no

check 会报告错误而不做任何更改:

/disk/check nvme9-part1
Columns: OUTPUT
OUTPUT
e2fsck 1.46.5 (30-Dec-2021)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
nvme9-part1-fs: 12/244320 files (0.0% non-contiguous), 166617/976562 blocks

repair 会修复发现的错误:

/disk/repair nvme9-part1
Columns: OUTPUT
OUTPUT
e2fsck 1.46.5 (30-Dec-2021)
nvme9-part1-fs: clean, 12/244320 files, 166617/976562 blocks

测试磁盘性能

/disk/test 测量驱动器的持续吞吐量和 IOPS。测试在后台运行,每完成一个块打印一行,并输出汇总结果的 TOT 行。

/disk/test disk=nvme9-part2 direction=read pattern=sequential type=device block-size=4K duration=20
Columns: SEQ, RATE, IOPS, BYTES, DISK, THREAD, TYPE, PATTERN, DIR, BSIZE, STATE
  ...  11.7Gbps  359 651  1404.9MiB  nvme9-part2  0  device  sequential  read  4096
  ...  11.8Gbps  360 192  1407.0MiB  nvme9-part2  0  device  sequential  read  4096
R TOT  11.8Gbps  360 676  26.1GiB    nvme9-part2  0  device  sequential  read  4096
  • direction=read 不会更改驱动器内容,可在已挂载的文件系统上运行。
  • direction=write 会销毁目标上的所有数据;仅在准备清空的驱动器上运行写入测试。
  • 为测试指定 duration 使其自行停止;不指定时会一直运行直到被停止。
  • 新测试会先准备一段时间,state 列会显示 clear caches,直到开始产生数值。

危险

磁盘性能测试可能会缓慢降低磁盘健康度。

写入操作会销毁所运行驱动器上的所有数据。

监控流量与计数器

/disk/monitor-traffic 显示驱动器的实时活动:I/O 操作、传输字节数和速度,包括总计值和每秒值:

/disk/monitor-traffic nvme9-part2 once
                  slot:    nvme9-part2
              read-ops:        113 229
   read-ops-per-second:              0
            read-bytes: 29 668 814 848
             read-rate:           0bps
           read-merges:              0
             read-time:       48s149ms
             write-ops:              0

/disk/reset-counters 会将这些计数器(包括错误计数器)重置为零。

弹出与扫描

移除驱动器前请先弹出,以免丢失数据:

/disk/eject nvme9

已弹出的驱动器会被卸载,其槽位会显示 E - EMPTY 标志,直到驱动器被移除。/disk/scan 会重新检测无需重启即插入或移除的驱动器,并在重新连接后恢复驱动器。

/disk/trim 会丢弃已挂载文件系统中未使用的块(相当于 fstrim),以免 SSD 写入性能下降。USB 驱动器不支持 TRIM,部分 NVMe 硬盘盒也不支持。

S.M.A.R.T. 驱动器健康

使用 S.M.A.R.T. 进行驱动器健康监控,可读取支持该功能的驱动器诊断信息,例如温度、使用情况和错误计数器。请参阅 S.M.A.R.T. 信息。

相关内容