Summary

Sub-menu: /disk

This menu will list all attached storage devices, presuming that they are supported and in working condition. This is especially useful for RouterBOARD devices with SD/CF/USB/SATA/NVMe slots and x86 systems with additional dedicated storage drives - as the built-in storage is quite small, an external drive comes in very handy when you want a big User Manager database, proxy cache or possibly SMB shares on your router.

You can add as many external or secondary drives as you want, and select any number of them for each of the mentioned feature usages. For example, User Manager could be used on 3 disks, one of them would be the active database, and the rest would be backups. You can then add a fourth disk, copy the active data to it - unmount - unplug it - and move to another server, to keep using the actual database. This means migration and backup are made easy!

Disks carry names where they are physically connected.

ROSE-storage - package adds additional enterprise data center functionality to RouterOS.
Current manual page does not include additional features included in
ROSE-storage package.

Always use /disk eject-drive before physically removing any disks from your RouterOS device to prevent data loss!

Properties

PropertyDescription
eject-drive ()Safely unmounts (ejects) drive of your selection by using "slot" that is assigned to it. After issuing this command it can be removed from host device.
format-drive ()Command to initiate disk formatting process. Contains additional properties of its own. Such as "file-system" and "label".
  • select disk (slot) that should be formatted
  • file-system ('exfat', 'ext4', 'fat32' or 'wipe') - Format disk with type ExFAT, FAT32 or EXT4 or securely wipe all data
  • label 
  • mbr-partition-table - make mbr partition table
reset-counters
Resets disk (slot) statistics
monitor-traffic
Check real time disk performance and health stats
test

allows performing performance tests of selected device (Available from RouterOS 7.16)

  • disk - device or devices for test
  • direction - ('read','write') 
  • duration - (int) 
  • pattern - ('random', 'sequential')
  • thread-count - (int)
  • block-size - size of block to be used for testing
  • type - ('device', 'filesystem')
mount-read-only

Sets the mounted disk in read only mode when set to yes

mount-point-template

Sets the mounting point for the file system. It is possible to set the mount point as the following parameters based on the disk:

  • [slot] (default) - sets the mount point as the slot name.
  • [model] - sets the mount point as the device's model name.
  • [serial] - sets the mount point as the device serial
  • [fw-version] - sets the mount point as the device's firmware version.
  • [fs-label] - sets the mount point as the device's file system label.
  • [fs-uuid] - sets the mount point as the device's UUID
  • [fs] - sets the mount point as the device's file system
/disk set nvme1 mount-point-template="[model]"

Additionally, it is possible to combine multiple variables to create a single mount point:

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


Flags

PropertyDescription
X - disabled

Disabled device

E - empty

Empty slot

B - BLOCK-DEVICE

The "B - BLOCK-DEVICE"- Flag means that this device works using blocks for input/output operations. In the context of RouterOS, its distinction is crucial, as it helps determine whether a device is functioning as a data carrier or simply providing information about the disk layout structure. This difference becomes important when considering the extender with the device behind it. If a device is marked with the letter "B", this indicates its ability to be used as storage or memory. In contrast, devices that do not have a "B" mark are designed primarily to understand the structure of the disk.

This allows to quickly recognize the presence of a PCIe or SAS expander, as well as detect the presence of drives in the first expander. In addition, it allows you to estimate the speed of the connection to which each device is connected.

However, the most notable benefit of the "B" flag is its ability to instantly indicate whether a device can be formatted or used for RAID purposes.

M - mountedMounted partition
F - formattingThe device is currently in the formatting process
p - partitionThe device has a partition
f - raid-member-failedThese options are used with the ROSE package.
r - raid-member
c - encrypted
g - guid-partition-table
t - nvme-tcp-export
i - iscsi-export
s - smb-export
n - nfs-export
O - tcg-opal-self-encryption-enabled
o - tcg-opal-self-encryption-supported

Settings

