FreeBSD下的内存文件系统( 六 )




因此,在最新的FreeBSD 5.0版本中,这些内存文件系统的设置都统一起来,特别是将vn设备和md设备的功能都统一到新版本的伪设备md中 。并且在FreeBSD 5.0下,设备的创建和内存的分配更为方便,不象在4.x之前,系统中的配置选项只能指定一定数量的虚拟磁盘设备(缺省是一个设备) 。而且,由于FreeBSD 5.0使用了DEVFS特色,设备文件的创建是自动进行的,不再需要手工使用MAKEDEV命令创建设备文件入口 。


例如,需要从虚拟内存中申请内存创建内存文件系统的时候,就需要执行md设备的控制程序mdconfig:


# mdconfig -a -t swap -s 30M


这就会在虚拟内存中申请30M空间,并创建虚拟磁盘,使用的虚拟设备为第一个md设备md0,如果系统中的md0设备已经被占用,那么mdconfig就依序向后寻找下一个空余的md设备,并创建它 。由于mdconfig能自动创建新的设备,这样就解决了在内核配置文件指定伪设备数量的问题 。


也可以使用-u指定使用的md伪设备的序号,例如下列命令将创建md10,并使用它作为虚拟磁盘设备:

# mdconfig -a -t swap -s 30M -u 10


上面的命令都是使用虚拟内存空间作为数据存储空间,是由swap参数指定的 。同样,使用mdconfig也能从内核空间中创建虚拟磁盘,此时-t指定的存储类型参数为malloc,这告诉内核使用内核的MALLOC方法申请内存 。


# mdconfig -a -t malloc -s 30M


这种方法就相当于老的md设备的申请内存的方法,但显然更为灵活,因为可以在具体使用过程中申请内存和设备,这是因为FreeBSD 5.0的内核允许更灵活的使用MALLOC内存申请方式 。当然,一般还是主要使用swap申请虚拟空间的内存 。


由于mdconfig和伪设备md将完全代替vnconfig和伪设备vn,那么使用mdconfig也能创建使用文件作为虚拟磁盘的与vn兼容的方式,这需要指定存储类型参数为vnode,并使用 -f指定具体的存储数据的物理文件名字 。


# mdconfig -a -t vnode -f imagefile -s 30M


在使用mdconfig配置好虚拟磁盘之后,就可以使用disklabel、newfs、mount等管理虚拟磁盘 。而在不需要这些虚拟磁盘的时候,就可以卸载相应的文件系统,并使用mdconfig删除指定的磁盘等 。


# mdconfig -l

使用参数”-l”,则mdconfig列出系统中所有的虚拟磁盘设备 。

# mdconfig -d -u 0


为了删除指定了磁盘,需要使用”-d"参数,而使用"-u 0”则指定删除序号为0的虚拟磁盘,即md0 。

推荐阅读