li
  当前位置:主页 > 操作系统 > 文章内容
li
Linux 文件系统精通指南
来源: www.ixdba.net  作者: IXDBA.NET官方    时间:2008-01-21   阅读:24  
本文章共8539字,分2页,当前第1页,快速翻页:
 

Linux 文件系统精通指南

究竟什么是文件系统Sheryl Calish 介绍了这个概念以及它的实际应用

尽管内核是 Linux 的核心,但文件却是用户与操作系统交互所采用的主要工具。这对 Linux 来说尤其如此,这是因为在 UNIX 传统中,它使用文件 I/O 机制管理硬件设备和数据文件。

IXDBA.NET社区论坛

遗憾的是,新手通常会混淆介绍 Linux 文件系统概念的术语。术语文件系统 可以在 Linux 文件编制中互换使用,用于指代几个不同但相关的概念。除磁盘分区的具体实例外,文件系统还指代数据结构以及分区中文件的管理方法。

 

另新手更感困惑的是,该术语还用于指代系统中文件的整体组织形式:目录树。此外,该术语还可以指代目录树中的每个子目录,如在 /home 文件系统中。某些人认为,这些目录和子目录不能称作真正意义上的文件系统,除非它们均驻留在各自的磁盘分区上。然而,其他人却将其称作文件系统,这无疑又增添了困惑。

Linux 老手可以从上下文中理解这些术语的含义。而新手却很难在一时半会儿就辨别出这样的上下文。

本文的主要目标就是提供足够的背景知识,以帮助您辨别此术语的上下文。在阐明文件系统术语的细微差别的过程中,您还将学习如何将某些非常有用的相关工具从理论应用上升到实际应用。

 

本文主要介绍了 2.4 Linux 内核中的 Linux 磁盘分区和文件管理系统特性。此外,还介绍了 2.6 Linux 内核中的新特性。

磁盘分区概述

Linux UNIX 中的基本文件存储单元都是磁盘分区,即将一个或多个硬盘的逻辑划分,操作系统将每个逻辑分区视为独立的磁盘。文件和文件管理系统居住在磁盘分区中。Linux 将这些磁盘分区作为设备处理,进而通过 /dev 目录中的特殊文件使用文件 I/O 机制。

有两种类型的设备文件:块和字符/原始。两者之间的一个重要差别是,块设备被缓冲,而字符设备因为没有文件管理系统,所以不被缓冲。在 Oracle 集群文件系统 (OCFS) 推出之前,使用原始设备是提高 Oracle 数据文件分区性能的常见方法。(在本文的后续部分,我们将详细介绍原始设备。)

存储在磁盘最开始位置的分区表提供了该磁盘上分区的映射。可以使用 fdisk 命令查看系统的分区表。

# fdisk -l

 

Disk /dev/hda:240 heads, 63 sectors, 1940 cylinders

Units = cylinders of 15120 * 512 bytes

 

Device Boot    Start       End    Blocks   Id  System

/dev/hda            1          286    2162128+   c     Win95 FAT32 (LBA)

/dev/hda2   *     288         1940   12496680    5     Extended

/dev/hda5         288          289      15088+  83     Linux

/dev/hda6         290          844    4195768+  83     Linux

/dev/hda7         845          983    1050808+  82     Linux swap

/dev/hda8         984         1816    6297448+  83     Linux

/dev/hda9        1817         1940     937408+  83     Linux

分区表中的名称 /dev/hda /dev/hdd 分别代表 IDE 驱动器 1 4,其中 hda 代表驱动器 1hdb 代表驱动器 2,依此类推。驱动器内的分区用数字指代,因此 /dev/hda5 是第一个 IDE 驱动器上的第五个分区。对于 SCSI 驱动器,使用了类似的命名模式:/dev/sda to /dev/sdd

第一至第四个分区保留给主分区,第五个及随后的分区用于逻辑分区。因此,以上所示的分区表中有一个驱动器 hda,它包含一个主分区 hda1、一个扩展分区 hda2 和五个逻辑分区 /dev/hda5 /dev/hda9。以名称 shmfs 列出的文件系统表示根据 Linux 2.4 中的 POSIX 标准挂载为特殊文件系统的共享内存文件系统。

您可能已经注意到,在 fdisk 列表中 LBA 是括在括号中的。LBA 表示逻辑块寻址,它将硬盘的柱面、块和扇区模式转换为线性块编号进行处理。

 

Linux 中,分区分为主分区、扩展分区和逻辑分区。术语主分区 是先前 x86 系统上四个分区限制的遗留产物。与 DOS Windows 不同,Linux 可以从主分区或逻辑分区启动。用作逻辑分区占位符的主分区称作扩展分区。扩展分区本身拥有指向一个或多个逻辑分区(它们只是主分区的子分区)的分区表。在以上的 fdisk 列表中,hda2 就是一个扩展分区。

文件管理系统概述

要使分区后的磁盘可用,必须在其上构建文件系统。这种情况下,通常还将文件系统称作分区类型基于磁盘的文件系统文件系统类型。实际上,可以将这些文件系统看作是文件管理系统,这是因为该称呼正体现了它们的功能:它们通过维护文件上的元数据,使系统上的文件保持状态一致。

Linux 项目的特点之一是需要实现与每个可用实用程序的多个样式和首选设置的兼容性,而这种兼容性在可用文件管理系统的选择上体现得最为明显。Linux 内核内部的虚拟文件系统 (VFS) 实现了此选择。VFS 采用了一组可由其他文件管理系统使用的基本数据结构。这些数据结构是超级块、inodedentry(或目录文件)和数据块。

 