Property
Description
auto-smb-sharing (yes | no; Default: no)Enables dynamic SMB shares when new disk/partition item is added in "/disk"
auto-smb-user (list of strings; Default: ) Default value for smb-sharing/smb-user setting, when new disk/partition item is added in "/disk"
auto-media-share (yes | no; Default: no)Enables media dynamically when new disk/partition item is added in "/disk"
auto-media-interface (list of strings; Default: )Interface that will be used in dynamic instance for ip/media when new disk/partition item is added in "/disk"
default-mount-point-template (string, Default: )Sets the default mount point template for each item added in "/disk"

Notes

With "auto-smb-sharing=yes" and "/ip smb share enabled=auto" SMB server gets enabled when a storage device is physically plugged in

Examples

Formatting attached storage unit - Simple

1. Disk is attached, and already mounted automatically by the system.

[admin@MikroTik] > disk print
Flags: B - BLOCK-DEVICE; M, F - FORMATTING
Columns: SLOT, MODEL, SERIAL, INTERFACE, SIZE, FREE, FS
#    SLOT  MODEL           SERIAL            INTERFACE                  SIZE           FREE  FS
0 BM usb1  USB Flash Disk  FBA0911260071572  USB 2.00 480Mbps  2 004 877 312  1 921 835 008  ext4
[admin@MikroTik] > /file print
 # NAME                        TYPE          SIZE CREATION-TIME
 0 skins                       directory          jan/01/1970 03:00:01
 1 pub                         directory          feb/04/1970 21:31:40
 2 usb1                        disk               mar/07/2022 14:05:16

2. Formatting the disk, in either of two supported file-systems (ext4 or fat32). 

[admin@MikroTik] > /disk format-drive usb1 file-system=ext4 mbr-partition-table=no
  formatted: 100%

3. It's done! Drive is formatted and should be automatically mounted after formatting process is finished. 

Formatting attached storage unit - Detailed

Let us presume that you have added a storage device to your device that is running RouterOS. System will try to automatically mount it and in such case if storage is formatted in a supported file-system and partition record, it will be found in "/files" menu moments after you plugged it in to the host device.

If not, here is what you have to do.

1. Do a quick print of disk menu, to make sure that router sees the attached storage.

[admin@MikroTik] > disk print
Flags: B - BLOCK-DEVICE; M, F - FORMATTING
Columns: SLOT, MODEL, SERIAL, INTERFACE, SIZE, FREE, FS
#    SLOT  MODEL           SERIAL            INTERFACE                  SIZE           FREE  FS
0 BM usb1  USB Flash Disk  FBA0911260071572  USB 2.00 480Mbps  2 004 877 312  1 921 835 008  ext4

We can here see that system sees one storage drive and also that it is formatted with a known file-system type.

When running file menu print-out we also see that is mounted. 

[admin@MikroTik] > file print
 # NAME     TYPE    SIZE CREATION-TIME
 0 usb1     disk         mar/07/2022 14:05:16
 1 skins    directory    jan/01/1970 03:00:01
 2 pub      directory    feb/04/1970 21:31:40


2. To formatting drive - we issue command with previously know id or name(slot) and with desired file-system (ext4 or fat32), we can also assign label to device as I did in this example and make mbr partition table

[admin@MikroTik] > /disk format-drive usb1 file-system=ext4 label=usb-flash mbr-partition-table=yes
  formatted: 100%

Note: In printout, you can see that there is a progress percentage counter in formatting process. For larger storage drives, it might take longer for this process to finish, so be patient.

Creating multiple disk partitions

If multiple GPT partitions are needed format drive without partition table and add them manually:

[admin@MikroTik] > /disk format-drive usb1 file-system=ext4 label=usb-flash mbr-partition-table=no
  formatted: 100%
[admin@MikroTik] > /disk add type=partition parent=usb1 partition-size=200M
[admin@MikroTik] > /disk add type=partition parent=usb1 partition-size=500M
[admin@MikroTik] > /disk add type=partition parent=usb1 slot=usb1-last-partition

Note: Slot (partition or disk name) is assumed automatically, but can be overwritten by using slot parameter.
If partition size is not used all available space will be used from last partition.
To offset partition start "partition-offset" parameter can be used.

Web-Proxy cache configuration example

Enter proxy cache path under IP -> Proxy menu and web proxy store is automatically created in files menu. If a non-existent directory path is used, an additional sub-directory is also created automatically. 

