第21章 其他文件系统
附录 D. OpenPGP 密钥
18.10.内存盘
除了物理磁盘之外,FreeBSD 还支持创建和使用内存盘。内存盘的一个可能用途是访问 ISO 文件系统的内容,而不需要先将其刻录再挂载 CD 或 DVD 。
在 FreeBSD 中,md(4) 驱动程序被用来提供对内存盘的支持。GENERIC 内核包括这个驱动。当使用一个自定义的内核配置文件时,请确保它包括这一行:
device md

18.10.1. 附加和分离现有的映像

要挂载一个现有的文件系统映像,使用 mdconfig 来指定 ISO 文件的名称和一个空闲单元号。然后,参考该单元号将其挂载到一个现有的挂载点上。挂载成功后,ISO 中的文件将出现在挂载点中。这个例子将 diskimage.iso 附加到内存设备 /dev/md0 ,然后将该内存设备挂载到 /mnt
1
# mdconfig -f diskimage.iso -u 0
2
# mount -t cd9660 /dev/md0 /mnt
Copied!
注意,-t cd9660 被用来挂载一个ISO 格式。如果没有用 -u 指定单元号,mdconfig 将自动分配一个未使用的内存设备,并输出分配单元的名称,如 md4 。关于这个命令及其选项的更多细节,请参考 mdconfig(8)
当一个内存盘不再被使用时,它的资源应该被释放回系统中。首先,卸载文件系统,然后使用 mdconfig 将磁盘从系统中分离出来并释放其资源。继续这个例子:
1
# umount /mnt
2
# mdconfig -d -u 0
Copied!
要确定是否有任何内存盘仍然连接在系统上,键入 mdconfig -l

18.10.2. 创建一个以文件或内存为基础的内存盘

FreeBSD 也支持内存磁盘,其中使用的存储空间是从硬盘或内存区域中分配的。第一种方法通常被称为文件支持的文件系统,第二种方法被称为内存支持的文件系统。这两种类型都可以用 mdconfig 来创建。
要创建一个新的内存支持的文件系统,指定 swap 类型和要创建的内存盘的大小。然后,用文件系统格式化内存盘,像往常一样挂载。这个例子在单元 1 上创建了一个 5M 的内存盘。然后在挂载前用 UFS 文件系统格式化该内存盘:
1
# mdconfig -a -t swap -s 5m -u 1
2
# newfs -U md1
3
/dev/md1: 5.0MB (10240 sectors) block size 16384, fragment size 2048
4
using 4 cylinder groups of 1.27MB, 81 blks, 192 inodes.
5
with soft updates
6
super-block backups (for fsck -b #) at:
7
160, 2752, 5344, 7936
8
# mount /dev/md1 /mnt
9
# df /mnt
10
Filesystem 1K-blocks Used Avail Capacity Mounted on
11
/dev/md1 4718 4 4338 0% /mnt
Copied!
要创建一个新的以文件为基础的内存磁盘,首先要分配一个磁盘区域来使用。这个例子创建了一个 5MB 的空文件,名为 newimage :
1
# dd if=/dev/zero of=newimage bs=1k count=5k
2
5120+0 records in
3
5120+0 records out
Copied!
接下来,将该文件附加到一个存储盘上,给存储盘贴上标签,并用 UFS 文件系统对其进行格式化,挂载存储盘,并验证该文件支持的磁盘的大小:
1
# mdconfig -f newimage -u 0
2
# bsdlabel -w md0 auto
3
# newfs -U md0a
4
/dev/md0a: 5.0MB (10224 sectors) block size 16384, fragment size 2048
5
using 4 cylinder groups of 1.25MB, 80 blks, 192 inodes.
6
super-block backups (for fsck -b #) at:
7
160, 2720, 5280, 7840
8
# mount /dev/md0a /mnt
9
# df /mnt
10
Filesystem 1K-blocks Used Avail Capacity Mounted on
11
/dev/md0a 4710 4 4330 0% /mnt
Copied!
使用 mdconfig 创建一个文件或内存支持的文件系统需要几个命令。FreeBSD 还配备了 mdmfs ,它可以自动配置一个内存盘,用 UFS 文件系统格式化,并挂载它。例如,在用 dd 创建 newimage 之后,这条命令就相当于运行上面的 bsdlabelnewfsmount 命令:
1
# mdmfs -F newimage -s 5m md0 /mnt
Copied!
要使用 mdmfs 创建一个新的基于内存的内存磁盘,请使用以下命令:
1
# mdmfs -s 5m md1 /mnt
Copied!
如果没有指定单元号,mdmfs 将自动选择一个未使用的内存设备。关于 mdmfs 的更多细节,请参考 mdmfs(8)