每个分区都包含一个超级块,用于维护分区中文件系统上的信息,包括一组在每个超级块中唯一编号的 inode、空闲 inode 的数目以及 inode 总数、数据块总数、空闲数据块数和文件系统的状态。文件系统的状态有两种:干净(当文件处于未更改状态时)和脏(当有未写入磁盘的文件系统更改时)。超级块中的一个 inode 对应着一个文件。

除文件名外,inode 包含了有关文件的所有信息,其中包括:

  • 地址
  • 类型
  • 大小
  • 所有者
  • 对文件数据所在块的引用
  • 文件最后一次修改和访问的时间戳。

可以使用以下命令查看文件的 inode

$ ls -i

正如前面已经提到的,inode 只在超级块中唯一编号,且每个分区只有一个超级块,这就是硬链接无法跨越多个分区的原因。

文件名通过 dentry 对象(用户看到的是目录文件)链接到一个 inode 编号。数据块保存实际的文件数据。

Linux 支持任何具备 VFS 定义的基本函数集的文件管理系统。对于像 vfat 这样的文件管理系统,Linux 项目提供了它自己的设备驱动程序。

您可以从以下输出中看到,不同的文件管理系统可以存在于同一系统的不同分区上。

df -T

Filesystem    Type         1K Blocks    Used      Available   Use%   Mounted on

/dev/hda6     reiserfs     4195632      2015020   2180612     49%    /

/dev/hda5     ext2         14607        3778      10075        8%    /boot

/dev/hda9     reiserfs     937372       202368    735004      22%    /home

/dev/hda8     reiserfs     6297248      3882504   2414744     62%    /opt

shmfs         shm          256220       0         256220       0%    /dev/shm

/dev/hda1     vfat         2159992      1854192   305800      86%    /windows/C

当前,Oracle 用户遇到的最常用的文件管理系统是 ext2/ext3ReiserFS(不受 Oracle 支持)和 OCFS。以下是非 Oracle 分区主要特性的汇总表。

特性

ext2

ext3

ReiserFS3.6(不受 Oracle 支持)

最大分区大小

4TB

4TB

16TB

最大文件大小

2GB-4GB

2GB-4GB

8TB

块大小

1KB-4KB

1KB-4KB

只有 4KB

日志功能

崩溃后重新启动

非常快

用于恢复清除文件的工具

崩溃后数据的状态

良好

非常好

一般

ACL 支持

稳定性

优秀

良好

良好

由于 ext2 ReiserFS 均提供了用户级安全性以及更高效的磁盘空间使用等特性,因此尽管至少 ext2 确实提供了碎片整理工具,但几乎不需要这些工具。Ext2 是传统的、事实上的标准 Linux 文件管理系统。它是 Red Hat 版本 Linux 的默认文件管理系统,而 ReiserFS SUSE 的默认文件管理系统。ext2/ext3 的最大文件大小实际上取决于所选择的块大小和硬件体系结构。ext2 的许多特性之一是它允许由磁盘分区决定块大小。ReiserFS 技术允许在磁盘分区中使用可变的文件大小(这是因为它基于平衡树技术而不是基于范围),因此除日志功能以外,高效的空间使用也是其设计所固有的。



阅读更多内容1 · 2 · 下一页>>


  上一篇: 精华教程:Linux 文件命令精通指...   下一篇: Linux Add or Remove module man...
li
 §相关评论  
 热点文章

·新手强烈推荐:linux入门11点建
·Unix学习方法-走向高手之路
·Linux性能分析和调整的基本原则
·你很陌生但是很适用的10个linu
·Oracle补丁3028673,解决单进程
·最近被aix 5305给折腾死了
·在AIX 5L上配置NFS Server/Cli
·在AIX 5L上配置与管理路由
·这个补丁影响的范围还是比较大
·在AIX 5L上使用绑定网卡(ethe
·使用pam_abl防止SSH遭暴力破解
li
 编辑推荐
·新手强烈推荐:linux入门11点建
·Unix学习方法-走向高手之路
·Linux性能分析和调整的基本原则
·你很陌生但是很适用的10个linu
·Oracle补丁3028673,解决单进程
·最近被aix 5305给折腾死了
·在AIX 5L上配置NFS Server/Cli
·在AIX 5L上配置与管理路由
·这个补丁影响的范围还是比较大
·在AIX 5L上使用绑定网卡(ethe
·使用pam_abl防止SSH遭暴力破解
li
 相关篇章
·精华教程:Linux 文件命令精通指...
·嵌入linux的学习方法论
·介绍如何有效使用tar、cpio和rpm...
·IBM RS/6000 AIX操作系统的安装
·推荐:AIX常用命令总结
·Redhat Linux inittab详解
·linux援救模式:linux rescue使用...
·新手强烈推荐:linux入门11点建议
·linux系统守护进程:crontab基本...
·VMware Server上安装linux步骤详...
·Linux Add or Remove module man...
·lvm(逻辑卷管理器)的介绍和常用功...
·CDlinux简介和基本使用
·RHEL4 性能优化
·linux下面tar gzip zip bzip使用...
·Linux下关于大于2T磁盘的使用GPT...
·RHCE学习笔记(1)
·你很陌生但是很适用的10个linux命...
·UNIX及Linux的时间处理方法(资料...
·linux操作异同:suse10与redhat一...
 
li
设为首页 | 关于我们 | 技术服务 | 收藏本站 | 网站地图 | 联系方式 | 本站友情连接