[admin@MikroTik] >  /ip proxy set cache-path=usb1/cache-n-db/proxy/

...

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

Log on disk configuration example

When configuring logging on disk make sure that you create directories in which you want to store the log files manually, as non-existent directories will NOT be automatically created in this case. 

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

...

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

Note: Logging topics such as firewall, web-proxy and some other topics that tend to save a large amount or rapid printing of logs on system NAND disk might cause it to wear out faster, so using some attached storage or remote logging is recommended in this case or save data in RAM folder

Allocate RAM to folder

It is possible to add folders linked to RAM. Folders will be emptied on reboot or power loss.
RAM will be filled up to tmpfs-max-size and if this variable in not provided - up to 1/2 from available RAM.

[admin@MikroTik] >  /disk add type=tmpfs tmpfs-max-size=100M
[admin@MikroTik] > file print 
Columns: NAME, TYPE, SIZE, CREATION-TIME
#  NAME            TYPE       SIZE             CREATION-TIME       
0  tmp1             disk     100 003 840        dec/12/2022 11:01:48

Test disk performance


Disk performance tests may slowly degrade disk health

On write tests all files and file systems on disks will be destroyed


Starting from 7.16 to run disk performance tests. Disks has to be disabled or without mountable file system (unformatted).
Check available disks, if disk is already mounted - disable it.

[admin@MikroTik] > disk print
Flags: B - BLOCK-DEVICE; M - MOUNTED
Columns: SLOT, MODEL, SERIAL, INTERFACE, SIZE, FREE, FS
#    SLOT  MODEL             SERIAL         INTERFACE                    SIZE            FREE  FS
0 BM usb1  JMicron External  DD56419883891  USB 3.10 5000Mbps  64 023 257 088  62 692 188 160  ext4

[admin@MikroTik] > disk disable usb1

[admin@MikroTik] > disk test disk=usb2 pattern=sequential  type=device thread-count=4 block-size=4K direction=write
Columns: SEQ, RATE, IOPS, DISK, TYPE, PATTERN, DIR, BSIZE, THREADS
SEQ  RATE          IOPS  DISK  TYPE    PATTERN     DIR    BSIZE  THREADS
0    1622.5Mbps  49 516  usb2  device  sequential  write   4096        4
1    26.2Mbps       800  usb2  device  sequential  write   4096        4
2    33.0Mbps     1 008  usb2  device  sequential  write   4096        4
3    11.7Mbps       360  usb2  device  sequential  write   4096        4
4    28.5Mbps       872  usb2  device  sequential  write   4096        4
5    34.6Mbps     1 056  usb2  device  sequential  write   4096        4
6    33.8Mbps     1 032  usb2  device  sequential  write   4096        4
TOT  255.7Mbps    7 806  usb2  device  sequential  write   4096        4



Swap space

It is possible to add a swap space to your RouterOS device. This is useful when using containers on RouterOS to be able to run containers that require much more RAM than you RouterOS device has. You can use a disk (or a partition) as a swap space or file as as swap space.

Swap partition

Swap partition requires you to have a disk (or partition) connected to your RouterOS device. All the disk (or partition) will be used as swap space and cannot be used for other purposes. Make sure you a high speed disk for your swap partition. Using a swap partition has a better performance than using a swap file.   |

To use a disk (or partition) as a swap partition, you can use the following command:

/disk set disk1 swap=yes   

Make sure you change `disk1` to your correct disk's name! 

Swap file

Swap file requires you to have a disk that is formatted with a file system, for example, Btrfs. Compared to the swap partition option, the whole disk (or partition) will not be used as swap space, only the swap file's size will be used on your disk (or partition). Using a swap file will have a lower performance than using a swap partition. 

To create a swap file on your existing file system , you can use the following command:

/disk add type=file file-path=disk1/swapfile file-size=1G swap=yes

Make sure you change `disk1` to your correct path, where your disk is mounted. 


Mount images

RouterOS can also mount .iso and .squashfs images directly. To mount an image, use the following command:

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

Make sure you change `disk1/mycopy.iso` to your correct path, where the image is located.

  • No labels