17.13 网络、内存和 File-Backed 文件系统

Reorganized and enhanced by Marc Fonvieille.

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

  这还包括网络文件系统,例如 Network File System 和 Coda, 基于内存的 文件系统和后备文件系统。

  按照你运行的 FreeBSD 版本,你可以使用不同的工具来创建和使用 后备文件系统和内存文件系统。

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

17.13.1 采用文件后端的文件系统

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

device md

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

  挂接一个存在的文件系统映像:

例 17-4. 使用 mdconfig 挂载已经存在的文件系统映像

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

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

例 17-5. 使用 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) 挂接它。 例如, 如果想创建和挂接像上面那样的文件系统映像, 只需简单地执行下面的步骤:

例 17-6. 使用 mdmfs 命令配置和挂接一个 File-Backed 磁盘

# 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),请参考联机手册。

17.13.2 以内存为后端的文件系统

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

例 17-7. 用 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

例 17-8. 使用 mdmfs 来新建内存盘

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

17.13.3 从系统中移除内存盘

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

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

# mdconfig -d -u 4

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

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

如果对于FreeBSD有问题,请先阅读文档,如不能解决再联系<[email protected]>.
关于本文档的问题请发信联系 <[email protected]>.