1.\" 2.\" Copyright (c) 2001 Dima Dorfman. 3.\" All rights reserved. 4.\" 5.\" Redistribution and use in source and binary forms, with or without 6.\" modification, are permitted provided that the following conditions 7.\" are met: 8.\" 1. Redistributions of source code must retain the above copyright 9.\" notice, this list of conditions and the following disclaimer. 10.\" 2. Redistributions in binary form must reproduce the above copyright 11.\" notice, this list of conditions and the following disclaimer in the 12.\" documentation and/or other materials provided with the distribution. 13.\" 14.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24.\" SUCH DAMAGE. 25.\" 26.\" $FreeBSD$ 27.\" 28.Dd September 9, 2017 29.Dt MDMFS 8 30.Os 31.Sh NAME 32.Nm mdmfs , 33.Nm mount_mfs 34.Nd configure and mount an in-memory file system using the 35.Xr md 4 36driver or the 37.Xr tmpfs 5 38filesystem 39.Sh SYNOPSIS 40.Nm 41.Op Fl DLlMNnPStTUX 42.Op Fl a Ar maxcontig 43.Op Fl b Ar block-size 44.Op Fl c Ar blocks-per-cylinder-group 45.Op Fl d Ar max-extent-size 46.Op Fl E Ar path-mdconfig 47.Op Fl e Ar maxbpg 48.Op Fl F Ar file 49.Op Fl f Ar frag-size 50.Op Fl i Ar bytes 51.Op Fl m Ar percent-free 52.Op Fl O Ar optimization 53.Op Fl o Ar mount-options 54.Op Fl p Ar permissions 55.Op Fl s Ar size 56.Op Fl T Ar fstype 57.Op Fl v Ar version 58.Op Fl w Ar user : Ns Ar group 59.Ar md-device 60.Ar mount-point 61.Sh DESCRIPTION 62The 63.Nm 64utility is designed to be a work-alike and look-alike of the deprecated 65.Xr mount_mfs 8 . 66The end result is essentially the same, 67but is accomplished in a completely different way. 68Based on 69.Ar md-device , 70the 71.Nm 72utility either creates a 73.Xr tmpfs 5 74filesystem, or it configures an 75.Xr md 4 76disk using 77.Xr mdconfig 8 , 78puts a UFS file system on it (unless 79.Fl P 80was specified) using 81.Xr newfs 8 , 82and mounts it using 83.Xr mount 8 . 84It can handle 85.Xr geom_uzip 4 86compressed disk images, as long as the kernel supports this GEOM class. 87All the command line options are passed to the appropriate program 88at the appropriate stage in order to achieve the desired effect. 89.Pp 90When 91.Ar md-device 92is `auto', 93.Nm 94uses 95.Xr tmpfs 5 96if it is present in the kernel or can be loaded as a module, 97otherwise it falls back to using 98.Xr md 4 99auto-unit as if `md' had been specified. 100.Pp 101When 102.Ar md-device 103is `tmpfs', 104.Nm 105mounts a 106.Xr tmpfs 5 107filesystem, translating the 108.Fl s 109size option, if present, into a `-o size=' mount option. 110Any 111.Fl o 112options on the command line are passed through to the 113.Xr tmpfs 5 114mount. 115Options specific to 116.Xr mdconfig 8 117or 118.Xr newfs 8 119are ignored. 120.Pp 121When 122.Ar md-device 123does not result in 124.Xr tmpfs 5 125being used, then an 126.Xr md 4 127device is configured instead. 128By default, 129.Nm 130creates a swap-based 131.Pq Dv MD_SWAP 132disk with soft-updates enabled 133and mounts it on 134.Ar mount-point . 135It uses the 136.Xr md 4 137device specified by 138.Ar md-device . 139If 140.Ar md-device 141is 142.Ql md 143(no unit number), 144it will use 145.Xr md 4 Ns 's 146auto-unit feature to automatically select an unused device. 147Unless otherwise specified with one of the options below, 148it uses the default arguments to all the helper programs. 149.Pp 150The following options are available. 151Where possible, 152the option letter matches the one used by 153.Xr mount_mfs 8 154for the same thing. 155.Bl -tag -width indent 156.It Fl a Ar maxcontig 157Specify the maximum number of contiguous blocks that will be laid 158out before forcing a rotational delay 159(see the 160.Fl d 161option). 162.It Fl b Ar block-size 163The block size of the file system, in bytes. 164.It Fl c Ar blocks-per-cylinder-group 165The number of blocks per cylinder group in the file system. 166.It Fl D 167If not using auto-unit, 168do not run 169.Xr mdconfig 8 170to try to detach the unit before attaching it. 171.It Fl d Ar max-extent-size 172The file system may choose to store large files using extents. 173This parameter specifies the largest extent size that may be 174used. 175It is presently limited to its default value which is 16 176times the file system blocksize. 177.It Fl E Ar path-mdconfig 178Use 179.Ar path-mdconfig 180as a location of the 181.Xr mdconfig 8 182utility. 183.It Fl e Ar maxbpg 184Indicate the maximum number of blocks any single file can allocate 185out of a cylinder group before it is forced to begin allocating 186blocks from another cylinder group. 187.It Fl F Ar file 188Create a vnode-backed 189.Pq Dv MD_VNODE 190memory disk backed by 191.Ar file . 192.It Fl f Ar frag-size 193The fragment size of the file system in bytes. 194.It Fl i Ar bytes 195Number of bytes per inode. 196.It Fl l 197Enable multilabel MAC on the new file system. 198.It Fl L 199Show the output of the helper programs. 200By default, 201it is sent to 202.Pa /dev/null . 203.It Fl M 204Create a 205.Xr malloc 9 206backed disk 207.Pq Dv MD_MALLOC 208instead of a swap-backed disk. 209.It Fl m Ar percent-free 210The percentage of space reserved for the superuser. 211.It Fl N 212Do not actually run the helper programs. 213This is most useful in conjunction with 214.Fl X . 215.It Fl n 216Do not create a 217.Pa .snap 218directory on the new file system. 219.It Fl O Ar optimization 220Select the optimization preference; 221valid choices are 222.Cm space 223and 224.Cm time , 225which will optimize for minimum space fragmentation and 226minimum time spent allocating blocks, 227respectively. 228.It Fl o Ar mount-options 229Specify the mount options with which to mount the file system. 230See 231.Xr mount 8 232for more information. 233.It Fl P 234Preserve the existing file system; 235do not run 236.Xr newfs 8 . 237This only makes sense if 238.Fl F 239is specified to create a vnode-backed disk. 240.It Fl p Ar permissions 241Set the file (directory) permissions of the mount point 242.Ar mount-point 243to 244.Ar permissions . 245The 246.Ar permissions 247argument can be in any of the mode formats recognized by 248.Xr chmod 1 . 249If symbolic permissions are specified, 250the operation characters 251.Dq + 252and 253.Dq - 254are interpreted relative to the initial permissions of 255.Dq a=rwx . 256.It Fl S 257Do not enable soft-updates on the file system. 258.It Fl s Ar size 259Specify the size of the disk to create. 260This only makes sense if 261.Fl F 262is 263.Em not 264specified. 265That is, 266this will work when the backing storage is some form of 267memory, as opposed to a fixed-size file. 268The size may include the usual SI suffixes (k, m, g, t, p). 269A number without a suffix is interpreted as a count of 512-byte sectors. 270.It Fl t 271Turn on the TRIM enable flag for 272.Xr newfs 8 . 273When used with a file system that issue BIO_DELETE bio requests, 274.Xr md 4 275returns deleted blocks to the system memory pool. 276.It Fl T Ar fstype 277Specify a file system type for a vnode-backed memory disk. 278Any file system supported by 279.Xr mount 8 280command can be specified. 281This option only makes sense when 282.Fl F 283and 284.Fl P 285are used. 286.It Fl U 287Enable soft-updates on the file system. 288This is the default, and is accepted only 289for compatibility. 290It is only really useful to negate the 291.Fl S 292flag, should such a need occur. 293.It Fl v Ar version 294Specify the UFS version number for use on the file system; it may be 295either 296.Dv 1 297or 298.Dv 2 . 299The default is derived from the default of the 300.Xr newfs 8 301command. 302.It Fl w Ar user : Ns Ar group 303Set the owner and group to 304.Ar user 305and 306.Ar group , 307respectively. 308The arguments have the same semantics as with 309.Xr chown 8 , 310but specifying just a 311.Ar user 312or just a 313.Ar group 314is not supported. 315.It Fl X 316Print what command will be run before running it, and 317other assorted debugging information. 318.El 319.Pp 320The 321.Fl F 322and 323.Fl s 324options are passed to 325.Xr mdconfig 8 326as 327.Fl f 328and 329.Fl s , 330respectively. 331The 332.Fl a , b , c , d , e , f , i , m 333and 334.Fl n 335options are passed to 336.Xr newfs 8 337with the same letter. 338The 339.Fl O 340option is passed to 341.Xr newfs 8 342as 343.Fl o . 344The 345.Fl o 346option is passed to 347.Xr mount 8 348with the same letter. 349The 350.Fl T 351option is passed to 352.Xr mount 8 353as 354.Fl t . 355For information on semantics, refer to the documentation of the programs 356that the options are passed to. 357.Sh EXAMPLES 358Create and mount a 32 megabyte swap-backed file system on 359.Pa /tmp : 360.Pp 361.Dl "mdmfs -s 32m md /tmp" 362.Pp 363The same file system created as an entry in 364.Pa /etc/fstab : 365.Pp 366.Dl "md /tmp mfs rw,-s32m 2 0" 367.Pp 368Create and mount a 16 megabyte malloc-backed file system on 369.Pa /tmp 370using the 371.Pa /dev/md1 372device; 373furthermore, 374do not use soft-updates on it and mount it 375.Cm async : 376.Pp 377.Dl "mdmfs -M -S -o async -s 16m md1 /tmp" 378.Pp 379Create and mount a 380.Xr geom_uzip 4 381based compressed disk image: 382.Pp 383.Dl "mdmfs -P -F foo.uzip -oro md.uzip /tmp/" 384.Pp 385Mount the same image, specifying the 386.Pa /dev/md1 387device: 388.Pp 389.Dl "mdmfs -P -F foo.uzip -oro md1.uzip /tmp/" 390.Pp 391Configure a vnode-backed file system and mount its first partition, 392using automatic device numbering: 393.Pp 394.Dl "mdmfs -P -F foo.img mds1a /tmp/" 395.Pp 396Mount a vnode-backed cd9660 file system using automatic device numbering: 397.Pp 398.Dl "mdmfs -T cd9660 -P -F foo.iso md /tmp" 399.Sh COMPATIBILITY 400The 401.Nm 402utility, while designed to be compatible with 403.Xr mount_mfs 8 , 404can be useful by itself. 405Since 406.Xr mount_mfs 8 407had some silly defaults, a 408.Dq compatibility 409mode is provided for the case where bug-to-bug compatibility is desired. 410.Pp 411Compatibility is enabled by starting 412.Nm 413with the name 414.Li mount_mfs 415or 416.Li mfs 417(as returned by 418.Xr getprogname 3 ) . 419In this mode, the following behavior, as done by 420.Xr mount_mfs 8 , 421is duplicated: 422.Bl -bullet -offset indent 423.It 424The file mode of 425.Ar mount-point 426is set by default to 427.Li 01777 428as if 429.Fl p Ar 1777 430was given on the command line. 431.El 432.Sh SEE ALSO 433.Xr md 4 , 434.Xr fstab 5 , 435.Xr tmpfs 5 , 436.Xr mdconfig 8 , 437.Xr mount 8 , 438.Xr newfs 8 439.Sh HISTORY 440The 441.Nm 442utility appeared in 443.Fx 5.0 . 444.Sh AUTHORS 445.An Dima Dorfman 446