Disks
RouterOS 如何检测、格式化和管理磁盘与分区:槽位名称、自动挂载、挂载点、分区、交换空间、内存文件夹、文件系统检查和性能测试。
磁盘
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. 信息。
相关内容
- Storage:RAID、网络存储协议和高级文件系统。
- Containers:使用磁盘空间存储镜像和交换空间。
- S.M.A.R.T. 信息:驱动器健康监控。
- Disks CLI 参考:
/disk的每条命令和参数。