3.1 Linux的文件系统类型和目录结构

3.1.1 Linux文件系统类型

文件系统是指操作系统用于明确磁盘或分区上的文件的方法和数据结构,即在磁盘上组织文件的方法,也指用于存储文件的磁盘、分区或文件系统种类。

目前,Windows通常采用FAT32或NTFS文件系统,对于Red Hat Linux,系统默认使用ext2或ext3和swap文件系统。下面对Linux常用的文件系统作简单介绍。

(1)ext

ext是第一个专门为Linux而设计的文件系统类型,叫作扩展文件系统。

(2)ext2

ext2是为解决ext文件系统的缺陷而设计的可扩展的高性能的文件系统,又称为二级扩展文件系统。ext2是Linux文件系统类型中使用最多的格式,并且在速度和CPU利用率上较突出,是GNU/Linux系统中标准的文件系统。其特点是存取文件的性能极好,对于中小型的文件更显示出其优势,这主要得利于其簇快取层的优良设计。

(3)ext3

ext3是由开放资源社区开发的日志文件系统,主要开发人员是Stephen Tweedie。ext3被设计成为ext2的升级版本,尽可能地方便用户从ext2fs向ext3fs迁移。ext3在ext2的基础上加入了记录元数据的日志功能,努力保持向前和向后的兼容性。这个文件系统称为ext2的下一个版本,也就是在保留ext2格式的基础之上加上日志功能。

(4)swap

swap文件系统用于Linux的交换分区。在Linux系统中,使用整个交换分区来提供虚拟内存,其分区大小一般应是系统物理内存的2倍。

在安装Linux操作系统时,就应创建交换分区,它是Linux正常运行所必需的,其类型必须是swap。交换分区由操作系统自行管理。

(5)vfat

vfat是Windows 9X和Windows NT/2000下使用的一种DOS文件系统,其在DOS文件系统的基础上增加了对长文件名的支持。

(6)nfs

nfs是Sun公司推出的网络文件系统,允许多台计算机之间共享同一文件系统,易于从所有这些计算机上存取文件。

(7)iso9660

iso9660是标准CDROM文件系统,通用的Rock Ridge增强系统,允许长文件名。

RHEL Server 6.4支持的文件系统很多,可以使用如下命令查看:

结果如图3-1所示。

图3-1 RHEL Server 6.4支持的文件类型

其中,2.6.32表示kernel的版本号,在使用的时候,需要使用自己的内核版本。从这里可以看出内核支持哪些文件系统,在使用的时候就可以挂载哪些文件系统。

3.1.2 Linux的目录结构

习惯了C:\Windows、D:\Program Files这样的Windows目录结构的读者初次接触Linux时,往往会被Linux相对复杂的目录结构所迷惑。其实,Linux的目录结构并不复杂,与Windows相比它反而更有规律性。

Linux文件系统具有如下几个特点:

● 逻辑上所有的目录有一个最高级别的根目录“/”,但下面的子目录却可以在不同的硬盘分区甚至不同的设备(如上面提到的光驱对应的/mnt/cdrom)上。这和Windows按照硬盘分区(C:、D:、E:)分割的目录结构不同。

● 所有的目录内容按照类别组织。例如,一个Linux下的应用程序,它的可执行程序在/usr/bin,而它的数据文件和帮助在/usr/share下,运行时加载的配置文件却又是从/etc下读取,而用户使用它编辑的内容则放在/home下面自己的目录中。这和Windows下目录按照应用程序分目录组织截然相反。

图3-2 Linux的目录结构树

下面分别介绍一些常用目录的功能与作用。

(1)/

Linux文件系统的入口,也是处于最高一级的目录。

(2)/bin

系统所需要的那些命令位于此目录,比如ls、cp、mkdir等命令,功能和/usr/bin类似,这个目录中的文件都是可执行的、普通用户都可以使用的命令。作为基础系统所需要的最基础的命令就是放在这里。

(3)/boot

Linux的内核及引导系统程序所需要的文件目录,比如vmlinuz initrd.img文件都位于这个目录中。在一般情况下,GRUB或LILO系统引导管理器也位于这个目录。

(4)/dev

dev是device(设备)的简写,用于存放系统中所有设备的设备文件。Linux将每一个I/O设备都看成一个文件,与普通文件一样处理,这样可使文件与设备的操作尽可能统一。

(5)/home

所有普通用户的宿主目录默认放在/home目录中,在创建用户时使用-d参数,可指定放在其他位置。

root用户的宿主目录为/root。

新建用户账户后,系统就会自动在该目录中创建一个与账户同名的子目录,作为该用户的宿主目录。

普通用户只能访问自己的宿主目录,无权访问其他用户的宿主目录。

(6)/lib与/usr/lib

此目录是存放函数库的地方。编译器在编译链接时,会自动到这两个目录下搜寻所需的库文件,也允许将库文件安装在其他位置,比如/usr/local/lib目录中。

库文件搜索路径在/etc/ld.so.conf文件中配置,它告诉编译器搜索库文件的位置。

修改/etc/ld.so.conf配置文件后,修改并不会立即生效,若要立即生效,应执行ldconfig命令,让系统重新加载配置文件。

(7)/lost+found

在ext2或ext3文件系统中,当系统意外崩溃或机器意外关机时,会产生一些文件碎片放在这里。在系统启动的过程中,fsck工具会检查这里,并修复已经损坏的文件系统。有时系统发生问题,有很多的文件被移到这个目录中,可能需要用手工的方式来修复或将文件移到原来的位置上。

(8)/mnt与/media

旧版Linux用于挂载CD-ROM、软盘和U盘等设备的挂载点目录是集中放在/mnt目录下的,新版采用/media目录。

例如:若要在Linux系统中查看光盘中的内容,则应先将光盘放入光驱,然后利用以下命令将光盘挂载到/cdrom目录:

(9)/root

/root目录是Linux超级权限用户root的家目录。

(10)/sbin

/sbin目录涉及系统管理的命令的存放,是超级权限用户root的可执行命令的存放地,普通用户无权限执行这个目录下的命令,这个目录和/usr/sbin、/usr/X11R6/sbin或/usr/local/sbin目录是相似的;凡是目录/sbin中包含的都是只有root权限才能执行的。

用户运行程序时,有时会产生临时文件。/tmp就是用来存放临时文件的。/var/tmp目录和这个目录相似。

(11)/usr

/usr是系统存放程序的目录,比如命令、帮助文件等。这个目录下有很多的文件和目录。当安装一个Linux发行版官方提供的软件包时,大多安装在这里。如果有涉及服务器配置文件的,会把配置文件安装在/etc目录中。/usr目录下包括字体目录/usr/share/fonts,帮助目录/usr/share/man或/usr/share/doc,普通用户可执行文件目录/usr/bin、/usr/local/bin或/usr/X11R6/bin,超级权限用户root的可执行命令存放目录(比如/usr/sbin、/usr/X11R6/sbin或/usr/local/sbin等),还有程序的头文件存放目录/usr/include。

(12)/var

这个目录的内容是经常变动的。var可以理解为vary的缩写。/var/log用来存放系统日志;/var/www目录用来存放Apache服务器站点的网页文件;/var/lib用来存放一些库文件,比如MySQL以及MySQL数据库的文件。