当前所在位置:FreeBSD使用大全>> |
FreeBSD连载(17):安装文件系统(2) |
---|
作者:王波 |
文件系统的安装 在存储设备上建立的文件系统必须安装到Unix目录树上,用户才能访问上面的文件。目录树只是一种逻辑概念,而具体的文件都保存在安装到目录树上的各个文件系统中。由于每个文件都保存的自己的目录中,这样目录中保存的是相对位置,一旦将一个文件系统安装到一个目录下,则这个文件系统中的所有文件和目录,都位于目录树中的这个目录的下方,可以选择将这个文件系统安装到不同的目录下。 安装文件系统要使用命令mount,这个命令必须以root身份执行,例如安装光盘文件系统的命令(IDE光驱)使用: # mount -t cd9660 /dev/wcd0c /cdrom 参数指明了不同的选项,-t后面跟文件系统的类型,这个命令中使用cd9660,用于光盘使用的ISO 9660 文件系统,同样也可以根据文件系统的不同而选用ufs、nfs、msdos等,其中ufs类型是缺省的文件系统类型;根据文件系统的类型不同,可使用的选项也不同。/dev/wcd0c是指定CD-Rom设备文件,也可以使用/dev/wcd0 来安装光盘,BSD的习惯做法是除了raw方式访问设备之外,最好使用子设备c来表示整个设备,主要原因是使用子设备c,那么就能通过访问分区的disklabel,来获得存储设备的信息,虽然现代BSD下这个因素的影响已经很小,但使用子设备更符合BSD习惯。/cdrom指定了安装目录,此后光盘上的所有文件都位于/cdrom目录下,但是在执行这个命令前必须创建这个/cdrom目录。 Mount命令可以通过-o参数指定相关的安装选项,例如-o ro指定了使用只读(Read Only)选项,由于CD-Rom是只读介质,即使不使用这个选项指明这个介质是只读类型的,系统也会将这个文件系统设置为只读。对于以只读方式安装的文件系统,任何时候企图写这个目录下的文件都会得到错误信息。对于物理上可写的文件系统,可以使用ro选项将能保护数据不被改变,因而十分有用。 同样安装一个DOS格式的软盘应该使用: # mount -t msdos /dev/fd0 /floopy 如果安装顺利,则就可以访问这个软盘上的DOS文件了。同样也可以访问硬盘上FAT格式的文件系统,包括DOS基本分区和扩展分区上的逻辑盘(逻辑盘在FreeBSD下的设备文件从5开始,例如wd1扩展分区上的第一个逻辑盘为wd1s5)。 安装一个其他计算机通过NFS共享出的文件系统应该使用: # mount -t nfs remote:/directory /mnt 与安装其他文件系统的不同在于,本地硬盘上的文件系统使用设备文件,但NFS使用远程主机的名字和目录来确定文件系统的位置,其格式为主机名与该主机上目录名,中间使用 “:” 分隔开。 将文件系统安装到目录上之后,使用这个介质上的文件就非常简单了。FreeBSD将假定存储设备将一直停留在这个安装位置上由系统使用,因此FreeBSD使用内存来为这些文件系统建立缓冲区,以最高效的使用文件系统,这种方式为异步模式的文件安装方式(async)。这样磁盘上的内容与内存中是非同步的,系统定期或在需要的时候,才去更新磁盘上的物理信息。(sync命令将强迫系统更新磁盘)这种非同步的方式就使得管理员要移去文件系统必须通过系统来完成卸载,而不应该直接取出(如软盘等可移动介质)。如果直接移去软盘,或者因为系统突然掉电而造成没有正确卸载文件系统,就会直接造成磁盘上的数据不正确,从而不得不使用fsck来检查和修复这些文件系统。也可以在执行mount命令的时候使用sync的安装选项,使硬盘数据和内存缓冲区保持同步,这样虽然降低了存取效率,但更适合对数据的完整性提出较高要求的系统。 即使对于一个只读类型的介质,FreeBSD仍然使用这种控制机制,直到卸载才释放对文件系统的控制权。因此在FreeBSD下使用mount命令安装了光盘之后,光驱前面板上的eject键将不再起作用,直到将这个文件系统卸载下来。 使用命令umount可以卸载一个安装到确定目录下的文件系统。 # umount /cdrom 执行这个命令将文件系统与其安装到的目录相脱离,对于异步模式安装的文件系统还将同步缓冲区和磁盘上的数据。以后该目录就能用来安装另一个文件系统了。而直到此时才能使用eject键退出光盘,更换或拿开盘片。 # cd /cdrom # umount /cdrom umount: /cdrom : Device busy # cd / # umount /cdrom 在执行这个命令时如果系统报告 “Device busy” 错误信息,说明有其他程序仍然正在使用这个文件系统中的文件,很可能是某个shell的当前路径仍然位于这个文件系统的目录中,造成这个文件系统的目录文件没有关闭。检查所有的登录界面,保证没有shell的当前目录在/cdrom的目录下。 设置fstab文件 在系统启动时,系统将自动安装上必需的文件系统。而管理员所要做的是告诉FreeBSD应该安装那个文件系统、安装到那个目录上和有关安装参数选项。所有的这些信息都必须写入文件/etc/fstab中。在安装FreeBSD 时,这个文件已经具有必要的文件系统了,此后所需要作的只是这个文件中再增加其他的文件系统。 # Device Mountpoint FStype Options Dump Pass# /dev/wd0s3b none swap sw 0 0 /dev/wd0s3a / ufs rw 1 1 /dev/wd0s3f /usr ufs rw 2 2 /dev/wd0s3e /var ufs rw 2 2 proc /proc procfs rw 0 0 /dev/wcd0c /cdrom cd9660 ro,noauto 0 0 /dev/wd0s1 /dos msdos rw,noauto 0 1 这个文件中的每一行为一种文件系统或交换设备定义对应的设备文件及安装选项。其中根文件系统具备一定的特殊之处,因为这个文件/etc/fstab以及FreeBSD的内核文件,其实是在根文件系统中的,因此系统必须首先安装了根文件系统,才能正常访问这些文件。事实上根文件系统在FreeBSD内核中已经有了设置,启动时先以只读方式安装根文件系统,并读取根文件系统中相关文件的内容,然后再根据文件内容装载各个文件系统。 这个文件的第一列为设备文件名字,或者NFS使用的远程文件系统的名字。第二列为文件系统的安装位置,第三列为文件系统的类型,其中UFS是FreeBSD使用的标准本地文件系统的类型,procfs是FreeBSD用于管理进程的进程文件系统。第四列为安装的选项,rw表示该文件系统能进行读写操作,ro表示该文件系统是只读的,sw用于交换分区,noauto表示启动时并不立即安装这个文件系统,而是由管理员在以后手工安装。第五列和第六列的数字是系统程序dump和fsck程序使用的标志,通常不需要改变,这个标志对根文件系统都是1,而对其他UFS类型的文件系统都是2,其他类型的文件系统为0。 注意,由于fstab文件非常重要,如果这个文件有错误,就有可能造成系统不能正常启动,因此向fstab添加数据应非常小心。不是必须安装的文件系统就不应该进行自动装载,例如上面将CDROM对应的行参数设置为noauto ,表示这个文件系统不是启动时自动装载的系统。 在使用了fstab文件之后,mount命令的写法就可以简化了。mount命令将查看fstab文件中的内容以进行匹配,来选定正确的参数。例如,使用下列命令均可以安装上CD-Rom。 # mount /dev/wcd0c /cdrom # mount /dev/wcd0c # mount /cdrom 在安装了文件系统之后,可以使用不加参数的mount命令或df命令查看当前已安装的文件系统信息。 # mount /dev/wd0s3a on / (local, writes: sync 117 async 796) /dev/wd0s3f on /usr (local, writes: sync 1189 async 4948) /dev/wd0s3e on /var (local, writes: sync 362 async 1354) procfs on /proc (local) /dev/wd1s2e on /disk2 (local, writes: sync 4 async 41) 未完,待续。。。 |
来源:http://freebsd.online.ha.cn/ |