Linux文件系统使用索引节点来记录文件信息,作用像Windows的文件分配表。
索引节点是一个结构,它包含了一个文件的长度、创建及修改时间、许可权、所属关系、磁盘中的位置等信息。一个文件系统维护了一个索引节点的阵 列,每个文件或目录都与索引节点阵列中的惟一一个元素对应。系统给每个索引节点分配了一个号码,也就是该节点在阵列中的索引号,称为索引节点号。
Linux文件系统将文件索引节点号和文件名同时保存在目录中。所以,目录只是将文件的名称和它的索引节点号结合在一起的一张表,目录中每一对文件名称和索引节点号称为一个连接。
对于一个文件来说,有惟一的索引节点号与之对应,而对于一个索引节点号,却可以有多个文件名与之对应。因此,在磁盘上的同一个文件可以通过不同的路径去访问它。
可以用ln命令对一个已经存在的文件再创建一个新的连接,而不复制文件的内容。
连接有软连接和硬连接之分,软连接又叫符号连接。它们各自的特点如下。
硬连接:
(1)原文件名和链接文件名都指向相同的物理位址。
(2)目录不能有硬连接;硬连接不能跨越文件系统(不能跨越不同的分区)。
(3)文件在磁盘中只有一个复制,以节省硬盘空间。
(4)由于删除文件要在同一个索引节点属于惟一的连接时才能成功,因此可以防止不必要的误删除。
符号连接:
(1)用ln -s命令创建文件的符号连接;
(2)符号连接是Linux特殊文件的一种,作为一个文件,它的资料是它所连接的文件的路径名。类似于Windows下的快捷方式。
(3)可以删除原有的文件而保存链接文件,没有防止误删除功能。
装载文件系统
由上一节知道,Linux系统中每个分区都是一个文件系统,都有自己的目录层次结构。Linux会将这些分属不同分区的、单独的文件系统按一定的方式形成一个系统的总的目录层次结构。这里所说的“按一定方式”就是指的装载。
将一个文件系统的顶层目录挂到另一个文件系统的子目录上,使它们成为一个整体,称为装载。把该子目录称为挂接点。
注意:挂接点必须是一个目录。
一个分区装载在一个已存在的目录上,这个目录可以不为空,但装载后这个目录下以前的内容将不可用。
对于其他操作系统创建的文件系统的装载也是这样。但是需要理解的是,光盘、软盘、其他操作系统使用的文件系统的格式与Linux使用的文件系统 格式是不一样的。光盘是ISO9660;软盘是FAT16或ext2;Windows NT是FAT16, NTFS, Windows 98是FAT16, FAT32;Windows 2000和Windows XP是FAT16, FAT32, NTFS。装载前要了解Linux是否支持所要装载的文件系统格式。
装载时使用mount命令。格式:mount [-参数] [设备名称] [挂接点]
其中常用的参数有:
-t<文件系统类型> 指定设备的文件系统类型,常见的有:
minix Linux 最早使用的文件系统;
ext2 Linux 目前常用的文件系统;
msdos MS-DOS的FAT,就是FAT16;
vfat Windows 98常用的FAT32;
nfs 网络文件系统;
iso9660 CD-ROM光盘标准文件系统;
ntfs Windows NT/2000的文件系统;
hpfs OS/2文件系统;
auto 自动检测文件系统。
-o<选项> 指定装载文件系统时的选项,有些也可用在/etc/fstab中。常用的有:
codepage=XXX 内码表;
iocharset=XXX 字符集;
ro 以只读方式装载;
rw 以读写方式装载;
nouser 使一般用户无法装载;
user 可以让一般用户装载设备。
提醒一下,mount命令没有创建挂接点的功能,因此您应该确保执行mount命令时,挂接点已经存在。(即你要把文件系统装载到哪,首先要先建立这个目录。)
例:Windows 98装在hda1分区,同时电脑上还有软盘和光盘需要装载。
# mk /mnt/winc
# mk /mnt/floppy
# mk /mnt/cdrom
# mount -t vfat /dev/hda1 /mnt/winc
# mount -t msdos /dev/fd0 /mnt/floppy
# mount -t iso9660 /dev/cdrom /mnt/cdrom
现在就可以进入/mnt/winc等目录读写这些文件系统了。
要保证最后两行的命令不出错,就要确保软驱和光驱里有盘。
如果你的Windows 98目录里有中文文件名,使用上面的命令装载后,显示的是一堆乱码。这就要用到 -o 参数里的codepage iocharset选项。codepage指定文件系统的内码表,简体中文代码是936;iocharset指定字符集,简体中文一般用cp936或 gb2312。
当装载的文件系统Linux不支持时,mount一定会报错,如Windows 2000的NTFS文件系统。可以重新编译Linux内核以获得对该文件系统的支持。