• 1. 第4章 文件系统4-1
  • 2. 4.1 UNIX文件的概念文件系统的概念:文件系统是指操作系统内管理文件信息的程序系统。在UNIX系统中,文件系统指的是存储介质上有组织的文件集合。 文件系统的作用:文件系统控制文件和目录中的信息以何种方式存储在硬盘或其它的存储介质中,并且控制每个用户以何种方式访问何种信息。 文件系统中最重要的概念是文件。 Unix文件的命名规则:在理论上可以使用除了“、” “/”和“空字符(ASCII NULL)”以外的任何字符,但最好是字母或数字。由于某些字符在Shell中有特殊含义,因此文件名中不能含有这些字符。教材P57的表4-1给出了文件名中不能使用的字符。4-2
  • 3. 4.1 UNIX文件的概念树形目录结构:目录结构能够用一个层次化的树形结构来表示。树上的每一个分支可以是目录或者文件。(下图中:椭圆表示目录,矩形表示一个文件) 4-3
  • 4. 4.1 UNIX文件的概念文件系统层次 由于一个UNIX发布版本通常包括几百个文件和程序,所以每个UNIX系统都使用一种默认的目录结构。 根目录:在目录的顶端是根目录(因为它在一个倒转的树的顶部),根目录由一个反斜杠(/)来表示。 目录和文件级别与层次:从根目录向下处在第一层中目录和文件称为一级目录和一级文件。处在第二层次中的目录和文件称为二级目录和二及文件,依次类推。每一级的目录和文件都包含在上一级的相应目录中。 文件和目录的基本操作:Unix同时提供了一些命令,使用户可以根据自己的需要建立新的目录,并可以浏览这些目录的内容或将文件及文件夹复制、移动到他们希望的目标位置目录中。 绝对路径和相对路径:绝对路径是指从根目录“\”开始的路径;相对路径是指从当前工作目录开始的路径。详见教材表4-2、4-3 如:上图中,如果当前目录是在/home中,则路径/home/danis/work/为绝对路径;路径danis/work/为相对路径。4-4
  • 5. 4.1 UNIX文件的概念 一些特殊的目录路径绝对路径相对于/home/user3的路径/home../home/user2../user2/home/user1/f1../user1/f1/ ../../tmp/f1../../tmp/f1/usr/bin/vi../../bin/vi说明:/ -----代表根目录 ; · ----代表当前目录; .. ----代表上一级目录; ~ -----代表当前用户的主目录4-5
  • 6. 4.2 文件类型文件是字节序列,在UNIX系统中,一切都是以文件的形式来组织和管理的。 UNIX中的基本文件类型有四种: 普通文件 目录文件 设备文件(特殊文件) 链接文件 4-6
  • 7. 4.2 文件类型普通文件 作为一个用户,你使用的信息会作为一个普通文件来存放。 普通文件可以含有如手稿或程序正文的常规ASCII字符,可以按用户的意愿进行建立、修改和删除。 普通文件中的文本文件主要包括ASCII文本文件和一些可执行的脚本文件等; 二进制文件主要是32位的可执行文件等; 数据文件主要是系统中的应用程序运行时产生的文件。 目录文件 目录是个含有其它文件并包含这些文件的位置和属性信息的文件。 例如,一个目录包含它含有的所有文件和目录的清单,以及它们的地址、特性、文件类型(普通文件、链接、目录还是特殊文件)和其它属性。 4-7
  • 8. 4.2 文件类型设备文件 设备文件又叫特殊文件,表示一个物理设备。它可以是个终端,一个通信设备,或是象磁盘驱动器这样的存储设备。从用户的角度来看,UNIX系统处理特殊文件的方法与处理普通文件的方法相同,也就是说,用户可以完全按读写普通文件的方法读写设备。 设备文件一般放在/dev目录下。 设备文件的分类:它分为块设备文件和字符设备文件。 块设备文件:以区块为输入输出单元,如磁盘; 字符设备文件:是以字符作为输入输出单元,如串口。 说明:此处只是给出设备文件的相关概念,详细内容在4.5 节说明。4-8
  • 9. 4.2 文件类型 链接 硬链接(Hard Link):链接文件和被链接文件的内容完全相同,它相当于被链接文件的一个副本。 符号链接(Symbolic Link):生成的链接文件的名称只是被链接文件的一个代表符号(指向源文件位置的指针),其相当于Windows系统中的快捷方式。 命令格式:ln [参数] 源文件名 生成的链接文件名 参数: -f 如果目标文件已经存在,则覆盖它,否则就创建它 -s 创建文件的符号链接。 建立硬链接时,链接文件和被链接文件必须位于同一个文件系统中,并且不能建立指向目录的硬链接。而对符号链接,则不存在这个问题。 [root@redhat]# ln –f –s file file1 [root@redhat]# ln –f –s file file2 [root@redhat]# -rw-r--r-- 1 root root 24 Oct 12 23:52 file lrwxrwxrwx 1 root root 4 Oct 12 23:59 file1 -> file lrwxrwxrwx 1 root root 4 Oct 12 23:59 file2 -> file [root@redhat]# ls -l链接数为1 ,符号链接不增加链接数符号链接文件 能直接显示链接到哪个原始文件4-9
  • 10. 4.2 文件类型UNIX系统对文件的标识 (a)普通文件:用“-”标识 (b)目录文件:用“d”标识 (c)字符设备文件:用“c”标识 (d)块设备文件:用“b”标识 (e)连接文件:用“l”标识 (f)管道文件:用“p”标识 在文件系统的实际操作中,使用“ls – l ”命令查看文件列表中第一列的第一个字母表示了对应文件的文件类型。4-10
  • 11. 4.2 文件类型静态文件(可共享文件) 这里所说的可共享文件是指可以在网络中的主机之间共享使用的文件,因为它们不包含每个主机特定的信息。 静态文件主要存在于三个目录中:/opt、/usr、/sbin。 /opt: 这个目录一般用来存放应用程序。开发人员和系统管理员会用它来安装新的产品和本地使用的应用程序。 /usr/bin: 这个目录包含了基础的UNIX系统操作和文件处理的命令,所有的用户都有权限读取这个目录("bin" 是 binary 的缩写)。 /usr/sbin: 这个目录中有所有的在帮助手册1m章节中的命令,这些命令都是系统管理命令。 4-11
  • 12. 4.2 文件类型动态文件(私有文件) 动态文件是指与Unix主机自身特定信息的配置和管理相关文件,一般由root帐户对其操作、配置和管理,其他未经授权的帐户不能对其进行任何操作,这些文件主要存在于/home、/etc、 /stand、/tmp、/dev、/mnt和/var目录中,下面分别说明这些目录的作用。 /home 用户主目录的基点,比如用户user的主目录就是/home/user。用户对自己的目录有完全的控制权,并负责对自己的目录下面的子目录和文件进行组织和管理。 /etc 这个目录中有许多的系统配置文件。 /stand/vmUNIX 这个文件存储的是UNIX系统内核的文件。当系统启动时,会将这个文件加载入内存,对通过内核对所有的系统操作进行控制。(Linux中是/boot)4-12
  • 13. 4.2 文件类型/tmp UNIX操作系统的一个临时空间,操作系统创建中间文件,或是应用程序或者用户的临时文件通常都是放在这个目录下面(注意:UNIX系统的惯例:无论何时,都可以删除tmp目录下的任何文件)。 /dev 这个目录下有那些可以被联接到你系统中的硬件设备的文件,由于这些设备是作为一个到设备之间的联接,数据从来不会被直接存储到这些文件中,这些问文件通常被叫做特殊文件或是设备文件。 /mnt 这个用来安装其它的设备(例如:软盘、光驱等)。 /var/mail 这个目录包括每一个有邮件的用户的信箱。 /var/news 这个目录包括当前的新闻信息的所有的文件。里面的内容可以通过键入news -a 来显示。 /var/tmp 这个目录通常被用于用户的临时空间。4-13
  • 14. 4.3 文件系统结构UNIX所有的子目录都创建在根目录(/)下,从逻辑上构成了目录树;物理上,它们可能位于一个单个的文件,或分散在几个文件系统中。一般而言,UNIX操作系统的可共享部分的数据存在于/usr和/sbin下面。只有操作系统能够安装文件到这些目录下。每个主机特定的信息位于文件系统的动态数据目录(即:私有文件目录)下。下面只列出了部分目录通常的定义如教材P65的表4-5,其它详见表4-6、表4-7、表4-8和表4-9. 注意教材中的目录结构是Unix系统的,Linux系统的文件系统分布结构略有不同,其一些主要目录的功能如下所示: /boot 内核引导目录 /bin 二进制可执行命令  /dev 设备特殊文件  /etc 系统管理和配置文件  /etc/rc.d 启动的配置文件和脚本  /home 用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示 /lib 标准程序设计库,又叫动态链接共享库,作用类似windows里的.dll文件 /sbin 系统管理命令,这里存放的是系统管理员使用的管理程序 /tmp 公用的临时文件存储点 4-14
  • 15. 4.3 文件系统结构 /root 系统管理员的主目录 /mnt 系统提供这个目录是让用户临时挂载其他的文件系统 /lost+found 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows下叫什么.chk)就在这里 /proc 虚拟的目录,是系统内存的映射。可直接访问这个目录来获取系统信息。 /var 某些大文件的溢出区,比方说各种服务的日志文件 /usr 最庞大的目录,要用到的应用程序和文件几乎都在这个目录。其中包含: /usr/X11R6 存放X window的目录 /usr/bin 众多的应用程序 /usr/sbin 超级用户的一些管理程序 /usr/doc linux文档 /usr/include linux下开发和编译应用程序所需要的头文件 /usr/lib 常用的动态链接库和软件包的配置文件 /usr/man 帮助文档 /usr/src 源代码,linux内核的源代码就放在/usr/src/linux里 /usr/local/bin 本地增加的命令 /usr/local/lib 本地增加的库 4-15
  • 16. 4.3 文件系统结构表4-5 部分目录通常的定义目录定义/usr可共享的操作系统命令,库,和文档/sbin引导系统和安装其它文件系统的最少需要的命令/opt应用程序/etc系统配置文件,不再包含可执行文件/dev设备文件/var动态信息例如日志,脱机打印缓冲文件/mnt本地加载的文件系统/tmp操作系统临时文件/stand(在linux中此目录变为/boot)内核和引导加载器/home用户目录4-16
  • 17. 4.3 文件系统结构查找和定位文件 find命令:在文件系统层次结构中查找文件 whereis命令:定位源程序、二进制代码和帮助手册的位置 which命令:在PATH指定的路径中定位一个可执行文件 file 命令:判断文件的类型4-17
  • 18. 4.3 文件系统结构find命令 格式:find [开始路径] [查找的条件] 功能:根据一定的条件查找文件,查找的条件之间可以有 –a(and)或者-o(or)的逻辑关系. 条件可以有以下的一些类型: -name filename 以文件名为条件进行查找 -type x 查找类型为x的文件,x目前可以取的值有d(目录) f (文件) -user username 查找文件的属主为username的文件 -atime n 查找n天前被访问过的文件 -mtime n 查找n天前被修改过的文件4-18
  • 19. 4.3 文件系统结构find命令(续) 对找到的文件还可以进行一些操作 如 -print 显示找到的文件的路径名称 -exec Command{} 执行一个命令,命令必须用“\;”结束# find /home -name *.c -print/home/lisi/file1.c /home/lisi/file2.c /home/lisi/lib/src.c /home/usr/proc.c /home/admin/function.c #查找目录/home下面所有的C程序源文件,并显示出来# find / \( -name core –o –name dump \) –atime +3 \ -exec rm {}\; 带转义符的(查3天前访问过的查询条件的 or对查到的文件进行删除操作查询条件查询条件4-19
  • 20. 4.3 文件系统结构 whereis命令 默认的情况下,whereis会去搜索源程序、二进制文件和帮助手册。你可以使用-b选项来限制它只搜索二进制代码。 命令举例:使用whereis命令来定位ls命令的可执行二进制文件位置。 # whereis –b ls which 命令 which命令用来查看命令文件的别名,及其在PATH指定路径中存放的目录位置。如:which ls4-20
  • 21. 4.3 文件系统结构file命令 file命令对文件作一系列的测试,然后会试图对文件归类。这个命令在判断一个命令是一个shell脚本还是一个二进制的可执行文件时有用。 如:file /etc/cat strings 命令 strings命令可以找出一个二进制文件中的可用信息,它会在屏幕上显示出文件中的任何可以打印的字符。 如:strings /root/install.log4-21
  • 22. 4.4 文件的权限和存取Unix文件的属性包括三种权限(读、写和执行),三组用户(属主用户、同组用户和所有用户)。要存取一个文件,需要用户的身份和与文件相关的权限。 UNIX系统为一个文件提供三层存取结构: user 代表文件的所有者 group 代表对文件有存取权限的组 other 代表系统中的其他所有的用户 每一个文件都属于系统中的一些用户。文件的属主有完全控制权,可以决定什么人有什么权限存取文件,属主能允许或拒绝其系统中的其他用户存取文件。 4-22
  • 23. 4.4 文件的权限和存取chmod改变一个文件的权限 chmod命令被用来更改一个文件或目录的存取权限,只有文件的属主(或root-系统管理员)才能改变权限。 为了保护一个文件不被删除和破坏,文件所在的目录和文件本身一定不能有写的权限。文件写的权限允许用户改变(或是覆盖)文件的内容,如果一个目录有写的权限,会允许用户删除目录中的文件。 4-23
  • 24. 4.4 文件的权限和存取1. 使用符号标记修改文件访问权限 chmod [ugoa][+ - =][rwx] file/dir [ugoa] :表示命令中指定的用户类型 u 表示文件的属主 user o 表示其他的所有用户 other user g 表示与文件属主同属一个组的别的用户 group user[+ - =] :命令指定的操作码 + 表示给用户加上某权限 - 表示将用户减少某权限 = 表示为用户设置某权限 [rwx] :访问权限的具体说明 r 表示读的权限, w 表示写的权限 x 表示执行的权限chmod ug+rx file1 对属主及其同组用户增加读、执行权限chmod g-x file2 对同组其他用户减少执行的权限4-24
  • 25. 4.4 文件的权限和存取2.采用8进制数指定新的访问权限 该写法用三个二进制数字表示用户的权限,每一位分别表示 r, w 和 x 0 = 000, 表示没有rwx的任何一种权限 1 = 001,表示执行权限 6 = 110 ,表示有读写权限,没有执行权限 ,依此类推用3个8进制数字,分别表示ugo三种用户 的权限 表示u,g,o三种用户都有读、写和执行的权限 711表示u用户有读写执行权限,其他所有用户只有读的权限chmod 777 file1 表示ugo三种用户都授予读写和执行权限chmod 700 file2 表示只有文件属主能读写和执行该文件(root用 户有所有的权限) 4-25
  • 26. 4.4 文件的权限和存取umask权限掩码 这个命令会改变你新创建的文件和目录的默认权限设置。你指定的掩码在你登录系统时一直有效,umask 对已经存在的文件没有任何作用。 举例:umask –S (显示当前的默认权限) umask g=r,o=r (设置新建文件及文件夹的默认权限) 注意:umask设置文件的默认权限时如有“执行权限”,将自动被取消。 touch更新文件的时间标志 touch 命令可以用来创建新文件,空文件。如果指定的文件已经存在,touch会更新文件的时间标志。它对文件的内容没有影响。 举例:touch test_file4-26
  • 27. 4.4 文件的权限和存取chown更改文件的属主 语法:chown owner [:group] filename... chown功能是更改一个文件的属主和组ID 只有文件的属主和root才能更改一个文件的所有权。 只有文件的属主才能控制文件的属性和存取 [lisi@redhat9]$ ls –l total 44 -rw-r--r-- 1 lisi lisi 191 Sep 12 file1.txt -rw-r--r-- 1 lisi lisi 124 Sep 12 file2.c [lisi@redhat9]$ chown root file2.ctotal 44 -rw-r--r-- 1 lisi lisi 191 Sep 12 file1.txt -rw-r--r-- 1 root lisi 124 Sep 12 file2.c [lisi@redhat9]$ls –l[lisi@redhat9]$4-27
  • 28. 4.4 文件的权限和存取chgrp命令 格式 : chgrp 组名 文件名 功能:更改一个文件的所属用户组。只有文件的属主和root才能更改文件的组。[lisi@redhat9]$ ls –l total 44 -rw-r--r-- 1 lisi lisi 191 Sep 12 file1.txt -rw-r--r-- 1 lisi lisi 124 Sep 12 file2.c [lisi@redhat9]$ chgrp root file2.ctotal 44 -rw-r--r-- 1 lisi lisi 191 Sep 12 file1.txt -rw-r--r-- 1 lisi root 124 Sep 12 file2.c [lisi@redhat9]$[lisi@redhat9]$ls –l4-28
  • 29. 4.5 管理设备文件操作系统与外部设备(例如:磁带驱动器、磁盘驱动器、打印机、终端以及moderm等)是通过一种被称为设备文件的文件来进行通信。UNIX输入输出到外部设备的方式和输入输出到一个文件的方式是相同的。在UNIX 同一个外部设备进行通讯之前,这个设备必须首先要有一个设备文件存在。 设备文件和普通文件不一样,设备文件中并不包含任何数据。 设备文件存放在/dev目录中,可以用 ls –l /dev|more 命令查看。 4-29
  • 30. 4.5 管理设备文件设备文件名的第一个字符指明了这个设备文件的类型。 字符设备文件: 第一个字符为“c",表明这个文件是一个字符设备文件。字符设备文件传送数据给设备的时候,一次传送一个字符。字符设备文件有时也被称为“raw” 设备文件。 块设备文件: 第一个字符为“b”的设备文件是一个块设备文件。4-30
  • 31. 4.5 管理设备文件设备文件主号 每一个设备文件都有一个“主号”,用ls –l命令输出内容的第5字段中逗号前面的数字即为设备文件的主号。主号表示了系统存取该设备的“内核驱动程序”的引用号码。 设备文件次号 每一个设备文件都有一个次号。用ls –l命令输出内容的第5字段中逗号后面的数字即为设备文件的次号。它定义了该设备在系统中的物理位置。 设备文件名 设备文件名遵循一个标准的命名的约定。 4-31
  • 32. 4.5 管理设备文件典型的设备文件: 软盘设备文件:/dev/fd0~/dev/fd7表示标准软盘。 硬盘设备文件:包括:IDE硬盘和SCSI硬盘 IDE硬盘文件:/dev/hda~/dev/hdt分别表示第1~20块物理硬盘;每一块硬盘又可以划分成1~32个逻辑分区,如:将第1块物理硬盘划分为4个逻辑分区,则它们的设备文件表示形式是:/dev/hda1、/dev/hda2、/dev/hda3和/dev/hda4 SCSI硬盘文件:/dev/sda~/dev/sdz分别表示第1~26块物理硬盘;每一块硬盘又可以划分成多个逻辑分区,如:将第2块物理硬盘划分为4个逻辑分区,则它们的设备文件表示形式是:/dev/sdb1、/dev/sdb2、/dev/sdb3和/dev/sdb4 光盘设备文件:/dev/cdrom 表示光盘驱动器4-32
  • 33. 4.6 配置文件系统加载新文件系统 UNIX系统的文件系统是通过安装和卸载进行维护的。可以使用命令mount来将一个文件系统 安装到一个目录上,也可以用umount命令来将一个文件系统卸载下来,这个目录就称为“加载点”。因此应该事先用“mkdir 目录名”命令,为将要加载的新文件系统创建一个加载点(mountpoint)。 格式:mount [-ht] filesystem mountpoint filesystem 是文件系统所在的设备名,通常是磁盘或磁盘分区的名称。 mountpoint 是安装点的描述信息,它说明将该文件系统安装到哪个目录上,需要使用全路径名,而且该目录必须已经存在。 参数 -t 指定一个文件系统的类型(当/etc/filesystems中存在要加载的文件系统类型时,可以省略此参数) 举例: 例1.将dos格式的软磁盘文件系统安装到/mnt/floppy目录下 $mount –t msdos /dev/fd0 /mnt/floppy 例2.要使用光盘,可以键入如下命令 $mount /dev/cdrom /mnt/cdrom4-33
  • 34. 4.6 配置文件系统浏览已经安装的文件系统 命令格式:mount -v 卸载已经安装的文件系统 umount 命令是用来将上次mount上去的文件系统卸载下来,使用的格式如下: 命令格式:umount [option] filesystem 举例:umount /mnt/cdrom或 umount /dev/cdrom4-34
  • 35. 4.6 配置文件系统创建一个新的文件系统通常是由于以下的原因: 预期当前的文件系统会很快达到其最大的容量 当前的文件系统已经达到最大的容量 因为一些特殊的原因,想要物理上分割文件系统。例如,不同组的用户要使用不同的磁盘空间 想要创建一个唯一属主的文件系统或者是要创建镜像 创建文件系统的基本方法:如果你要扩展文件系统的整体容量,你可以创建新的文件系统,并且把它加入到原来的文件层次结构中。 注意:文件系统可以创建在一个单独的磁盘上,也可以创建在一个逻辑卷中,如:空闲的分区或扩展分区。所以,应该根据具体情况而定,不是必须要加一块新硬盘。4-35
  • 36. 4.6 配置文件系统Linux配置文件系统的步骤 第一步,使用fdisk –l 命令查看本地磁盘的分区情况,确定新做文件系统的磁盘(如:/dev/sdb或/dev/hdb,注意:有可能有的物理磁盘没有用完)。 第二步,选择新做文件系统的磁盘,使用fdisk命令创建新的文件系统分区。如: #fdisk /dev/sdb 第三步,格式化新建分区。如: #mkfs –t ext3 /dev/sdb1 说明:-t参数用于指定文件系统格式,常用的文件系统格式有:ext2(第二扩展文件系统,2001年之前Redhat版本使用);ext3(第二扩展文件系统,当前默认的格式);vfat(相当于Windows fat32格式);如果想把linux的交换空间(如:/dev/sda3)格式化,可以键入命令: #mkswap /dev/sda34-36
  • 37. 4.6 配置文件系统Linux配置文件系统的步骤(续) 第四步,为这个文件系统创建加载点目录,使用mkdir命令。如: # mkdir /extdisk(也可以创建在其他地方) 第五步,使用mount命令加载这个新文件系统。 #mount –t ext3 /dev/sdb1 /extdisk 说明:如果/etc/filesystems文件中包含了ext3文件系统格式,命令中的“-t ext3”参数可以不写,命令会自动找出与/dev/sdb1分区相应的格式。 第六步,将这个文件系统加入到/etc/fstab文件中,设置成自动加载,可以免去每次重启系统都手动加载该文件系统的麻烦。4-37
  • 38. 4.6 配置文件系统自动加载文件系统 Unix系统中可以通过在/etc/mnttab文件中加入一条记录来实现,然后使用mount–a 或mount all命令自动加载文件系统。 Linux系统使用的文件是/etc/fstab,功能和Unix 中/etc/mnttab文件的作用相同,记录的内容格式也很相似。fs_spec   fs_file   fs_type  fs_options  fs_dump fs_pass /dev/hda1   /      ext3     defaults    1    1 /dev/hda2   /home    ext3     defaults    1    1 /dev/hda3   /var     ext3     defaults    1    1 /dev/hda4   swap    swap     defaults    0   0 /dev/cdrom  /mnt/cdrom  iso9660   noauto,user  0   0 /dev/fd0   /mnt/floppy   auto    noauto,user   0   0 none    /proc     proc      defaults     0   0 none    /dev/pts   devpts  gid=5,mode=620   0   0 4-38
  • 39. 4.6 配置文件系统说明:文件/etc/fstab存放的是系统中的文件系统信息。当正确的设置了该文件,则可以自动加载一个文件系统,每种文件系统都对应一个独立的行,每行中的字段都有空格或tab键分开。文件中各个字段的含义如下: fs_spec:设备名或者设备卷标名。 fs_file:该字段描述希望的文件系统加载的目录点,对于swap设备,该字段为none;对于加载目录名包含空格的情况,用40来表示空格。 fs_type:定义了该设备上的文件系统类型,一般常见的文件类型为ext2、ext3、swap、nfs(Linux设备的常用文件类型)、vfat(Windows系统的fat32格式)、NTFS、iso9600等。 fs_options:指定加载该设备的文件系统是需要设定的加载方式参数,如果有多个用“,”隔开,对于大多数系统使用“defaults”就可以满足需要。 defaults 包括若干‘mount’的可选项:rw 可读写、 suid 允许设置用户标识符(set-user-identifier)、exec 允许运行程序、auto 开机时自动挂载、nouser 只有‘root’有权卸载、async 允许磁盘延迟存取(caching) 。 其他常见的选项包括:4-39
  • 40. 4.6 配置文件系统举例:如“/dev/cdrom /mnt/cdrom iso9660 noauto,user 0  0”记录就表示用户可以加载光盘,但系统开机时不自动加载光盘。4-40
  • 41. 4.6 配置文件系统fs_dump 该选项被“dump”命令使用来检查一个文件系统是否应该自动写入磁盘,若需要自动写入磁盘就设置为1,否则就设置该字段为0 。说明: 一般位于本地硬盘上,用户“即可读又可写”的类型为ext2或ext3的文件系统,此项设置为1,如:/ 、/boot、/home等。 其他的可移动系统如软盘、cdrom、远程共享系统及本地“虚拟文件系统”如:/proc(挂载的是进程树)、/pts(伪终端支持pseudo terminal support )、swap(系统交换分区)等,此项设置为0。 fs_pass 该字段被fsck命令用来决定在启动时需要被扫描的文件系统的顺序,根文件系统“/”对应该字段的值应该为1,其它本地硬盘上文件系统应该为2。若该文件系统(如:本地虚拟文件系统及软盘、光盘等)无需在启动时扫描则设置该字段为0 对于Unix,创建文件系统过程看教材P83-89。4-41
  • 42. 4.7 文件系统内部组织Unix文件系统内部组织结构:在UNIX里,磁盘是标准块设备,一个UNIX磁盘被分为四个区域: 主引导块 超级块 i-node列表块(索引节点列表块) 数据块(存储块)。 Unix文件系统确认文件方法:UNIX文件系统把每个文件名与一个索引节点号相联系,用索引节点来确定每个文件。 引导块: 引导块是存储系统启动时所需的信息,保存着引导程序,系统启动时激活这段程序。引导块总是位于硬盘的第一个柱面组,占用分区的前8KB。4-42
  • 43. 4.7 文件系统内部组织超级块:包含磁盘自身(即存储文件系统)的信息,这些信息包括: 1. 文件系统中总块数(文件系统大小) 2. 文件系统中数据块的数目 3. 索引节点的数目 4. 柱面组的数目 5. 块的大小 6. 磁盘碎片的大小 7. 空闲块的个数 8. 空闲的索引节点的个数 4-43
  • 44. 4.7 文件系统内部组织超级块在文件系统中的地位:超级块对文件系统极其重要,所以UNIX系统一般会采用多个备份来确保它的安全。 超级块偶尔产生的故障现象:当没有正常关闭系统或硬盘出现故障的时候,会造成默认超级块不能正确读取或者是和其备份的超级块不一致。这时,就需要进行修复工作。 超级块的故障修复:通常在重新启动系统的时候,系统会调用fsck命令来自动完成修复工作;当fsck发现默认的超级块已经损坏而且无法自动修复的时候,会提示用户手动进行修复。 4-44
  • 45. 4.7 文件系统内部组织手动修复超级块的步骤: 1.以单用户的身份(需要超级用户帐号和密码)进入系统(一般系统会自动要求进入单用户状态); 2.如果损坏的文件系统已经安装到文件树中,可以进入另一个目录,然后将损坏的文件系统卸载; 如命令:umount /extdisk (说明:一般情况下会提示不能挂载的,如果是linux系统会出现如“mount:wrong fs type, bad option, bad superblock on /dev/sdb1” 之类的错误) 3.使用newfs -N命令显示备份超级块的值(RedhatLinux中使用命令dumpe2fs /dev/sdb1|grep superblock)。 4.从列出的备用超级块中选择一个作为fsck命令的一个选项进行修复。命令:fsck –b 8193 /dev/sdb1 (其中,8193 就是上一步列出来的/dev/sdb1的备份超级块中选择出来的一个)。 5.用命令:mount /dev/sdb1 /extdisk 重新挂载。 说明:如果不是“超级块出错”只要键入命令:fsck –y /dev/sdb1 即可修复,然后再重新mount一下或reboot计算机即可。4-45
  • 46. 4.7 文件系统内部组织i-node列表块:索引节点(i-node),索引节点包含了一个文件除去文件名以外的所有信息。索引节点列表块维护着索引节点的列表,列表的每个条目是一个64字节(或者128字节)存储区域的索引节点,它包含了下列信息: 1. 文件类型:普通文件、目录、块设备文件、字符设备文件、链接等。 2. 文件权限:读、写、执行权限的组合。 3. 文件的硬链接数。 4. 文件所有者的用户ID。 4-46
  • 47. 4.7 文件系统内部组织i-node列表块(续): 5. 文件所属的组ID 6. 文件大小(字节数) 7. 一个包含15个磁盘块地址的数组 8. 文件最近的访问日期和时间 9. 文件最后一次修改的日期和时间 10.文件创建的日期和时间 查看文件的索引节点:硬盘上的每个文件,都有一个描述它的信息的索引节点。使用ls -i 命令可以查看每个文件的索引节点号和文件名。 查看磁盘文件系统的索引节点统计:要查看某个磁盘所有文件系统索引节点的统计情况,可以使用df –i命令实现。 4-47
  • 48. 4.7 文件系统内部组织数据块:也叫做存储块,它占用了文件系统的其他所有空间。 数据块的内容:包含了存放在磁盘上的数据文件。 数据块的大小:数据块是储存数据的基本数据单元,在linux中可以设置三种数据块大小分别是1024(1kB),2048(2KB),4096(4KB)。默认大小1024字节。可以在分区格式化时使用命令:mkfs –b 2048 /dev/sdb1 的形式指定。 说明:对一个普通文件来说,数据块存放了文件的内容;对一个目录来说,数据块中存放了此目录中所有文件的索引节点号和文件名的信息。可以用如下命令查看这些信息: ls –i4-48
  • 49. 4.7 文件系统内部组织UNIX定位文件的整体过程 目录结构i节点列表磁盘空间4-49
  • 50. 4.7 文件系统内部组织登录时,UNIX读取根目录(i-node2),找出用户主目录及存储用户主目录的索引节点号。当用户改变目录时,UNIX用新目录的索引节点号进行替换。 用系统工具或者命令访问文件或者某个程序打开文件时,UNIX查找指定文件名的目录。每个文件名与索引节点表中一个索引节点相联系。UNIX通过用户工作目录的索引节点开始搜索,但是如果用户给了绝对路径名,则从根目录开始查找。4-50
  • 51. 4.8 文件系统的维护 参数[option] 说明: -k 以k字节为单位显示分区信息 -m 以m字节为单位 -T 显示文件系统类型 -h 以便于理解的方式显示大小,如 2.1G, 190M等 df 命令:用来监控磁盘使用情况,检查文件系统的有效空间。 命令格式: df [option] [resource] 说明:其中 ,[resource] 表示选定的系统资源,既可以用文件系统设备名称(如:/dev/sda1)也可以是设备的挂载目录名称(如:/boot)。-i选项,输出中会增加三个字段: Iused 文件系统当前使用的inode的数目 Ifree 文件系统剩余的inode数目 %used 文件系统当前使用的inode数目所占 的百分比监控磁盘的使用情况举例:①df -h 以便于理解方式显示所有文件系统使用磁盘情况 ② df -h /dev/sda1 ③ df -h /mnt/sdb-14-51
  • 52. 4.8 文件系统的维护df显示的字段含义为: Filesystem文件系统使用的块设备文件名 Kbytes文件系统占用了多少磁盘空间(单位为k) used文件系统中已存在的文件所占用的磁盘空间 avail 文件系统中剩余的有效磁盘空间 capacity文件占用的磁盘空间的百分比 Mounted on文件系统安装点 4-52
  • 53. 4.8 文件系统的维护磁盘分区查看命令fdisk: 格式:fdisk –l 用途:查看磁盘分区信息4-53
  • 54. 4.8 文件系统的维护磁盘空间使用情况查看命令 du格式:du [-afkrsuvx] [names] 选项说明: -a 显示指定目录及其所有文件及子目录所占存储空间总数 -f 只显示当前的文件系统 -r 当前命令行中指定的name不能读或不能打开时产生的信息 -s 显示指定文件和目录所占用空间的总数 -u 不显示链接数大于1的文件使用盘块情况举例:du –hs /usr/games4-54
  • 55. 4.8 文件系统的维护日常维护 日常维护工作主要包括文件系统的更新,对不断增长日志文件进行修剪(trim),删除无用的core文件,删除大的、旧的的文件和扩展文件系统等。 使用缓冲区:应用程序设计时多使用缓冲区,提高整个系统的响应时间,提高效率(如:Linux中/proc目录) 刷新缓冲区:使用命令sync将缓冲区内容写到磁盘,保持文件系统为最新。(注:使用sync命令时不用带任何参数) 剪切日志文件:清理/var目录中的日志文件和缓冲池。如:清空linux系统/var/log/wtmp文件,以root身份登录系统并键入命令:# >/var/log/wtmp (这里注意:“#”是提示符,后面的是命令本身);Linux系统中日志文件存放在“/var/log”目录中,后面带数字的文件名(如:boot.log.1、 boot.log.2等为前几个时间段保存下来的日志文件),如果无用可以直接用rm命令删除,但对于后面不带数字的日志文件(如:boot.log、cron、maillog、secure、vsftpd.log等文件为当前正在使用的日志文件),只能用“>日志文件名”的方法清空,而不能用rm命令删除,再用touch命令新建空文件的方法,因为此种方法会改变日志文件原来的许可权限,造成系统写日志时出现错误或不能写入日志。4-55
  • 56. 4.8 文件系统的维护删除core文件:它是unix系统中进程遇到一系列错误或者QUIT信号而非正常终止时创建的一个文件。可能会很大,如果不需要可以删除,也可以在cron中添加命令: find / -name core –exec rm{} \;定期删除。 注意:Linux中没有这样的文件,只有这样的目录,即便有,也是内核文件不能随便删除。 清理大的、旧的文件:用户经常创建大的文件,当他不需要了却忘记删除了。另外,还有一些图片、视频等大文件。如:查找/tmp目录下超过1000字符,并且近30天都没使用过的文件: find /tmp –atime +30 –size+1000c -exec ll –ud {} \; 扩展一个文件系统:文件系统空间不够用了(用了100%),如果有未用的物理扩展分区(extents)或者增加新的硬盘来扩展空间。Linux系统中的操作方法在前面4.6节“配置文件系统”中讲过,这里不在赘述。Unix系统中扩展一个卷组和扩展一个文件系统的操作方法详见教材P100-102,此处不再讲述。 4-56