linux 文件系统

Linux 系统中的每一个分区都是一个文件系统。

文件系统就是指对存在物理空间上的文件的一种管理软件(个人认为)

Linux 2.4 内核以后,开始支持大量的文件系统;

日志文件系统; ext3   ReiserFS   XFSJFS

Linux2.4内核以后支持的文件系统有; JFS , ReiserFs, ext,  ext2,  ext3,  , ISO9660,  XFS,   Minx,  MSDOS,  UMSDOS, VFAT, NTFS,  HPFS,  NFS,  SMB,   SysV,  PROC 等等

 

Ext2/ext3  采用block+ innode 方式来存放文件

Ext2/ext3  有一个空间被称为超级块

(superblock)  存放文件系统的原数据

包括;卷标名, block数,  inode 数 等等

Inode是存放文件元数据,包括文件权限,属性,更改时间等数据

Inode 就是一个索引节点, 这个inode纪录文件的属性,位置等信息。

每个inode都有一个号码,称为索引节点号(inode号)

Linux 文件系统将索引节点号和文件名同时保存在目录中。所以目录只是将文件的名称和他的索引点号结合在一起的一张表,目中的每个文件名和索引点号称为一个连接。

一个文件只有一个对应的inode号,但是一个inode可以有多个文件名与其对应。因此,在磁盘上的同一个文件可以通过不同的路径去访问他。

书上说ext2不是日志文件系统

从ext2 变成ext3不需要格式化,用tune2fs 就可以

从ext3 变成ext2 可以不用作任何的改动

Ext3 特性

1.        高效性; 非法关机后恢复ext3文件系统只要10秒左右

2.        数据完整性;避免非法关机对数据完整性的破坏

3.        文件系统的速度; 对磁盘驱动器读写进行了优化

4.        数据的转化; ext2-ext3,   ext3-ext2

5.        多种日志模式;对所有数据进行日志纪录模式,只对metadata进行日志纪录,而不对数据进行日志纪录

Data=journal    所有数据日志纪录模式  

Data=writeback  对metadata日志纪录模式

提示metadata是定义文件系统中的数据,即数据中的数据

Root可以根据实际的工作情况来定义,在系统的工作速度和数据完整性来选择

将一个新的分区格式化成ext3文件系统

# mke2fs   -j     /dev/hda8

将ext2 转换成ext3文件系统

# tune2fs  -j     /dev/hda9

提示; 将ext2文件系统转换成ext3时,不需要将分区卸载。直接转换就可以。不要忘记把/etc/fstab 里的ext2改成ext3

用e2fsck 修复ext3文件系统

1. # umount   /dev/hda8    先卸载该分区.

2.#e2fsck  -fy  /dev/hda8  修复该分区

 

Reiserfs文件系统

1997  年 hans  reiser 把reserfs文件系统在网上公布

Reserfs  比ext2fs要快的的多

当前reserfs 只能在intel结构体系上使用

Reiserfs 文件系统一直被用于在高端的unix系统上

Reiserfs 特点;

1.        先进的日志机制

Reiserfs 日志机制在每个实际数据要修改之前把相应的日志写入到磁盘空间,这样提高数据的安全性

2.        高效的磁盘利用率

Reiserfs对一些小的文件不分配inode。而是将这些小文件打包,存放在同一个磁盘块中。而其他的文件系统是每个文件都要占用一个block块。这意味着如果有1000个小文件,那么就要占用1000个block。这样非常浪费磁盘空间。

3.        独特的搜索方式

Reserfs基于平衡树(balanced tree)搜索,这种方式的速度要比ext2快的多。平衡树是一种高效的算法。

4.        支持海量硬盘

Reserfs可以管理上百G的数据。Rerserfs最大支持文件系统的尺寸是16TB。这非常适合企业级应用。

5.        优异的性能

Reserfs 文件系统启动X -windows的速度比ext2快2倍

 

文件的附加属性

# chattr  +〔AadijS〕  filename  设置文件的附加属性

# lsattr  filename    查看文件的附加属性

A; 当文件被改变时,文件的更改时间不变

a;  只能向该文件追加内容,不可以更改原内容

i; 文件不可以删除, 重命名, 改变内容

j; 在ext3文件系统中,次文件一定被写入日志

