1、第6章 文件系统管理,6.1 文件系统基础 6.2 创建文件系统 6.3 文件系统的安装和卸载 6.4 文件系统的维护 习题,6.1 文件系统基础,6.1.1 磁盘的分区Linux系统使用各种存储介质来保存永久的数据,例如:硬盘、软盘、光盘、磁带等。其中硬盘是不可缺少的介质,硬盘有容量大、速度快、价格低的特点。我们常常对硬盘进行分区,使得每个分区在逻辑上是独立的。这样我们就可以在每个分区安装一个操作系统,而多个操作系统就可以共处在同一个硬盘上。软盘的容量小,不进行分区;光盘则作为一个大盘更易于使用,也不进行分区。,硬盘分区的信息保存在硬盘的第一个扇区(即第一面第一磁道第一扇区),这个扇区称为M
2、BR(主引导记录),主引导记录包含有一段小程序。计算机启动时BIOS会执行这一段小程序,小程序又会读入分区表,检查哪个分区是活动分区(也叫启动分区),并读入活动分区的第一扇区(称为分区的启动扇区)。启动扇区也包含另一个程序,这个程序实际上是操作系统的一部分。它将负责操作系统的启动。,一个硬盘的分区最多只能有四个基本分区。有些时候这个数量太少了,于是人们就发明了扩展分区。扩展分区是在基本分区的基础上把分区再细分成多个子分区,每个子分区都是逻辑分区。一般情况下,只能允许存在一个扩展分区,即磁盘可以有三个基本分区和一个扩展分区。硬盘的分区结构如图6-1所示,硬盘的分区信息可以使用命令“fdisk -
3、l”获得。,图6-1 硬盘分区结构,【实例6.1】 root redflag /root#fdisk -l /dev/hda Disk /dev/hda: 255 heads, 63 sectors, 2482 cylinders Units = cylinders of 16065 * 512 bytes,Device Boot Start End Blocks Id System /dev/hda1 * 1 383 3076416 83 Linux /dev/hda2 384 447 514080 82 Linux swap /dev/hda3 448 454 56227+ 83 Linu
4、x /dev/hda4 455 467 104422+ 82 Linux swap,以上输出中带“*”号的是启动分区。我们随后将详细介绍fdisk命令的使用。Linux对硬盘分区的命名和DOS对硬盘分区的命名有很大的不同。在DOS下软盘为“A:”、“B:”,而硬盘为“C:”、“D:”,等等。Linux则使用/dev/hda0等来命名它们。以/dev/hd开头的表示IDE接口的硬盘,以/dev/sd开头的表示SCSI接口的硬盘,随后的abcd等代表第几个硬盘,而数字1、2、3、4代表硬盘的第几个分区。例如,/dev/hda1表示第一个IDE硬盘的第一个分区。表6-1列举了常用的分区命名方法。,表
5、6-1 分 区 的 命 名,6.1.2 什么是文件系统文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构,即在磁盘上组织文件的方法。分区或磁盘在作为文件系统使用前需要初始化,并将记录数据结构写到磁盘上,这个过程叫建立文件系统。我们在DOS下常常进行的格式化磁盘进程也是一个建立文件系统的过程。不同的操作系统所支持的文件系统是不同的,一个文件系统在一个操作系统下可以正常地被使用,转移到另一操作系统时往往会出问题。,Linux支持多种类型的文件系统。而红旗Linux 3.0版又增加了几种新类型的文件系统。下面是几个重要的文件系统:minix:最早的Minix系统的文件系统。ext2:Lin
6、ux系统的文件系统,目前是使用最广泛的文件系统。swap:用于交换分区和交换文件的文件系统。sysv:Unix里广泛使用的SystemV。iso9660:标准的CD-ROM的文件系统。,vfat:扩展的DOS文件系统,支持长文件名,被Windows 98采用。 msdos:与MS-DOS/FAT 16兼容的文件系统。 hpfs:OS/2文件系统。 nfs:网络文件系统,允许多台计算机间共享的文件系统。 ntfs:用于Windows NT和Windows 2000的文件系统。 reiserfs:安全性和效能比ext2都好的文件系统。 ext3:ext2的后续者,红旗Linux 3.0版(Linu
7、x内核2.4.17)已经把它加入。 smb:支持SMB协议的高性能文件系统。,一般情况下没有理由用不同类型的文件系统来组成Linux系统,除非原有的文件系统已经存在。由于历史的原因,当前ext2的使用最为广泛,而reiserfs是红旗Linux 3.0安装时默认的文件系统类型,ext3是当前最新的文件系统类型。ext2比起以往的文件系统在文件性能方面有很大的提高,但也存在不少的问题,例如,文件系统在异常关机等情况下容易遭到破坏,使用“fsck”命令检查文件系统要检查整个文件系统,对于较大的文件系统,常常需花费几个小时的检查时间。,为了解决这个问题,出现日志型文件系统,如reiserfs和ext
8、3。日志型文件系统比传统的文件系统安全,因为它用独立的日志文件跟踪磁盘内容的变化。就像关系型数据库(RDBMS),日志文件系统可以用事务处理的方式提交或撤消文件系统的变化。日志机制保证了在每个实际数据修改之前,相应的日志已经写入硬盘。正因为如此,在系统突然崩溃时,在下次启动几秒钟后就能恢复成一个完整的系统,系统也就能很快地使用了。,reiserfs除了具有日志型文件系统的特性,还具有适合处理大量小文件(如5000个50字节的文件)和特大文件(例如2 GB以上)的特点。ext3则是ext2的后续者,它也是日志型文件系统,更为难得的是,它的磁盘格式和ext2的相同,ext2和ext3的转换相当的容
9、易,对于ext2的升级十分有利。没有一种文件系统适合所有的应用,因此我们要选择适合自己的文件系统。对于新安装的系统,我们建议采用reiserfs或ext3。,Linux采用虚拟文件系统(VFS)技术,因此Linux可以支持多种文件。每一文件系统都提供一个公共的接口给VFS,不同文件系统的所有细节由软件进行转换。而从Linux内核和Linux运行的程序来看,不同的文件系统之间没有差别。例如,用户可以把自己原有的Windows分区挂接到Linux中的一个目录下,也可以同时把NFS(网络文件系统)挂接在另一目录,它们可以和平地融合为一体。,文件系统是所有数据的基础,所有文件和目录都驻留在文件系统上。
10、在Linux系统中,所有的文件系统都被连接到一个总的目录上,这个目录就叫根目录,是由系统自动建立的。根目录下有许多分支,分支又有子分支,从而整个目录呈树状结构,如图6-2所示。,图6-2 树状的目录结构,文件系统连接目录树上的一点,这个点就叫安装点。图6-2中的每个虚框就是一个文件系统,所有不在虚框的部分也是一个文件系统,一共有四个文件系统。就这样,不同的文件系统形成了一个无缝的整体。,6.1.3 文件文件是有名字的一组相关信息的集合,它有多种的分类方法,如根据文件的用途我们把文件分为以下四种。(1) 普通文件。文件可以是千差万别的,如普通的Word文件、图像文件、声音文件、网页HTML文件,
11、也可以是脚本文件、程序员编写的可执行文件。我们可进一步把文件分类为文本文件和二进制文件。,文本文件即ASCII码文件,可以使用cat、more等命令查看,Linux系统的多种配置文件、源程序、HTML文件都属于此类。二进制文件,一般不能被直接查看,而必须使用相应的软件才行,如图像文件、声音文件、可执行文件都属于此类。(2) 目录文件。Linux中把目录也看成文件,这是和DOS/Windows不太相同的地方。目录可以包含下一级目录和普通文件。(3) 链接文件。我们在第2章已经介绍了链接,有软链接和硬链接之分。链接的一个好处是不占用过多的磁盘空间。,(4) 设备文件。Linux中把系统中的设备也当
12、成文件,用户可以像访问普通文件一样来访问系统中的设备,并且所有设备文件都放在/dev目录下。设备文件可以分为块设备和字符设备两类。例如,打印机是字符设备,磁盘是块设备。把设备当成文件的好处是使得Linux系统能够保证设备的独立性。计算机外设不断更新,但是操作系统不可能为了刚出现的设备文件而经常修改。当需要增加新的设备时,只需要在内核添加必要的设备驱动程序就可以了。这样一来,使用不同外设时内核就可以用完全一样的方式来进行处理。,设备文件中有一特殊的文件是/dev/null,称为空设备。它是一个类似“黑洞”的设备,所有放入该设备的东西将不复存在,例如:root redflag /root#mv t
13、est.zip /dev/null该命令执行的结果是test.zip文件永远被删除了。,还有一种很特殊的文件是管道文件,它主要用于在进程间传递信息,是一个先进先出(FIFO)的缓冲区,管道文件类似我们日常生活中的管道,一端进入的是某个进程的输出,另一端输出的是另一个进程的输入。例如:root redflag /root#cat /etc/passwd | more该命令使用了管道“|”,命令cat /etc/passwd的输出是管道的输入,经过管道后,成为了命令more的输入。,使用命令“ls l”可以显示文件的类别,每个输出行中的第一个字符表示的就是文件的类别,例如,“b”代表块设备,“p”
14、代表管道文件,“c”代表字符设备,“d”代表目录文件。,6.1.4 Linux系统的目录结构Linux系统中,目录是一个层次(或树状结构),根是所有 目录的起始点,根目录下主要有以下子目录。/bin:包含二进制文件,即可执行程序,这些程序是系统必需的文件。/sbin:也用于存储二进制文件,但不同的是它们不给普通用户使用,只有超级用户root可以使用。,/etc:用于存放Linux系统的配置文件,该目录的文件相当重要,例如:passwd、host、fstab、inittab等等,我们将在不同的章节使用到这个目录下的文件。/boot:Linux系统引导时加载器使用的文件,系统中非常重要的内核vml
15、inux就是放在该目录下。/dev:存放设备文件,用户可以通过这些文件访问外部设备。/lib:存放根文件系统中的程序运行所需要的库文件。,/temp:存放各种临时文件。/mnt:管理员临时安装文件系统的安装点,下面有几个意义明确的子目录,如软盘、光驱等。如下: drwxrwxr-x 2 root root 48 10月 9 1998 cdrom drwxrwxr-x 2 root root 48 2月 6 1996 floppy,/root:超级用户的个人主目录。 /usr:该目录占用的空间一般比较大,用于安装各种应用程序。 /proc:是一个虚拟的目录,存放当前内存的映像,该文件系统由内核自
16、动产生。 /var:存放一些会随时改变的文件。例如,spool目录、其他的暂存文件。 /opt:是放置额外安装的应用程序包的地方。,6.2 创建文件系统,要在硬盘创建文件系统,首先要进行硬盘分区。硬盘分区有很多的工具,如:Fdisk、Cfdisk等,用得最多的还是Fdisk。,6.2.1 Fdisk的使用1. fdisk -l显示所有分区的信息【实例6.2】 Disk /dev/hda: 255 heads, 63 sectors, 2482 cylinders Units = cylinders of 16065 * 512 bytes,Device Boot Start End Block
17、s Id System /dev/hda1 * 1 383 3076416 83 Linux /dev/hda2 384 447 514080 82 Linux swap /dev/hda3 448 486 313267+ 83 Linux,以上显示了惟一的一个磁盘/dev/hda的参数和分区情况,磁盘有255个磁头,2482个柱面,每柱面63个扇区,第四行起是分区的情况,依次是分区名、是否是启动分区、起始柱面、终止柱面、分区的总块数、分区ID(分区类型的数字值)、分区的类型。如/dev/hda1分区是启动分区(带“*”号),起始柱面是1, ,终止柱面是383,分区大小是3 076 416块(
18、每块的大小是1024字节,即总共300 MB左右的空间)。每柱面的扇区数等于磁头数乘以每柱面扇区数,每两个扇区为一块,因此分区的块数等于分区占用的总柱面数乘以磁头数,再乘以每柱面扇区数后除以二。例如:/dev/hda2的总块数=6425563/2=514 080,2. fdisk 驱动器名创建磁盘分区 【实例6.3】 root redflag /root#fdisk /dev/hda The number of cylinders for this disk is set to 2482. There is nothing wrong with that, but this is larger
19、 than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs(e.g., DOS FDISK, OS/2 FDISK) Command (m for help):m,使用“m”可以获得如下帮助: Command action a toggle a bootable flag b edit bsd diskl
20、abel c toggle the dos compatibility flag d delete a partition l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table,q quit without saving changes s create a new empty Sun disklabel t change a partitions system id u c
21、hange display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only),其中常用的命令有: a: 切换分区的启动标志。 d: 删除分区。 l: 显示已知的分区类型。 m: 显示命令的帮助。 n: 添加新的分区。 p: 显示当前硬盘的分区情况。 q: 退出并且不保存分区的结果。 t: 改变分区的类型。 w: 保存分区的结果并退出。,Command (m for help): l,数字是各种的分区类型的ID,典型的有:5表示扩
22、展分区、7表示NTFS分区、b表示Windows 95分区、82表示Linux交换分区、83表示Linux分区。 使用“p”命令可以显示当前分区的情况: Command (m for help): p Disk /dev/hda: 255 heads, 63 sectors, 2482 cylinders Units = cylinders of 16065 * 512 bytes,Device Boot Start End Blocks Id System /dev/hda1 * 1 383 3076416 83 Linux /dev/hda2 384 447 514080 82 Linux
23、 swap /dev/hda3 448 486 313267+ 83 Linux 使用“d”命令可以删除分区: Command (m for help): d Partition number (1-4): 3,使用“n”命令可以创建分区: Command (m for help): n Command action e extended p primary partition (1-4) 创建分区时选择p,则创建的是基本分区,选择e,则创建的是扩展分区,我们选择p。 Partition number (1-4): 3 输入分区号“3”。,First cylinder (448-2482, d
24、efault 448): 输入分区的起始柱面,不输入时就是缺省值448。 Using default value 448 Last cylinder or +size or +sizeM or +sizeK (448-2482, default 2482): +50M 输入分区的终止柱面,也可以输入分区的大小,用+50 000 000表示50 000 000字节,+50 M表示50 MB,+50 000 K表示50 000 KB。,使用“t”命令可以改变分区的类型: Command (m for help): t Partition number (1-4): 3 Hex code (type
25、 L to list codes): 83 Changed system type of partition 3 to 83 (Linux) 红旗Liunx 3.0缺省创建的文件系统类型是83(Linux)。,再次使用“p”命令显示分区的情况: Command (m for help): p Disk /dev/hda: 255 heads, 63 sectors, 2482 cylinders Units = cylinders of 16065 * 512 bytes Device Boot Start End Blocks Id System /dev/hda1 * 1 383 3076
26、416 83 Linux /dev/hda2 384 447 514080 82 Linux swap /dev/hda3 448 454 56227+ 83 Linux,可以看到新的分区/dev/hda3已经创建好了。 使用“w”命令保存分区结果并退出,如果不想保存结果,可使用“q”命令。 Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Re-read table failed with error 16: Device or r
27、esource busy.,Reboot your system to ensure the partition table is updated. WARNING: If you have created or modified any DOS 6.x partitions, please see the fdisk manual page for additional information. Syncing disks. 硬盘分区后,要重新启动系统。,6.2.2 文件系统的建立硬盘进行分区后,下一步的工作就是文件系统的建立,这和格式化磁盘类似。在一个分区上建立文件系统会冲掉分区上的所有数
28、据,并且不能恢复,因此建立文件系统前要确认分区上的数据不再使用。建立文件系统的命令是mkfs。mkfs的命令格式如下:,mkfs 参数 文件系统 参数选项: -t:指定要创建的文件系统类型,缺省是ext2。 -c:建立文件系统之前首先要检查坏块。 -l file:从文件file中读磁盘坏块列表,该文件一般是由磁盘坏块检查程序产生的。 -V:输出建立文件系统详细信息。,【实例6.4】 root redflag /root#mkfs -V -t ext3 -c /dev/hda3 mkfs version 2.10s (Aug 30 2001) mkfs.ext3 -c /dev/hda3 mke
29、2fs 1.27 (8-Mar-2002) Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0),14056 inodes, 56227 blocks 2811 blocks (5.00%) reserved for the super user First data block=1 7 block groups 8192 blocks per group, 8192 fragments per group 2008 inodes per group Superblock back
30、ups stored on blocks: 8193, 24577, 40961 Checking for bad blocks (read-only test): done,Writing inode tables: done Creating journal (4096 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 27 mounts or 180 days, whichever
31、 comes first. Use tune2fs -c or -i to override.,以上命令是在磁盘分区/dev/hda3建立ext3类型的文件系统,建立文件系统时检查磁盘坏块,并且显示详细信息。对于在软盘建立文件系统稍有不同,我们不必对软盘进行分区,而是先直接格式化: root redflag /root#fdformat -n /dev/fd0 Double-sided, 80 tracks, 18 sec/track. Total capacity 1440 kB. Formatting . done,其次,使用badblocks命令检查软盘上的坏块,把坏块信息保存在文件ba
32、d中: root redflag /root#badblocks /dev/fd0 1440 bad 再用mkfs命令建立文件系统: root redflag /root#mkfs -t ext2 -l bad /dev/fd0 mke2fs 1.27 (8-Mar-2002) Filesystem label= OS type: Linux,Block size=1024 (log=0) Fragment size=1024 (log=0) 184 inodes, 1440 blocks 72 blocks (5.00%) reserved for the super user First
33、data block=1 1 block group 8192 blocks per group, 8192 fragments per group,184 inodes per group Writing inode tables: done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 26 mounts or 180 days, whichever comes first. Use tune2fs -c
34、or -i to override.,6.2.3 交换分区如果在Linux运行时物理内存不够,Linux会把内存的数据先写到磁盘上,当需要数据时再读回到物理内存中,这个过程就叫交换,而用于交换的磁盘空间就叫交换空间。这些技术和Windows的虚拟内存技术类似,但Linux支持两种形式的交换空间:独立的磁盘交换分区和交换文件。,独立的磁盘交换分区是专门分出一个磁盘分区用于交换,而交换文件则是创建一个文件用于交换。使用交换分区比使用交换文件效率要高,因为独立的交换分区保证了磁盘块的连续,Linux系统读写数据的速度较快。交换空间的大小一般是物理内存的1.52倍。如果内存是256 MB,则交换空间大
35、小为500 MB左右较为合适。,1. 交换分区的建立和激活交换分区的建立和其他分区的建立没有太大的差别,惟一不同是用fdisk命令建立分区时要使用“t”命令把分区类型改成82(Linux Swap),如下的/dev/hda4是新建的交换分区。 root redflag /root# fdisk -l Disk /dev/hda: 255 heads, 63 sectors, 2482 cylinders,Units = cylinders of 16065 * 512 bytesDevice Boot Start End Blocks Id System /dev/hda1 * 1 383 3
36、076416 83 Linux /dev/hda2 384 447 514080 82 Linux swap /dev/hda3 448 454 56227+ 83 Linux /dev/hda4 455 467 104422+ 82 Linux swap,Linux系统下可以有多个交换分区。创建好交换分区后,要使用mkswap命令“格式化”分区。 root redflag /root#mkswap -c /dev/hda4 Setting up swapspace version 1, size = 106921984 bytes 最后还要激活交换分区: root redflag /root
37、#swapon /dev/hda4,以上命令是手工激活的方法,但交换分区通常是在系统启动时就自动激活,自动激活可以在/etc/fstab文件中配置(见下节介绍)。 关闭交换分区的命令为: root redflag /root#swapoff /dev/hda4,2. 交换文件的建立和激活交换文件一般用在临时增加交换空间的情形。对交换文件的要求是不能有空洞,即文件要占据一片连续的物理空间。建立交换文件和激活的过程如下:,(1) 创建一个指定大小的文件。如下:root redflag /root#dd if=/dev/zero of=/swap bs=1024 count=5000050000+0
38、 records in50000+0 records out以上命令在根目录下创建了一个25 MB(等于50 000块)的交换文件swap。/dev/zero是一个特殊的设备文件,对它的读操作总是返回零值字节。,(2) 创建交换文件并修改文件的权限为600。如下: root redflag /root#mkswap /swap Setting up swapspace version 1, size = 25595904 bytes root redflag /root#chmod 600 /swap,(3) 激活交换文件。如下: root redflag /root#swapon /swap
39、 同样关闭交换文件的使用,可以使用命令: root redflag /root#swapoff /swap 交换文件关闭后,如果不再继续使用,可以删除。,6.3 文件系统的安装和卸载,Linux文件系统的组织方式和DOS、Windows文件系统的组织方式有很大的差别。Windows把磁盘分区后用不同驱动器名字来命名,如“C:”、“D:”、“E:”等等,我们把它们当成逻辑独立的硬盘来使用,每个逻辑盘有自己的根目录。而Linux系统只有一个总的根目录,或者说只有一个目录树,不同磁盘的不同分区都只是这个目录树的一部分。,在Linux中创建文件后,用户还不能直接使用它,要把文件系统安装(mount)后
40、才能使用。安装文件系统首先要选择一个安装点(mount point)。所谓的安装点就是要安装的文件系统的根目录所在的目录。如图6-3和图6-4所示,安装后/home就是第二个文件系统的安装点,因为第二个文件系统的根目录在这一目录下。这样整个文件是由多个文件系统构成的,但对于用户来说整个文件系统却是无缝的,感觉不到是在不同的文件系统工作。文件系统的安装点不同,目录树的结构也会发生变化,如图6-5所示。,图6-3 未安装的两个独立的文件系统,图6-4 安装后的文件系统,图6-5 文件系统安装点不同引起目录树结构的不同,6.3.1 手工安装和卸载文件系统手工安装文件系统常常用于临时使用文件系统的场合
41、,尤其是软盘和光盘的使用。手工安装文件系统使用mount命令,其格式如下:mount 参数 设备名 安装点参数选项:-a:安装/etc/fstab中的所有设备。-f:不执行真正的安装,只是显示安装过程中的信息。-n:不在/etc/mtab登记此安装。,-r: 用户对被安装的文件系统只有读权限。 -w:用户对被安装的文件系统有写权限。 -t type:指定被安装的文件系统的类型,常用的有:minix、ext、ext2、ext3、msdos、hpfs、nfs、iso9660、vfat、reiserfs、umdos、smbfs。 -o:指定安装文件系统的安装选项。,例如:root redflag /
42、root#mount -t ext3 /dev/hda3 /mnt/disk1 该命令将/dev/hda3分区的文件系统安装在/mnt/disk1目录下,文件系统的类型是ext3,安装点是/mnt/disk1。安装文件系统时,用户不能处在安装点(即当前目录是安装点),否则安装文件系统后,用户看到的内容仍是没有安装文件系统前安装点目录原来的内容。安装文件系统后,安装点原有的内容会不可见。卸载文件系统后,安装点原有的内容又会可见。,使用mount命令时,mount会试着测试文件系统的类型,因此常常可以不指明文件系统的类型,但mount并非总能成功检测出文件系统的类型,例如: root redfla
43、g /root#mount /dev/hda3 /mnt/disk1安装文件系统只能由超级用户root来进行,一般用户不能执行此项操作。对于软盘这样的设备,如果只允许超级用户来使用的话不是很合理,这时可以在/etc/fstab加入相应的行来控制。我们随后介绍/etc/fstab的用法。,如果不打算在一个文件系统上写入任何数据的话,可以使用-r开关。这将停止任何对此文件的写要求,也将停止对i节点的文件存取时间的更改。 root redflag /root#mount -r -t ntfs /dev/hdb1 /mnt/disk2,以上命令把/dev/hdb1(Windows 2000)安装在/m
44、nt/disk2目录下,只是为了在Linux中能够读取Windows 2000系统下的数据,但不允许改动,以免影响Windows 2000的正常工作。Linux系统会把已经安装的文件系统信息写到/etc/mtab文件中,用不带任何参数的mount命令也可以显示已经安装的文件系统的信息。,【实例6.5】 root redflag /root#mount /dev/hda1 on / type reiserfs (rw,notail) none on /proc type proc (rw) usbdevfs on /proc/bus/usb type usbdevfs (rw) none on
45、/dev/pts type devpts (rw,gid=5,mode=620) 以上是当前已经安装文件系统的信息。 要卸载文件系统则相当简单,使用以下命令:,umount安装点或umount设备名 root redflag /root#umount /mnt/disk1 卸载文件系统时,不能有用户正在使用文件系统,例如,用户当前目录是/mnt/disk1,则以上命令会失败。要先切换到别的目录,再执行umount,例如: root redflag /root#cd root redflag /root#umount /mnt/disk1,6.3.2 文件系统的自动安装我们可以使用mount命令
46、手工安装文件系统,对于用户经常使用的文件系统则最好能让Linux系统在启动时就自动安装好。/etc/fstab文件就是为了解决这个问题的,其格式如下:文件系统 安装点 文件系统类型 安装选项 备份频率 检查顺序,【实例6.6】 root redflag /root#cat /etc/fstab /dev/hda1 / reiserfs defaults,notail 1 1 /dev/cdrom /mnt/cdrom iso9660 noauto,owner,ro 0 0 /dev/hda2 swap swap defaults 0 0 /dev/fd0 /mnt/floppy vfat no
47、auto,owner 0 0 none /proc proc defaults 0 0 none /dev/pts devpts gid=5,mode=620 0 0,例6.6中第二行文件系统/dev/cdrom安装在/mnt/cdrom目录下,文件系统类型是iso9660,安装选项是“noauto,owner,ro”,不使用dump命令进行备份,系统安装文件系统时不进行检查。文件系统安装选项可以有多个,选项之间用逗号隔开,常用选项有:,defaults:缺省值,等于rw,suid,dev,exec,auto,nouser,async。 noauto:系统启动时不自动加载该文件系统。 ro:该
48、文件系统只能读。 rw:该文件系统可以读写。 user:允许普通用户安装该文件系统。 noexec:不允许在该文件系统运行程序。,6.4 文件系统的维护,6.4.1 检查文件系统Linux是一个稳定的操作系统,一般情况下文件系统并不会出现什么问题。如果系统异常断电或不遵守正确的关机步骤,磁盘缓冲的数据没有写入磁盘,文件系统常常会不正常,这时就需要进行文件系统的检查。Linux系统启动时,会自动检查/etc/fstab文件中设定要自动检查的文件系统,就像Windows系统开机时用scandisk检查磁盘一样。我们也可以使用fsck命令手工对文件系统进行检查,fsck命令的格式如下:,fsck 参
49、数 设备名 参数选项: -t fstype:指定文件系统类型。 -A:检查/etc/fstab中的所有文件系统。 -V:显示fsck执行时的信息。 -N:只是显示fsck每一步的工作,而不进行实际操作。 -R:和-A同时使用时,跳过根文件系统。,-P:和-A同时使用时,不跳过根文件系统(要注意使用)。 -n:检查文件系统时,对要求回答的所有问题,全部回答“no”。 -y:检查文件系统时,对要求回答的所有问题,全部回答“yes”。 -p:检查文件系统时,不需要确认就执行所有的修复。,fsck检查结束后,会给出如下错误代码(fsck实际的返回值可能是以上代码值的和,表示出现多个错误):0没有发现错误;1文件系统错误已经更正;2系统需要重新启动;4文件系统错误没有更正;8操作错误;16语法错误;128共享库错误。,