除了你的物理磁盘以外,插入你计算机的: 软盘 CDs,硬盘驱动器,等等;其它磁盘格式是不被 FreeBSD - virtual disks支持的。
这还包括网络文件系统,例如 Network File System 和 Coda, 基于内存的 文件系统和后备文件系统。
按照你运行的 FreeBSD 版本,你可以使用不同的工具来创建和使用 后备文件系统和内存文件系统。
Note: FreeBSD 4.X 用户可以使用 MAKEDEV(8) 来创建需要的设备。 FreeBSD 5.0 和更新的版本使用 devfs(5) 来创建设备节点,对用户来说是透明的。
应用程序 vnconfig(8) 可以配置和启用 vnode 伪磁盘设备。 一个 vnode 代表一个文件。这就意味 使用 vnconfig(8) 可以用来创建和操作一个文件系统。 也可以在文件中挂接一个软盘或 CD 映像。
要使用 vnconfig(8),你需要在内核配置文件中 vn(4) 的支持:
pseudo-device vn
挂接一个存在的文件系统映像:
Example 16-4. 使用 vnconfig 来挂接一个存在的文件系统映像在 FreeBSD 4.X 系统上。
# vnconfig vn0 diskimage # mount /dev/vn0c /mnt
使用 vnconfig(8) 创建一个新的文件系统映像:
Example 16-5. 使用 vnconfig 创建一个新的 File-Backed 磁盘
# dd if=/dev/zero of=newimage bs=1k count=5k 5120+0 records in 5120+0 records out # vnconfig -s labels -c vn0 newimage # disklabel -r -w vn0 auto # newfs vn0c Warning: 2048 sector(s) in last cylinder unallocated /dev/vn0c: 10240 sectors in 3 cylinders of 1 tracks, 4096 sectors 5.0MB in 1 cyl groups (16 c/g, 32.00MB/g, 1280 i/g) super-block backups (for fsck -b #) at: 32 # mount /dev/vn0c /mnt # df /mnt Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/vn0c 4927 1 4532 0% /mnt
在 FreeBSD 5.X 系统中使用应用程序 mdconfig(8) 被用来配置和启用内存磁盘,md(4),使用 mdconfig(8)你需要在你的内核配置文件中添加 md(4) 模块来支持它:
device md
mdconfig(8) 命令支持三种类型的内存后备虚拟磁盘: 使用 malloc(9),来分配内存磁盘,内存磁盘作为文件或作为 备用的交换分区。一种使用方式是在文件中来挂接一个软盘和 CD 映像。
挂接一个存在的文件系统映像:
Example 16-6. 在 FreeBSD 5.X 中使用 mdconfig 命令来挂接一个存在的文件系统映像。
# mdconfig -a -t vnode -f diskimage -u 0 # mount /dev/md0 /mnt
使用 mdconfig(8) 来创建一个新的文件系统映像:
Example 16-7. 用 mdconfig 创建一个新的 File-Backed 磁盘
# 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 # disklabel -r -w md0 auto # newfs md0c /dev/md0c: 5.0MB (10240 sectors) block size 16384, fragment size 2048 using 4 cylinder groups of 1.27MB, 81 blks, 256 inodes. super-block backups (for fsck -b #) at: 32, 2624, 5216, 7808 # mount /dev/md0c /mnt # df /mnt Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/md0c 4846 2 4458 0% /mnt
如果你没有使用 -u 选项指定一个单位号 mdconfig(8) 将使用 md(4) 自动为它选择一个未使用的设备。 分配给它的单位名将被输出到标准输出设备像 md4。想得到更多的关于 mdconfig(8) 的信息请参考手册页。
Note: 从 FreeBSD 5.1-RELEASE 开始, bsdlabel(8) 程序代替了旧版的 disklabel(8) 程序。相应的 bsdlabel(8) 中的许多陈旧的选项和参数也被取消; 在上面的例子中选项 -r 应该被删掉。想获得更多的信息, 请参考 bsdlabel(8) 的手册页。
应用程序 mdconfig(8) 是非常有作的,然而它 需要许多命令行来创建一个 file-backed 文件系统。 FreeBSD 5.0 也提供了一个被称作 mdmfs(8) 的工具, 这个程序配置一个 md(4) 磁盘使用 mdconfig(8),在它上面安装一个 UFS 文件系统使用 newfs(8),挂接它使用 mount(8)。例如, 如果你想创建和挂接像上面一样的文件系统映像, 简单的执行下面的步骤:
Example 16-8. 使用 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 4846 2 4458 0% /mnt
如果你使用没有加单位号的 md 选项, mdmfs(8) 将使用 md(4) 的自动单位号特性来自动为其 选择一个未使用的设备。更详细的 mdmfs(8),请参考手册页。
md(4) 驱动程序是一个简单有效的手段用来创建 内存文件系统在 FreeBSD 4.X 系统上。malloc(9) 被 用来分配内存。
简单的获得一个文件系统你需要准备,例如: vnconfig(8)
Example 16-9. FreeBSD 4.X 下的 md 内存磁盘
# dd if=newimage of=/dev/md0 5120+0 records in 5120+0 records out # mount /dev/md0c /mnt # df /mnt Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/md0c 4927 1 4532 0% /mnt
更多的详情,请参考 md(4) 手册页。
同样的工具也可以用来创建内存后备式文件系统: mdconfig(8) 或 mdmfs(8)。内存后备文件系统的 内存分配要使用 malloc(9) 来完成。
Example 16-10. 用 mdconfig 创建一个新的内存后备磁盘
# mdconfig -a -t malloc -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, 256 inodes. with soft updates super-block backups (for fsck -b #) at: 32, 2624, 5216, 7808 # mount /dev/md1 /mnt # df /mnt Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/md1 4846 2 4458 0% /mnt
Example 16-11. 用 mdmfs 创建一个新的内存后备磁盘
# mdmfs -M -s 5m md2 /mnt # df /mnt Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/md2 4846 2 4458 0% /mnt
代替使用一个 malloc(9) 后备文件系统,可以使用 swap,正确的替换使用 swap 替换 malloc 在命令行 mdconfig(8) 中。mdmfs(8) 程序默认 (没有 -M 选项) 创建一个 swap-based 磁盘。更多的详情,请参考 mdconfig(8) 和 mdmfs(8) 手册页。
当一个内存后备式文件系统不再使用时,你应该释放掉系统的资源。 每一件要做的事情就是摘掉文件系统,然后使用 mdconfig(8) 把磁盘从系统中分离出来释放看资源。
例如分离和释放所有的资源使用 /dev/md4 命令:
# mdconfig -d -u 4
mdconfig -l 命令可以列出关于配置 md(4) 设备的信息。
在 FreeBSD 4.X 系统中,vnconfig(8) 命令用来分离设备。 例如分离所有的资源使用 /dev/vn4 命令:
# vnconfig -u vn4