S; 当文件被改动,此改动会同步写入文件系统

 

将原ext2转换升级成ext3文件系统

#  tune2fs  -j     /dev/hda1  这是直接转换

#  mke2fs  -j    /dev/hda2   这是格式化转换

 

常见的文件系统

Minix ; linux第一个支持的文件系统,比较古老,现在每人用了

ISO9660; 标准的cdrom 文件系统

NFS ; 是sun公司推出的网络文件系统,准许多台计算机共享一个文件系统

提示; redhat linux默认是不支持ntfs 文件系统的。我们可以自己编辑kernel来让系统支持ntfs,但是可能会对数据造成损坏

 

常用创建文件系统工具

Mkfs  可以用于创建各种文件系统,由-t参数来指定

Mke2fs  创建ext2/ext3文件系统

 

# Mk2fs   -j    /dev/hda2

 

文件系统的使用

设备;就是一个具体的文件系统,可以用设备名或卷标名来表示

挂载点:必须是一个目录。当一个目录下有文件时,则在该文件系统被挂载后,原文件暂时无法访问。直到当前挂载的文件被卸载以后,才能继续访问

 

Mount命令参数

挂载时使用mount命令

基本格式; mount 〔-参数〕  〔设备名〕  〔挂载点〕

Mount  -t   指定文件系统的类型

Umount  卸载文件系统

Mount  -o  loop   disk1.iso  挂载.iso 文件

Mount  -o 选项指定挂载文件系统时的选项。有些时候也可以/etc/fstab来指定。常用的有

ro  ; 以只读的方式挂载

rw  ;  以读写的方式挂载

nouser ; 使一般的用户无法挂载设备

user ; 可以让一般的用户挂载设备

 

配置/etc/fstab

/etc/fstab 这个文件是文件系统的挂载信息

当mount一个文件系统时如果给出的参数不全,系统会从/etc/fstab文件中读取参数来补全

当系统启动时,系统会根据这个/etc/fstab这个文件中的配置信息来自动加载文件系统

这个文件同时,还可以被fsck, dump, quotaon,  swapon等程序所使用

fstab 文件的格式

fs_spec  fs_file  fs_type   fs_options    fs_dump  fs_pass

/dev/hda1   /boot   ext2       defaults      1        1   

 

fs_spec ; 这个字段表示要加载的文件系统所在的设备或远程文件系统

fs_file;  表示文件系统的挂载点

fs_type; 文件系统的类型

说明;对于swap设别,该字段为none; 对于加载目录名中包含空格的情况,用40来表示空格

Fs_options; 因为在给指定的设备加载文件系统时,需要使用特定的参数,多个参数是由逗号分开的。对于大多数的系统都是default就可以满足需要了

加载文件系统可以指定的参数;

ro  ;  以只读的方式加载

sync;  不对该设备的写操作进行缓冲处理,这可以防止在非法关机时破坏文件系统和数据的完整性。但是这样却降低了计算机的工作效率

user ;  准许普通用户可以挂载这个文件系统

quota  ;  强制的在该文件系统上进行磁盘配额

noauto ;  不在使用mount -a  命令 (在系统启动时) 加载文件系统

fs_dump ;  该选项被“dump”命令使用来检查一个文件系统应该以多快的频率进行转存,如果不需要转存就设置为0

fs_pass ;  这个字段表示fsck命令用来决定在启动时需要被扫描文件系统的顺序,根文件系统“/” 对应该字段的值为1,其他文件系统应该为2。如果该文件系统不需要在启动时扫描,则设置为0

 

检查当前系统中挂载的文件系统

# mount      使用mount命令

# cat   /etc/fstab    使用/etc/fstab 文件

#  cat   /proc/mounts    使用内存镜像文件

 

卷标的含义

由于设备的文件名可能在硬盘结构发生变化时而改变,因此redhat linux 对ext2文件系统使用卷标来挂载和卸载

卷标纪录在ext2/ext3文件系统的超级块中(superblock)

e2label 命令可以查询和更改ext2文件系统的卷标名

# cat  /etc/fstab

LABEL=/      /        ext3       default    1   1

/dev/hda7     /usr      ext3      default    1   1

第二的意思就是说,把/dev/hda7这个分区挂载到/usr这个目录上

