19.11. Network, Memory, and File-Backed File Systems
Prev | Chapter 19. Storage | Next

## 19.11. Network, Memory, and File-Backed File Systems

Reorganized and enhanced by Marc Fonvieille.

In addition to physical disks such as floppies, CDs, and hard drives, FreeBSD also supports virtual disks.

These include network file systems such as the Network File System and Coda, memory-based file systems, and file-backed file systems.

According to the FreeBSD version, the tools used for the creation and use of file-backed and memory-based file systems differ.

### Note:

Use devfs(5) to allocate device nodes transparently for the user.

### 19.11.1. File-Backed File System

mdconfig(8) is used to configure and enable memory disks, md(4), under FreeBSD. To use mdconfig(8), md(4) must be first loaded. When using a custom kernel configuration file, ensure it includes this line:

device md

mdconfig(8) supports several types of memory backed virtual disks: memory disks allocated with malloc(9) and memory disks using a file or swap space as backing. One possible use is the mounting of CD images.

To mount an existing file system image:

Example 19.3. Using `mdconfig` to Mount an Existing File System Image
`#` `mdconfig -a -t vnode -f `diskimage` -u `0`` `#` `mount /dev/md`0` `/mnt``

To create a new file system image with mdconfig(8):

Example 19.4. Creating a New File-Backed Disk with `mdconfig`
`#` `dd if=/dev/zero of=`newimage` bs=1k count=`5`k` 5120+0 records in 5120+0 records out `#` `mdconfig -a -t vnode -f `newimage` -u `0`` `#` `bsdlabel -w md`0` auto` `#` `newfs md`0`a` /dev/md0a: 5.0MB (10224 sectors) block size 16384, fragment size 2048 using 4 cylinder groups of 1.25MB, 80 blks, 192 inodes. super-block backups (for fsck -b #) at: 160, 2720, 5280, 7840 `#` `mount /dev/md`0`a `/mnt`` `#` `df `/mnt`` Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/md0a 4710 4 4330 0% /mnt

If unit number is not specified with `-u`, mdconfig(8) uses the md(4) automatic allocation to select an unused device. The name of the allocated unit will be output to stdout, such as `md4`. Refer to mdconfig(8) for more details about.

While mdconfig(8) is useful, it takes several command lines to create a file-backed file system. FreeBSD also comes with mdmfs(8) which automatically configures a md(4) disk using mdconfig(8), puts a UFS file system on it using newfs(8), and mounts it using mount(8). For example, to create and mount the same file system image as above, type the following:

Example 19.5. Configure and Mount a File-Backed Disk with `mdmfs`
`#` `dd if=/dev/zero of=`newimage` bs=1k count=`5`k` 5120+0 records in 5120+0 records out `#` `mdmfs -F `newimage` -s `5`m md`0` `/mnt`` `#` `df `/mnt`` Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/md0 4718 4 4338 0% /mnt

When `md` is used without a unit number, mdmfs(8) uses the md(4) auto-unit feature to automatically select an unused device. For more details about mdmfs(8), refer to its manual page.

### 19.11.2. Memory-Based File System

For a memory-based file system, “swap backing” should normally be used. This does not mean that the memory disk will be swapped out to disk by default, but rather that the memory disk will be allocated from a memory pool which can be swapped out to disk if needed. It is also possible to create memory-based disks which are malloc(9) backed, but using large malloc backed memory disks can result in a system panic if the kernel runs out of memory.

Example 19.6. Creating a New Memory-Based Disk with `mdconfig`
`#` `mdconfig -a -t swap -s `5`m -u `1`` `#` `newfs -U md`1`` /dev/md1: 5.0MB (10240 sectors) block size 16384, fragment size 2048 using 4 cylinder groups of 1.27MB, 81 blks, 192 inodes. with soft updates super-block backups (for fsck -b #) at: 160, 2752, 5344, 7936 `#` `mount /dev/md`1` `/mnt`` `#` `df `/mnt`` Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/md1 4718 4 4338 0% /mnt
Example 19.7. Creating a New Memory-Based Disk with `mdmfs`
`#` `mdmfs -s `5`m md`2` `/mnt`` `#` `df `/mnt`` Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/md2 4846 2 4458 0% /mnt

### 19.11.3. Detaching a Memory Disk from the System

When a memory-based or file-based file system is no longer in use, its resources should be released back to the system. First, unmount the file system, then use mdconfig(8) to detach the disk from the system and release the resources.

For example, to detach and free all resources used by `/dev/md4`:

`#` `mdconfig -d -u `4``

It is possible to list information about configured md(4) devices by running `mdconfig -l`.

Prev | Up | Next
19.10. Backup Basics | Home | 19.12. File System Snapshots

All FreeBSD documents are available for download at http://ftp.FreeBSD.org/pub/FreeBSD/doc/

Questions that are not answered by the documentation may be sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.