不同的操作系统需要使用不同类型的文件系统,为了与其他操作系统兼容,以相互交换数据,通常操作系统都能支持多种类型的文件系统,比如Windows
2000 Server,系统默认或推荐采用的文件系统是NTFS,但同时也支持FAT32或FAT16文件系统;DOS和Windows
9x一般采用FAT16或FAT32,不支持NTFS文件系统。
Linux内核支持十多种不同类型的文件系统,对于Red
Hat
Linux,系统默认使用ext2或ext3和swap文件系统,下面对Linux常用的文件系统作一个简单介绍。
1、ext2与ext3文件系统ext是第一个专门为Linux设计的文件系统类型,称为扩展文件系统,在Linux发展的早期,起过重要的作用。由于稳定性,速度和兼容性方面存在许多缺陷,ext现已很少使用。
ext2是为解决ext文件系统存在的缺陷而设计的可扩展、高性能的文件系统,称为二级扩展文件系统。ext2于1993年发布,在速度和CPU利用率上具有较突出的优势,是GNU/Linux系统中标准的文件系统,支持256个字节的长文件名,文件存取性能极好。
ext3是ext2的升级版本,兼容ext2,在ext2的基础上,增加了文件系统日志记录功能,称为日志式文件系统,是目妆Linux默认采用的文件系统。日志式文件系统在因断电或其他异常事件而停机重启后,操作系统会根据文件系统的日志,快速检测并恢复文件系统到正常的状态,并可提高系统的恢复时间,提高数据的安全性。若对数据有较高安全性要求,建议使用ext3文件系统。
日志文件系统是目前Linux文件系统发展的方向,常用的还用reiserfs和jfs等日志文件系统。
2、swap文件系统swap文件系统用于Linux的交换分区。在Linux中,使用整个交换分区来提供虚拟内存,其分区大小一般应是系统物理内存的2倍,在安装Linux操作系统时,就应创分交换分区,它是Linux正常运行所必需的,其类型必须是swap,交换分区由操作系统自行管理。
3、vfat文件系统
vfat是Linux对DOS,Windows系统下的FAT(包括fat16和Fat32)文件系统的一个统称。
4、NFS文件系统
NFS即网络文件系统,用于在UNIX系统间通过网络进行文件共享,用户可将网络中NFS服务器提供的共享目录挂载到本地的文件目录中,从而实现操作和访问NFS文件系统中的内容。
5、ISO
9660文件系统该文件系统中光盘所使用的标准文件系统,Linux对该文件系统也有很好的支持,不仅能读取光盘和光盘ISO映像文件,而且还支持在Linux环境中刻录光盘。
Red Hat
Linux支持的文件系统很多,在些就不逐一介绍,要想了解其支持的文件系统类型,可通过以下命令来查看:
# ls
/lib/modules/2.4.20.8/kernel/fs
以下是Linux支持的文件系统汇总1.minix:
是Minix操作系统使用的文件系统,是Linux最先使用的文件系统。它有许多缺点:分区只能小于64MB,只支持短文件名,单一的时间戳,等等。在软盘和动态磁盘领域仍然有用。
2.ext
是对Minix的扩展。已完全被ext2取代,内核最终将不会支持它。
3.ext2
是Linux使用的,性能很好的文件系统,用于固定文件系统和可活动文件系统。它是作为ext文件系统的扩展而设计的。ext2在Linux所支持的文件系统中,提供最好的性能(在速度和CPU使用方面),简短的说,ext2是Linux的主要文件系统。
4.ext3
是对ext2增加日志功能后的扩展。它向前,向后兼容ext2。意为ext2不用丢失数据和格式化就可以转换为ext3,ext3也可以转换为ext2
而不用丢失数据(只要重新安装该分区就行了)。我从2001年10月就使用ext3,它简单且稳定。在RedHat7.2和Mandrake8.0,中作为一个选项。强烈推荐使用这种文件系统。
5.xiafs
作为Minix文件系统的一个稳定,安全的扩展,提供基本的最常用的特点。目前已经停止开发和维护了。不太常使用。
6.msdos
是DOS,
Windows和一些os/2计算机使用的文件系统。文件名不能超过8个字符,然后跟一个3个字符的后缀。
7.umsdos
是Linux使用的扩展的DOS文件系统。增加了长文件名支持,UID/GID,POSIX权限,特殊文件等而依然保持和DOS文件系统兼容。
8.vfat
是Windows95,Windows
NT使用的扩展的DOS文件系统。增加长文件名支持。
9.proc
是一种假的文件系统,用于和内核数据结构接口,
它不占用磁盘空间,参考 man proc。
10.iso9660
是一种针对ISO9660标准的CD-ROM文件系统。自动支持两种扩展(看下面)。
11.High Sierra
是ISO9660标准的前身。Linux自动支持它。Rock
Ridge 是Rock Ridge interchange
Protocol协议的一个产品,用于进一步向Unix系统描述ISO9660文件系统下的文件。另外提供诸如长文件名,UID/GID,POSIX权限,等信息。Linux自动支持它。
12.hpfs
是OS/2使用的高性能的文件系统。在Linux系统中是只读的,因为缺乏相应的文档资料。
13.sysv
是SystemV/Coherent文件系统在Linux上的实现。它实现了所有的Xenix,SystemV/386,和
Coherent文件系统。
14.nfs
是用于存取远方计算机硬盘的文件系统。
15.smb
是支持SMB协议的网络文件系统,Windows用它来实现工作组共享。
16.ncpfs
是Novell
NetWare使用的,支持NCP协议的网络文件系统。
17.Devpts
是一个虚拟的文件系统,一般安装在/dev/pts。为了得到一个虚拟终端,进程打开/dev/ptmx,然后就可使用虚拟终端。
18.fat
不是一个单独的文件系统,而是msdos, umsdos
和vfat 文件系统的常用部分。
19.UFS
是一个广泛使用于各种操作系统的文件系统
20.swap
是一种特殊的分区,用于在内存和硬盘间交换数据的文件系统。
21.raiserfs
是Linux内核2.4.1以后(2001年1
月)支持的,一种全新的日志文件系统。
22.hfs
hfs(=hierarchical files
system)是苹果文件系统。
23.ntfs
Windows NT文件系统。Linux安装后,由系统产生的目录比较多,初学都对这众多的目录通常会感到很迷或,不知这些目录有何作用,彼此间有何区别,用户自己的目录创建在哪个目录下比较合适。
1、目录结构简介
与DOS和Windows系统一样,Linux也使用树形目录结构来组织和管理文件,所有的文件采取分级、分层的方式组织在一起,从而形成一个树型的层次结构。在整个树型结构中,只有一个根目录位于根分区,其它的目录、文件以及外部设备(包括硬盘、软驱、光驱、调制解调器等)文件都是以根目录为起点,挂接在根目录下面的,即整个Linux的文件系统,都是以根目录为起点的,其他所有分区都被挂载到目录树的某个目录中,通过访问挂载点目录,即可实现对这些分区的访问。
在DOS和Windwos操作系统中,每个分区都有一个独立的根目录,各分区采用盘符进行区分和标识,而Linux操作系统只有一个根目录。Linux的根目录"/"表示,路径表示可采用绝对路径,也可采用相对路径。
既然我们系统学习采用Red Hat Linux
9做为学习的实践系统,那么以下都以Red Hat Linux 9做为实践学习平台。我们来了解一下Red Hat Linux
9的目录结构。
Red Hat Linux
9采用标准Linux目录结构,从根目录开始的每个目录都用于存储某特定类型的文件,根目录下的目录如下所示:
在终端命令操作符下输入ls /显示如下:
[root@rh9 root]# ls /
bin dev home lib misc opt
root tftpboot usr
boot etc initrd lost+fount mnt proc sbin tmp
var
了解一些常用目录的功能作用如下:
(1)/bin和sbin
/bin目录通常存放用户最常用的一些基本命令,包括对目录和文件操作的一些实用程序、系统实用程序、压缩工具、RPM包管理程序等,如login、date、ping、netstat、mount、umount、su、vi、rpm等。
/sbin目录中存放的是只允许系统管理员(root)运行的一些系统维护程序,即只有用户root账户登录后,才能执行/sbin目录中的命令,如fdisk、mkfs、ext3、vfat、shutdown、dump、route、iptables等.
(2)/dev
dev是device(设备)的简写,/dev目录是一个非常重要的目录,用于存放系统中所有设备的设备文件。Linux将每个I/O设备都看成一个文件,与普通文件一样处理,这样可以使文件与设备的操作尽可能统一。从用户的角度来看,对I/O设备的使用和普通文件的使用一样,不必了解I/O设备的细节。设备文件可以细分为块设备文件和字符设备文件,分别存取以字符块和单个字符为单位。
对于设备文件进行打操作,实际上是在操作该文件对应的物理设备。下面的常用外部设备的名称需要牢记。
IDE硬盘设备的设备文件名以hd开头,后面按设备的ID号顺序从英文字母a开始顺序命名。如第一个IDE硬盘的设备名为hda,第二个IDE硬盘为hdb;对于硬盘中的分区,则在设备文件名后增加相应的数字来代表相应的分区,主分区从1开始,逻辑分区从5开始(一个硬盘最多可建4个主分区)。所以第一个IDE硬盘中的第一个主分区设备文件为hda1,第二个主分区为hda3,第一个逻辑分区为hda5,第2个逻辑分区为hda6。
SCSI设备(如SCIS硬盘,USB设备)的命名方法与IDE硬盘相同,只是设备名前两个字符为sd.如第1个SCSI设备的设备名为sda,第2个SCSI设备名为sdb,第一个SCIS硬盘的第一个逻辑分区为sda5。软驱设备名为fd后面跟第几个软件数字,如第一个软驱的设备名为fd0。在具体使用时,应注意表达出完整的设备文件名及路径,比如若要格式化软盘,则命令应表达为:
# mke2fs /dev/fd0
光驱常用的设备文件名为/dev/cdrom,它实际上是一个符号链接文件,该文件指向实际的光驱设备。可用以下命令查看当前光驱的实际设备文件名。
# ll //dev/cdrom
lrwxrwxrwx 1 root root 8 jun
14 12:01 /dev/cdrom->/dev/hdc
SCSI磁带设备的设备文件用/dev/st来表示;
计算机的串行接口用/dev/ttyS表示,其中的COM1的设备文件名为/dev/ttyS0;
调制解调器的设备名为/dev/cua;
空设备用/dev/null表示,任何输出到该
设备的信息将有去无回,若以该设备作为输入,则会创建一个零长度的文件;
鼠标常用的设备名为/dev/mouse,它指向鼠标实际连接设备的一个符号链接文件,若鼠标接在COM1,则
连接的实妹鼠标设备为/etc/ttyS0;
PS2接口的实际设备名是/dev/psaux;
USB接口的初际设备名是/dev/input/mice
(3)/home
系统中所有普通用户的宿主目录,系统默认放在/home目录中(通过在创建用户时使用-d参数也可指定放在其它位置),root用户的宿主目录为/root。
新建用户账户后,系统就会自动在该目录中创建一个与账户同名的子目录,作为该用户的宿主目录。普通用户只能访问自己的宿主目录,无权访问其他用户的宿主目录。
(4)/lib
/lib是library的简写,用于存放系统的动态链接库,几乎所有的应用程序都会到这个上的共享库。
(5)/usr
/usr目录一般用来存放与用户直接相关的程序或文件。用户安装的程序或要自行建立的目录一般应放在该目录下面,它是占用硬盘空间最大的一个目录,其下一些比较重要的子目录,主要有:
/usr/bin 存放有一些实用程序。
/usr/etc
存放有许多各种各样的配置文件。
/usr/include
该目录及其子目录是存放C编译程序的所有包含文件。对编译Linux源程序至关重要。
/usr/lib
包含有程序编译后的连接时需要使用的各种库。
/usr/src
用于存放Linux源程序。
/usr/local/src
通常用来存放Linux的软件安培育包源代码.
/user/local 用户软件包通常安装在该 目录中。
(6)/boot
用于存放与系统启动相关的各种文件,包括系统的引导程序和系统内核程序,不要轻易对该目录进行操作。
(7)/etc
是Linux系统中一个非常重要的目录,用于存放系统管理时要用到的各种配置文件,包括网络配置、设备配置信息、X-Windows系统配置、用户信息等。如securetty、passwd、inittab、fstab。
(8)/lost+fount
用于存放当系统非正常关机后重启系统时,不知道该向那个文件恢复的碎片文件。
(9)/mnt
CDROM,软盘之类可移动介质的挂载点目录一般放在该录目录下,常有cdrom和floppy两个子目录,分别是光盘和软盘的挂载安装点。通过挂载光盘或软盘后,对应进行/mnt/cdrom或/mnt/floppy子目录,就可访问光盘或软盘中的内容。注意挂载点目录中不要有任何文件,否则将无法正常挂载。
列如要查看光盘中的内容操作如下:
# mount /mnt/cdrom
# cd /mnt/cdrom
# ll
# cd
# umount /mnt/cdrom
也可使用光盘的设备文件来挂载或卸载光盘,如
# mount /dev/cdrom
# umount /mnt/cdrom
(10)/proc
目录中的内容是系统自动产生的,其内容是当前系统运行的进程的一个虚拟镜像以及记录当前内存内容的kernel文件。可以在该目录中看到一些由当前运行的进程号组成的子目录。
用cat命令显示输出该目录下的一些特殊文件内容,可查看到系统的一些特殊信息,如:
cat /proc/cupinfo
详细显示当前系统CPU的硬件信息
cat /proc/interrupts
显示当前系统各设备所使用的中断信息.
cat /proc/meminfo 显示内存信息
cat /proc/version 显示linux的版本号.
(11)/tmp与/var
/tmp用于存放临时文件,如程序执行期间产生的临时文件。
/var目录则用于存放经常变化的文件,对于存取频繁或内容经常变化的文件,可放在该目录中。