第一行没有指明分区,意思是把LABEL(卷标)为/ 的分区mount到/ 分区上。 这样写的好处就是当你的硬盘从主板上的IDE1(hda)移动到IDE2(hdc)上的时候,系统仍然可以自动的挂载正确的分区

 

手动添加新分区,自定义卷标

#  e2label   /dev/hdax   /new

#   mkdir     /new

最后在/etc/fstab 文件中加入

LABEL=/new      /new       ext3      default   1    1

这样就ok了, 下次重启后系统会自动挂载这个/new分区

 

查询 ext2/ext3 的卷标名

#  e2label    /dev/hda2    查看

Boot                       系统返回信息

 

更改ext2/ext3的卷标名

# e2label   /dev/hda2       data   更改

# e2label    /dev/hda2             查看

Data                               系统返回信息

 

用卷标名来挂载文件系统

#  mount  —L   data   /data

#  mount   LABEL=DATA   /data

 

当你想创建,删除分区或重新划分分区大小,分区所在的设备就不能是正在使用的(分区不能被挂载,并且交换空间也不能被启动)。达到这个目录的最简单的方法就是,进入救援模式中引导系统。由于已经加载的文件系统的信息会自动的写道/etc/mstab中,所以用户只需要给出设备或挂载点中的一个参数即可

如果驱动器不包括任何这在使用的分区,你可以使用umount来卸载分区,使用swapoff 命令来关闭硬盘驱动器上的交换空间

 

文件系统的维护命令

Fsck  /filesystem   check ; 用于检查和修复文件系统

e2fsck; 检查和修复ext2/ext3文件系统

tun2fs; 更改ext2文件系统的属性

resize2fs; 更改ext2文件系统的大小

parted;  更改多种文件系统的大小

 

linux有个parted 工具可以调整分区的大小,但是他是有限制的。如果向增大一个分区那么该分区后面必须有没有使用的空间,而且这个分区没有被mount

# parted      /dev/had    resize   3   644   1300

意思是把分区3  调整从柱面644 到柱面1300结束,重新启动后就会生效了。

 

Linux系统将每隔20次启动系统或30天对文件系统进行一次检查。这些属性可以用tune2fs 来设定(时间间隔的周期以秒指定)

#  tune2fs   -i   0   /dev/hdb5

设置检查文件系统的时间间隔秒数(-i)为0,0就是禁止根据时间的周期进行检查。

 

文件系统访问控制列表

可以为多个用户和组建立文件访问控制列表

基本格式化为; mount   -o   acl

Getfacl

Setfacl

Acl 访问控制列表

自定义访问控制列表是一种机制,每一个acl由一个用户标识和组标识结合的整体。用户标识与组标识配合相对应的访问权限组成了

(user.group.mode)

访问级别

(u.g,rwx) 特定的一个用户,特定的组

(u.%,rwx)特定的一个用户, 任意的组

(%.g,rwx)任意一个用户,特定的组

(%.%,rwx)任意一个用户,任意一个组

 

每一个文件都有13组的访问权限模式,如果有多个类型的访问权限条目,那么较详细的条目的优先级较高。在acl中设置某一个特定用户的读写权限,如果设置了m(ask), 那用户的权限还要受到

m(umask)的限制。原来是要两个权限相与一下,才四用户的正确权限

比如; 设置userA 的权限为r+w,而m设置为r,那么userA的权限为r。

自动挂载文件系统

系统通过autofs服务自动的挂载文件系统

需要后台的automount 进程

Autofs服务的开关由 /etc/init.d/autofs脚本来控制

主要应用在软驱和光驱的场合

如果该设备在一段时间内没有被使用,那么autofs会自动卸载该设备

Autofs 服务的主要配置文件

/etc/auto.master  和   /etc/auto.misc

通过这两个文件来完成automount的设定

Auto.master 的每一行表示一个自动挂载的集群

每一行的格式为

自动挂载目录的集合     参考文件(默认文件为/etc/auto.misc)

Auto.misc 文件中纪录的则是每一个自动挂载的设备

每一个行的格式为;

挂载点(实际挂载点为“/自动挂载的目录集合/挂载点”)  自动卸载的时间    设备文件名


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值