18.13. Network, Memory, and File-Backed File Systems
前一頁 | 章 18. 儲存設備篇 | 下一頁

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

Reorganized and enhanced by Marc Fonvieille.

Aside from the disks you physically insert into your computer: floppies, CDs, hard drives, and so forth; other forms of disks are understood by FreeBSD - the 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 you run, you will have to use different tools for creation and use of file-backed and memory-based file systems.

### 注意:

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

### 18.13.1. File-Backed File System

The utility mdconfig(8) is used to configure and enable memory disks, md(4), under FreeBSD. To use mdconfig(8), you have to load md(4) module or to add the support in your kernel configuration file:

device md

The mdconfig(8) command supports three kinds of memory backed virtual disks: memory disks allocated with malloc(9), memory disks using a file or swap space as backing. One possible use is the mounting of floppy or CD images kept in files.

To mount an existing file system image:

範例 18.4. 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):

範例 18.5. 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 you do not specify the unit number with the `-u` option, mdconfig(8) will use the md(4) automatic allocation to select an unused device. The name of the allocated unit will be output on stdout like `md4`. For more details about mdconfig(8), please refer to the manual page.

The utility mdconfig(8) is very useful, however it asks many command lines to create a file-backed file system. FreeBSD also comes with a tool called mdmfs(8), this program 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, if you want to create and mount the same file system image as above, simply type the following:

範例 18.6. 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

If you use the option `md` without unit number, mdmfs(8) will use md(4) auto-unit feature to automatically select an unused device. For more details about mdmfs(8), please refer to the manual page.

### 18.13.2. Memory-Based File System

For a memory-based file system the “swap backing” should normally be used. Using swap backing does not mean that the memory disk will be swapped out to disk by default, but merely 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 disk which are malloc(9) backed, but using malloc backed memory disks, especially large ones, can result in a system panic if the kernel runs out of memory.

範例 18.7. Creating a New Memory-Based Disk with `mdconfig`
`#` `mdconfig -a -t malloc -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, 256 inodes. with soft updates super-block backups (for fsck -b #) at: 32, 2624, 5216, 7808 `#` `mount /dev/md`1` `/mnt`` `#` `df `/mnt`` Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/md1 4846 2 4458 0% /mnt
範例 18.8. Creating a New Memory-Based Disk with `mdmfs`
`#` `mdmfs -M -s `5`m md`2` `/mnt`` `#` `df `/mnt`` Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/md2 4846 2 4458 0% /mnt

Instead of using a malloc(9) backed file system, it is possible to use swap, for that just replace `malloc` with `swap` in the command line of mdconfig(8). The mdmfs(8) utility by default (without `-M`) creates a swap-based disk. For more details, please refer to mdconfig(8) and mdmfs(8) manual pages.

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

When a memory-based or file-based file system is not used, you should release all resources to the system. The first thing to do is to 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 in using the command `mdconfig -l`.

前一頁 | 上一層 | 下一頁
18.12. Backup Basics | 起始頁 | 18.14. File System Snapshots

本文及其他文件，可由此下載： ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/。

若有 FreeBSD 方面疑問，請先閱讀 FreeBSD 相關文件，如不能解決的話，再洽詢 <questions@FreeBSD.org>。
關於本文件的問題，請洽詢 <doc@FreeBSD.org>。