18.13 网络、内存和 和以及映像文件为介质的虚拟文件系统

Reorganized and enhanced by Marc Fonvieille.

  除了插在您计算机上的物理磁盘: 软盘、 CD、 硬盘驱动器, 等等之外, FreeBSD 还能识别一些其他的磁盘形式 - 虚拟磁盘

  这还包括, 如 网络文件系统 (Network File System) 和 Coda一类的网络文件系统、 内存以及映像文件为介质的虚拟文件系统。

  随运行的 FreeBSD 版本不同, 用来创建和使用以映像文件介质文件系统和内存文件系统的工具也不尽相同。

注意: 系统会使用 devfs(5) 来创建设备节点, 这对用户来说是透明的。

18.13.1 以映像文件为介质的文件系统

  在 FreeBSD 系统中, 可以用 mdconfig(8) 程序来配置和启用内存磁盘, md(4)。 要使用 mdconfig(8), 就需要在内核配置文件中添加 md(4) 模块来支持它:

device md

   mdconfig(8) 命令支持三种类型的虚拟文件系统: 使用 malloc(9),来分配内存文件系统,内存文件系统作为文件或作为 备用的交换分区。一种使用方式是在文件中来挂载一个软盘和 CD 镜像。

  将一个暨存的映像文件作为文件系统挂载:

例 18-3. 使用 mdconfig 挂载已经存在的映像文件

# mdconfig -a -t vnode -f diskimage -u 0
# mount /dev/md0 /mnt

  使用 mdconfig(8) 来创建新的映像文件:

例 18-4. 使用 mdconfig 将映像文件作为文件系统挂载

# dd if=/dev/zero of=newimage bs=1k count=5k
5120+0 records in
5120+0 records out
# mdconfig -a -t vnode -f newimage -u 0
# bsdlabel -w md0 auto
# newfs md0a
/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/md0a /mnt
# df /mnt
Filesystem 1K-blocks Used Avail Capacity  Mounted on
/dev/md0a       4710    4  4330     0%    /mnt

  如果没有通过 -u 选项指定一个标识号 mdconfig(8) 将使用 md(4) 为它自动选择一个未用的设备标识号。 分配给它的标识名将被输出到标准输出设备, 其形式是与 md4 类似。 如果希望了解更多相关信息, 请参见联机手册 mdconfig(8)

  mdconfig(8) 功能很强大, 但在将映像文件作为文件系统挂载时, 仍需使用许多行的命令。 为此 FreeBSD 也提供了一个名为 mdmfs(8) 的工具, 该程序使用 mdconfig(8) 来配置 md(4) 设备, 并用 newfs(8) 在其上创建 UFS 文件系统, 然后用 mount(8) 来完成挂载操作。 例如, 如果想创建和挂接像上面那样的文件系统映像, 只需简单地执行下面的步骤:

例 18-5. 使用 mdmfs 命令配置和挂载一个映像文件为文件系统

# dd if=/dev/zero of=newimage bs=1k count=5k
5120+0 records in
5120+0 records out
# mdmfs -F newimage -s 5m md0 /mnt
# df /mnt
Filesystem 1K-blocks Used Avail Capacity  Mounted on
/dev/md0        4718    4  4338     0%    /mnt

  如果你使用没有加标识号的 md 选项, mdmfs(8) 将使用 md(4) 的自动标示号特性来自动为其 选择一个未使用的设备。更详细的 mdmfs(8),请参考联机手册。

18.13.2 以内存为介质的文件系统

  一般来说, 在建立以内存为介质的文件系统时, 应使用 “交换区作为介质 (swap backing)”。 使用交换区作为介质, 并不意味着内存盘将被无条件地换出到交换区, 它只是表示将根据需要从可换出的内存池中分配内存。 此外, 也可以使用 malloc(9) 创建以内存作为介质的文件系统。 不过在内存不足时, 这种方式可能引致系统崩溃。

例 18-6. 用 mdconfig 创建新的内存盘设备

# mdconfig -a -t swap -s 5m -u 1
# newfs -U md1
/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/md1 /mnt
# df /mnt
Filesystem 1K-blocks Used Avail Capacity  Mounted on
/dev/md1        4718    4  4338     0%    /mnt

例 18-7. 使用 mdmfs 来新建内存介质文件系统

# mdmfs -s 5m md2 /mnt
# df /mnt
Filesystem 1K-blocks Used Avail Capacity  Mounted on
/dev/md2        4846    2  4458     0%    /mnt

18.13.3 从系统中移除内存盘设备

  当不再使用内存盘设备时, 应将其资源释放回系统。 第一步操作是卸下文件系统, 然后使用 mdconfig(8) 把虚拟磁盘从系统中分离, 以释放资源。

  例如, 要分离并释放所有 /dev/md4 使用的资源, 应使用命令:

# mdconfig -d -u 4

  mdconfig -l 命令可以列出关于配置 md(4) 设备的信息。

本文档和其它文档可从这里下载:ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题,请先阅读文档,如不能解决再联系<questions@FreeBSD.org>.
关于本文档的问题请发信联系 <doc@FreeBSD.org>.