Linux档案系统管理(1)
■ Linux档案系统架构
■ ext3fs档案系统架构
■ 建立ext3档案系统
■ 档案系统基本指令操作
■ 档案权限基本观念
■ I/O重新导向及管线
■ 使用指令与图形管理工具的迷失
档案系统(File System)是作业系统用来储存和管理档案的方法,而每种作业系统支援的档案系统数量和种类都不同,因此在了解系统运作前,我们必须对档案系统的结构有所了解,尤其在Linux中,任何软硬体都被视为档案,所以此部份的内容更形置要。
Linux档案系统架构
作业系统中的档案系统可說是最基本的架构,因为几乎所有与使用者、应用程式或是安全性模型相互沟通的方法,都是与档案储存的类型息息相关。而整个档案系统可以简单的分为二种类型:
◆ 共用与非共用档案:共用档案是指允许其他主机存取的档案,而非共用档案则只供本机使用。
◆ 变动与固定档案:变动档案是指不需透过系统管理员的更改,而可自动变更內容的档案,例如资料库档案,而固定档案则是指內容不会自动变更的档案,例如一般的文
件或是二进位档。
Linux的档案系统是採用阶层式的树状目錄结构,在此结构中的最上层是根目錄然后在此根目錄下再建立其他的目錄,虽然目錄的名称可以自订,但是有某些特殊的目錄名称包含有重要的功能,因此不可随便将它们更名,以免造成系统的错误。
因为Linux允许不同的厂商及个人修改作业系统,所以常会造成目錄名称不统一的情形,有鑑於此,目前有一套规范档案目錄的命名及存放标準,它就称为Filesystem Hierarchy Standard(FHS),这也是FedoraCore 遵守的标準,若需要详细的說明,请参考以下的网站說明:
图8-1 FHS网站首页
在Linux安装时,系统会建立一些预设的目錄,而每个目錄都有其特殊的功能,以下是这些目錄的简介:
Linux中的档案名称最长可允许256个字元,而这些字元可用A-Z 0-9._- 等符号来命名。和其他作业系统相比,例如DOS和Windows,Linux最大的不同鲇是,它並沒有「副档名」的观念,也就是說档案的名称和该档的种类並沒有直接的关连,例如smaple.txt可能是个执行档,而sample.exe也有可能是文字档案,甚至於可以不使用副档名。
另一个特性是档案名称区分大小写(Case Sensitive),这也是习惯DOS和Windows平台的使用者最难适应的一鲇,但所有的Unix系统(包括Linux)都是遵循这个法则,例如sample.txt、Sample.txt、SAMPLE.Txt、samplE.txt在Linux上都代表不同的档案,但在DOS和Windows平台卻是指同一个档案。
◆ ext3fS档案系统结构
Linux可說是一种相容性很高的作业系统,它可以支援的档案系统有很多,其中包括:adfs、affs、autofs、coda、coherent、devpts、efs、ext、ext2、ext3、hfs、hpfs、iso9660、minix、msdos、ncpfs、nfs、ntfs、proc、qnx4、romfs、smbfs、sysv、udf、ufs、umsdos、vfat、xenix、xiafs等,也就是說它可以和许多不同的档案或作业系统同时存在硬碟中,这也是Linux足以傲视其他作业系统的地方。
与Microsoft Windows作业系统不同的是,Linux並沒有的观念,也就是說,它不会将档案的储存位置指定为磁碟机C、D、E等等,而是利用树状的ext3fS(Third Extended File System)为主要的档案系统(有时也简称为ext3)。
ext3fs是Fedora Core 预设的档案系统,顾名思义,它是ext2fs的加強版本,除了在原有ext2fs系统上加上曰誌功能(journaling)外,ext3fs还具有以下的优鲇:
◆ 有效性(Availability)
当系统因为电力中断或其他原因而导致不正常关机时,早期的ext2fs系统必须先执行ext2fsck程式,以确定档案系统的一致性(Consistency),之后才可重新的掛载(Mount)档案系统。
但是e2fsck程式执行的时间主要是与该档案系统的大小有关,以目前动辄数十GB的档案系统而言,势必将花费很长的时间。此外,在档案系统中的档案愈多,则要进行的一致性检查也愈多,这二个因素都严重影响到系统的有效性。
而ext3fS档案系统在处理以上的问题时,並不需要执行档案系统检查,这是因为资料在写入ext3fS档案系统时会利用日誌功能来维持资料的一致性。所以在系统不正常关机后,要回复ext3fS档案系统与档案系统的大小或是档案数量的多寡无关,而是和用来持维资料一致性的日誌大小有关。通常在预设的状況下,利用日誌来回复ext3fs档案系统大約只要费时1秒,但是不同的硬体会影响回复的时间。
◆ 资料完整性
ext3fS可以在系统不正常关机后,提供较佳的资料完整性,同时在ext3fs存取资料时,可以选择不同的资料保护类型和层级,例如选择以维护档案系统的一致性为优先,而允许少量的资料在系统不正常关机后毀损,这可加快回复的时间,这个选项也是系统的预设值。
园资料存取速度ext3fs的资料存取速度高於ext2fs档案系统的主要原因是日誌功能可使硬碟读写头的移动达到最佳化。
◆ 易於转移
原有的ext2fs可以轻易的转移至ext3fs来获得曰誌功能,而不需重新格式化档案系统。通常可以用以下的二种方法来进行ext3fs档案系统转移:
◆ Fedora Core 安装程式
◆ tune2fs程式
在Linux将硬碟格式化为ext3fs后,它会将硬碟分为四个部份:BootBlock、Super Block、i-nodes和DataBlock。
● Boot Block
Boot Block是包含系统啟动程式的磁碟区块。
● Super Block
Super Block主要是用来记錄档案系统的配置方式,其中包含i-node数量、磁碟区块数量,以及未使用的磁碟区块等。
● i-node
i-node是Index-Node的简称为,在这个部份包含i-node,而每个i-node都可用来记錄一个档案,但有时也不会使用到。您可以使用df(Disk Free)指令以及i(i-node)参数来了解目前系统中的i—node大小与数量。
在以上的输出结果中,「档案系统」栏位表示磁碟区块名称,「1K- 区段 」 說明每个区块的大小是1KB,因此我们可以了解/dev/hda7的大小是1KB*1035660=1035660KB。若您加入「-i」参数,则您可以由「Inodes 」栏位得知该磁碟区块的i-node数目,以/dev/hda7为例, 它的i-node数目为131616个,所以平均一个i-node可以储存1035660KB/131616=7.8688KB的资料(但我们会取整数来计数,也就是8KB)。
理论上,若是每个储存在区块中的档案都小於8KB,则此区块最多可储存131616个档案资料,但若是档案超过8KB,则会佔用一个以上的i-node,例如一个8MB的档案会佔用1024
个i-node。因此,若是系统中储存的档案都很大,则允许的档案数量一定远少於i-node数目。
相反的,若是区块中的档案都很小,例如新闻群组上的讨论文章,则当档案的数目等於i-node数量时,即使区块中仍有许多的空间,但是系统也会因为沒有足夠的i-node而无法储
存任何档案。
如果您要得知档案的i-node编号,您可以输入以下的指令(-i表示i-node):
而在Linux中,软碟、硬碟和光碟区块的表示法如下表所示:
在i-node中记录的资讯有很多,包括:
● 档案大小
● 使用者ID(User ID)
● 群组、ID (Group ID)
● 档案存取模式:读取、写入或执行等。
● 连结计数:同一个档案可建立多个档案连结,它就好像是在Windows中的「捷径」,档案每建立一个连结时,连结计数增加l,而当连结刪除时,则连结计数就減少1。
● 档案最后修改时间
● 磁碟区块位址:记錄档案存放的磁碟区块。
● 间接区块(Indirect Block):当一个档案的大小超过一个i-node的容量时,则其他储存此档案的(区块)位址会记錄在间接区块中