还有proc文件系统, 一般在/proc 目录, 它不是一个真正的文件系统,虽然好象是。proc文件系统使用户易于存取全部核心数据结构,比如进程列表。它使这些数据结构看起来象个文件系统,且此文件系统可以用所有一般的文件工具操作。例如,要得到所有进程的列表,可以使用命令
$ ls -l /proc
total 0
dr-xr-xr-x 4 root root 0 Jan 31 20:37 1
dr-xr-xr-x 4 liw users 0 Jan 31 20:37 63
dr-xr-xr-x 4 liw users 0 Jan 31 20:37 94
dr-xr-xr-x 4 liw users 0 Jan 31 20:37 95
dr-xr-xr-x 4 root users 0 Jan 31 20:37 98
dr-xr-xr-x 4 liw users 0 Jan 31 20:37 99
-r--r--r-- 1 root root 0 Jan 31 20:37 devices
-r--r--r-- 1 root root 0 Jan 31 20:37 dma
-r--r--r-- 1 root root 0 Jan 31 20:37 filesystems
-r--r--r-- 1 root root 0 Jan 31 20:37 interrupts
-r-------- 1 root root 8654848 Jan 31 20:37 kcore
-r--r--r-- 1 root root 0 Jan 31 11:50 kmsg
-r--r--r-- 1 root root 0 Jan 31 20:37 ksyms
-r--r--r-- 1 root root 0 Jan 31 11:51 loadavg
-r--r--r-- 1 root root 0 Jan 31 20:37 meminfo
-r--r--r-- 1 root root 0 Jan 31 20:37 modules
dr-xr-xr-x 2 root root 0 Jan 31 20:37 net
dr-xr-xr-x 4 root root 0 Jan 31 20:37 self
-r--r--r-- 1 root root 0 Jan 31 20:37 stat
-r--r--r-- 1 root root 0 Jan 31 20:37 uptime
-r--r--r-- 1 root root 0 Jan 31 20:37 version
$
(可能有些文件与进程不符。上面的例子被简短了。)
注意虽然叫文件系统,proc文件系统没有一个部分与磁盘有关,它只在核心映象中存在。任何人任何时候想看proc文件系统的任何部分,核心使它看起来好象这部分在什么地方存在(虽然没有)。因此,虽然/proc/kcore 文件有好多兆字节,但它根本没用任何磁盘空间。
应该用哪个文件系统?
一般没有什么理由用许多不同的文件系统。当前,ext2fs是最流行的,可能是最明智的选择。根据记录结构、速度、(感觉的)可靠性、兼容性和其他不同的理由,适当地使用其他文件系统。个别情况需要个别决定。
建立文件系统
用mkfs 命令建立文件系统,即初始化。实际上,对每个不同种类的文件系统有一个单独的程序。 mkfs 只是为了建立不同文件系统种类确定运行不同程序的一个前端。用-t fstype选项选择种类。
被mkfs 调用的程序有不同的命令行接口。最通用和最重要的选项如下,细节请看手册。
-t fstype
选择文件系统种类。
-c
查找坏块,初始化坏块列表。
-l filename
从文件filename读入坏块列表。
用如下命令在软盘上产生ext2文件系统:
$ fdformat -n /dev/fd0H1440
Double-sided, 80 tracks, 18 sec/track. Total capacity 1440 kB.
Formatting ... done
$ badblocks /dev/fd0H1440 1440 > bad-blocks
$ mkfs -t ext2 -l bad-blocks /dev/fd0H1440
mke2fs 0.5a, 5-Apr-94 for EXT2 FS 0.5, 94/03/10
360 inodes, 1440 blocks
72 blocks (5.00%) reserved for the super user
First data block=1
Block size=1024 (log=0)
Fragment size=1024 (log=0)
1 block group
8192 blocks per group, 8192 fragments per group
360 inodes per group
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
$
首先,格式化软盘(-n选项不进行确认,即坏块检查)。然后用badblocks 查找坏块, 输出定向到文件bad-blocks。最后,产生文件系统,坏块列表由文件badblocks 初始化。
-c选项可以与mkfs 一起使用,而无须badblocks 和一个单独的文件。如下:
$ mkfs -t ext2 -c /dev/fd0H1440
mke2fs 0.5a, 5-Apr-94 for EXT2 FS 0.5, 94/03/10
360 inodes, 1440 blocks
72 blocks (5.00%) reserved for the super user
First data block=1
Block size=1024 (log=0)
Fragment size=1024 (log=0)
1 block group
8192 blocks per group, 8192 fragments per group
360 inodes per group
Checking for bad blocks (read-only test): done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
$
使用-c比用单独使用badblocks 更方便, 但建立文件系统后检查,badblocks 是必要的。
在硬盘或分区上准备文件系统的过程和软盘是一样的,除了无须格式化。
Mount和unmount
一个文件系统可以使用之前,必须mount。操作系统然后做一些记录以确认正常。因为UNIX所有的文件在一个目录树中, mount操作的结果使新的文件系统的内容好象在某个已经mount的文件系统的一个已经存在的子目录中。
上面的mount可能使用如下命令:
$ mount /dev/hda2 /home
$ mount /dev/hda3 /usr
$
mount 命令使用2个参数。第一个是与包括文件系统的磁盘或分区相关的设备文件。第二个是要mount到的目录。 mount以后,这2个文件系统的内容好象是/home 和/usr 目录。这样就可以说:/dev/hda2 被mount到 /home , /usr 也同样。要看每个文件系统,就看其被安装的目录,好象它就是在那里。注意设备文件的区别,/dev/hda2 , 和安装到的目录/home 。设备文件给出硬盘原始内容的存取,安装到的目录给出磁盘上文件的存取。安装到的目录叫安装点。
Linux支持许多文件系统。mount 会试着猜测文件系统种类。也可以使用-t fstype 选项直接定义种类;这有时是必要的,因为自检测mount 并非总能成功。例如要mount一个MSDOS软盘,可以用如下命令:
$ mount -t msdos /dev/fd0 /floppy
$
安装点目录不必是空的,但必须存在。其中的所有文件当文件系统mount后将不可用名字存取(已经打开的文件将继续可存取。有其他目录硬连接的文件可以通过那些名字存取)。这没有坏处,反而可能更有用。例如,有人喜欢将/tmp 和/var/tmp 作为同义,将/tmp 作为/var/tmp 的符号连接。系统启动时,在/usr 文件系统被mount之前,使用驻留在根文件系统的 /var/tmp 目录。当/usr 被mount上以后,根文件系统上的/var/tmp 将不可用,如果根文件系统上不存在 /var/tmp ,那么在mount上/var 之前将不可能使用暂存文件。
如果您对本文有任何疑问或者建议,请到讨论区发表您的意见:
>>
论坛入口 <<
上一篇:
Linux管理员手册(4)--内存管理 下一篇:
Linux管理员手册(1)--系统概述
【文章评论】
【收藏本文】
【推荐好友】
【打印本文】
【我要投稿】 【论坛讨论】