20 FreeBSD连载:建立文件系统( 二 )


然后按照要求回答分区的类型,(FreeBSD分区为165,DOS分区为6),分区的开始位置和大小,注意单位应该为512字节(扇区大小) 。后面的大部分参数可以使用缺省值回应询问,或者设定激活分区 。
更改分区设置并保存退出fdisk之后,还需要检查系统中是否具有对应的设备文件,必须在/dev目录下拥有相应的设备文件才能访问物理设备 。
划分了UFS基本分区之后,就可以使用disklabel创建文件系统或交换空间的disklabel了,为了方便起见,可以先为这个分区建立空的disklabel,然后再进行修改 。
# disklabel -r -w wd1s3 auto
# disklabel -e wd1s3在使用-w参数为分区wd1s3生成缺省的disklabel时,就必须给定磁盘的类型,通常可以使用auto,让系统自动检测 。除了自动侦测之外,在/etc/disktab文件中也给出了很多标准磁盘类型数据,这些数据中包括包括软盘在内的各种磁盘类型,对于这个文件中不存在的新型磁盘,可以根据原有类型进行修改而生成新数据 。通常很少需要利用这个文件中提供的磁盘类型数据来生成disklabel,使用auto参数能让系统自动检测磁盘的类型 。极少数情况下,例如在配置伪存储设备vn的时候,才需要使用具体磁盘类型参数 。
直接生成的disklabel仅仅包括磁盘的类型信息,以及一个使用c表示整个系统分区的空disklabel,而没有具体文件系统的disklabel 。要真正划分文件系统,需要再使用disklabel -e编辑更改disklabel配置,例如增加两个子分区,b和e,就需要为b设置类型swap的disklabel,为e设置类型4.2BSD的disklabel,而c使用的unused类型表示这个disklabel不用做文件系统或交换空间,可用于特定目的,如raw方式存取硬盘 。
注意由于要使用手工计算文件系统的大小,因此很容易发生重叠等错误 。各个不同空间的disklabel允许重叠,例如缺省产生的以c代表的disklabel表示整个FreeBSD系统分区就会与其他disklabel的空间重叠 。但是具体用做文件系统或交换空间的部分就不能重叠,否则会导致存取错误发生 。
保存退出后,就可以使用disklabel -r wd1s1来查看新建的代表文件系统或交换空间的label 。下面为增加之后的disklabel的最后一部分 。
#sizeoffsetfstype[fsize bsize bps/cpg]
b:614400swap
c:4095360unused00
e:348096614404.2BSD000然后在新建的disklabel为4.2BSD类型的空间上真正建立文件系统,需要使用newfs命令 。
# newfs /dev/rwd1s1e执行fsck检查刚建立的磁盘分区有无错误
# fsck -y /dev/rwd1s1e然后就可以将这个建立好的文件系统安装到系统中了,如果建立的是交换空间,可以使用swapon命令可使该交换分区立即生效 。
# mount /dev/wd1s1e /mnt
# swapon /dev/wd1s1b为了在启动时自动安装上这个文件系统,需要编辑/etc/fstab文件,将文件系统和交换设备加入系统,那么下次系统启动之后,就能使用新的磁盘分区和新的交换设备了 。例如新磁盘为wd1,相应FreeBSD的分区为wd1s3e(文件系统)和wd1s3b(交换分区),文件系统要安装到系统的/disk2目录下,则fstab应为:
# DeviceMountpointFStypeOptionsDumpPass#
/dev/wd0s3bnoneswapsw00
/dev/wd0s3a/ ufsrw11
/dev/wd0s3f/usrufsrw22
/dev/wd0s3e/varufsrw22
proc/procprocfsrw00
/dev/wd1s1e/cdromcufsrw22
/dev/wd1s1bnoneswapsw00然后就可以使用新硬盘来调整空间紧张的磁盘上的文件和目录 。此时,除了可以使用符号连接这种方式之外,还可以直接将该新建的文件系统安装到需要的目录下 。这也是推荐的方式,因为符号连接会对文件操作的性能造成少许影响 。
# cd /usr
# mv local local.old
# mkdir local
# mount /dev/wd1s1e /usr/local
# mv /usr/local.old/* /usr/local/未完,待续 。。。

推荐阅读