BSD的虚拟磁盘技术
2010/06/17 12:06 ArthurXF
去掉开机自动加载虚拟磁盘并mount到/var,网上有资料说:
It seems that you have set "varmfs=YES" in you /etc/rc.conf or /var is not popular writable
然后按照下面的操作就可解决。
vi /etc/rc.conf
varmfs="NO"
populate_var="NO"# 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。
It seems that you have set "varmfs=YES" in you /etc/rc.conf or /var is not popular writable
然后按照下面的操作就可解决。
vi /etc/rc.conf
varmfs="NO"
populate_var="NO"# 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。