RSS
热门关键字:
当前位置 :| 主页>新手入门>

Linux系统基础知识(七)linux文件系统

来源:水木 作者:水木 时间:2008-09-27 Tag:文件系统   点击:

Linux支持数量众多的本地文件系统类型和几种通过网络访问远程磁盘的文件系统,分析/proc/filesystems文件的内容即可找出当前Linux内核提供了对哪些文件系统的支持。
  Linux默认直接支持的文件系统是ext2文件系统。
  一,exe2文件系统

  当前,ext2文件系统(即second extended filesystem)是Linux默认直接支持的文件系统。ext2文件系统和其他现代Unix使用的文件系统非常相似,但更接近于BSD系统所用的Berkeley
Fast Filesystem。ext2文件系统的最大容量是4 TB,但目前它的最大文件大小被Linux内核限制为2 GB。

  ext2的核心是两个内部数据结构,即superblock和inode。superblock是一个包含文件系统重要信息的表格,比如标签、大小、inode的数量等,它是对文件系统结构的基础性的、全局性的描述。因此,没有了superblock的文件系统将不再可用。由于这个原因,文件系统中不同位置存放着superblock的多个副本。

  inode是基本的文件级数据结构,文件系统中的每一个文件都可以在其中一个inode中找到其描述。inode描述的文件信息包括:文件的创建和修改时间,文件大小,实际存放文件数据的块列表,等等。对于较大的文件,块列表可能包含附加数据块列表的磁盘位置(称为间接块),甚至有可能出现二重或三重的间接块列表。文件名字通过目录项(Directory
Entry)关联到inode,目录项由“文件名字-inode”对构成。
  

     二,创建和管理文件系统


  Linux提供了大量用于创建和管理文件系统的工具。接下来我们将以新增磁盘(或分区)为线索,介绍各种要用到的工具。尽管完成这一任务的过程并不复杂,但这些操作还得在Linux命令行进行,这是因为大多数图形界面的工具在这方面的支持非常有限。
  1,确定设备文件
  为新加入的物理磁盘(或磁盘分区)创建文件系统之前,首先必须知道该磁盘具体的设备名字。我们可以用好几种方法来找出它的设备名字。例如,可以通过dmesg命令分析启动日志(通过管道传送给grep,并搜索[hs]d[a-z]);如果已经用syslog截取,则可以查看日志文件。另外,大多数Linux发行版都默认启用/proc文件系统,如果你也使用了它,则可以分析/proc/partitions文件,查看系统认可的所有磁盘分区的清单。


  有时我们需要手工为磁盘创建设备文件,但这种情况极其罕见。设备文件可以用/dev目录下面的MAKEDEV脚本创建。例如,下面的命令将为第六个SCSI磁盘创建设备文件:

# cd /dev; MAKEDEV sdf
  2、创建分区
  确定磁盘的设备文件之后,接下来就要用fdisk之类的工具将磁盘分区。输入fdisk命令并在参数中指定目标磁盘
即可启动该工具:
# fdisk /dev/sdf


用fdisk修改好分区定义之后,可以用W命令保存更新后的分区表,用Q命令直接退出cfdisk则表示忽略所有已经作出的改动。只要对磁盘分区表作了任何实质性的改动(即,不仅仅指定分区标签或改变分区类型),则在继续处理之前
应当重新启动系统。
  3,创建文件系统
用mkfs命令创建文件系统(或者,更精确地说是用mke2fs命令。mkfs是一个统一的前端工具,为所有不同文件系统类型的创建命令提供)。如下例所示,该命令最简单的形式是通过-t参数指定文件系统的类型,然后加上创建该文件系统的分区。下面这个命令在第二个SCSI磁盘的第二个分区上创建一个ext2文件系统:

#mkfs -t ext2 /dev/sdb2
# mke2fs /dev/sdb2
  上面的第二个命令是直接使用mke2fs时的等价命令。
mke2fs的参数
-L label
指定分区的标签(最长11个字符)。
-b size
文件系统的块大小,以字节计,默认值1024。块是文件系统分配磁盘空间的单位。
-c
在创建文件系统之前检查分区的坏块。
-m percent
指定保留的文件系统空间百分比,这部分空间只能由root访问。默认值是磁盘的百分之五,这是传统Unix默认值的一半。在今天普遍使用大容量磁盘的情况下,即使是这个百分比也值得再加斟酌,比如可以将它降低到百分之二或者三。

-i ratio
指定每个inode的字节数,即为每个指定大小的字节块创建一个inode。默认值是4096,这个值所创建的inode通常超过实际可能用到的,但一般没有必要改变它,因为节省下来的磁盘空间非常有限。另外,用“-N
数字”可以显式地指定创建inode的数量。
-v -q
分别表示详细输出或简略输出
  4,其他工具
  Linux下有许多用于检测现有ext2文件系统状态以及重新进行配置的工具。tune2fs就是其中一个,它的-l选项将列出指定ext2文件系统的各种属性。其中大多数属性的含义都非常明确,这些属性与可在mke2fs命令中指定的选项相对应。个别属性决定fsck何时对文件系统进行下一次检查。默认情况下,Linux将每隔20次系统启动或者30天对文件系统进行检查(这里的时间间隔周期以秒指定)。

  这些文件系统属性中的很大一部分都可以用tune2fs的相应参数进行修改。例如,下面的命令通过设置两次检查
的时间间隔秒数(-i)为0禁止了根据时间周期执行的检查:
# tune2fs -i 0 /dev/hdb5
  三,日志文件系统reiserfs


  在1997年7月23日,Hans Reiser把他的基于平衡树结构的ReiserFS文件系统在网上公布 。 这是ReiserFS的第一次公开亮相。此后,ReiserFS一直在Hans
Reiser和领导下的开发小组下开发和发展,SuSE Linux也对它的发展起了重大的帮助。由于ReiserFS有一些很有用的特性,更主要的是它比ext2fs要快得多,所以它很快被很多人使用。目前,bluepoint
linux 2.0 和suse linux 7.3都直接支持ReiserFS,更重要的是在Linux内核2.4.1版本开始已支持ReiserFS,估计ReiserFS很快就会普及。



  ReiserFS是一种新型的文件系统,你可以选择它来装载你的Linux操作系统和其他应用程序和数据文件。它通过一种与众不同的方式--完全平衡树结构来容纳数据,包括文件数据,文件名以及日志支持。ReiserFS还以支持海量磁盘和磁盘阵列,并能在上面继续保很快的搜索速度和很高的效率。ReiserFS文件系统一直以来被用在高端Unix系统上如SGI等。

最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册

_×
嵌入式linux中文站
QQ群讨论 微博订阅

微信扫一扫关注我们
随时获取最新开源资讯