FreeBSD管理交换设备
在FreeBSD系统中,交换设备的作用非常大,需要为FreeBSD留下足够的交换空间。在系统负载非常大的时候,交换空间不够也会影响系统的执行进程。通常应该将系统交换空间的大小设置为物理内存的1-2.5倍。由于交换空间是用作虚拟存储器,和物理内存进行交换数据的,因此应该设置到高速硬盘上,或者将交换空间分布到多个硬盘中,以均衡负载。FreeBSD是以交错的方式使用各个不同的交换分区,因此如果在不同的硬盘上分布交换分区,就能提高交换设备的存取速度。通常FreeBSD使用disklabel为b的设备用做交换设备,在系统运行过程中可以为FreeBSD 增加其他磁盘上的交换设备,或者使用文件用做交换。要增加交换设备,首先要沿着上面的过程创建一个新的disklabel,按照习惯做法,使用b作交换空间的 disklabel。再修改/etc/fstab文件,加入一行有关这个交换设备的描述。或者使用swapon立即使分配的交换空间生效。
如果要使用文件来用做交换空间,首先要在系统中产生一个用作交换的文件,然后更改/etc/rc.conf,将swapfile参数指向这个文件即可。
# dd
if=/dev/zero of=swapfile bs=10240 count=1024
事实上,交换文件要首先映射为伪存储设备vn,然后才能安装到系统中的。因此要使用交换文件,就需要内核支持伪存储设备vn,缺省内核支持一个vn设备vn0。可以直接访问这个伪存储设备,手工完成增加交换文件的工作。首先要将交换文件和伪设备相联系,然后就能像处理真实设备一样处理这个伪设备了。将文件和伪设备联系起来需要使用vncon fig命令。
# vnconfig /dev/vn0c swapfile# vnconfig -u /dev/vn0c
可以再次使用使用-u参数的vnconfig将已经与文件相联系的伪存储设备,脱离与现有文件的联系,首先要求这个伪设备不被系统使用,如vn0c没有用作交换设备或已经从系统中卸载了。通过在vnconfig命令中使用-e 参数,就可以直接使用vnconfig加入交换,而没有必要再次使用swapon命令:
# vnconfig -e /dev/vn0c swapfile swap
伪存储设备的用处不止用于交换文件,也可以用来安装虚拟文件系统。因此就可以使用它来管理软盘或光盘的镜象文件。
# dd if=/dev/rfd0 of=imgfile# vnconfig vn0c imgfile# mount -t msdos /dev/vn0c /mnt
如果不是象上面例子那样从软盘中生成的镜象文件,而是而是要重新建立文件系统,那么需要注意的是磁盘的类型。由于伪设备的大小是由生成的文件决定的,那么这个伪设备对应的磁盘种类显然不是标准磁盘种类,系统显然也无法从伪设备中检测到磁盘类型,因此在生成磁盘的disklabel和进行newfs格式化时就需要指定磁盘类型。一般由于镜象文件的大小与标准磁盘数据对应的大小不一定一致,那么为了充分利用伪设备的大小,就需要在/etc/disktab中生成新磁盘类型的数据。