您的位置:首页 > 运维架构 > Linux

Linux学习笔迹(三)--磁盘与文件系统管理

2013-11-09 01:42 656 查看
Linux磁盘与文件系统管理

1、Linux系统中硬盘分区主要分为:主分区和扩展分区两种,且主分区与扩展分区之和最多只有4个,即磁盘最多只能4个;主分区可以马上使用但不能进行在分区;而扩展分区必须进行再分区,即逻辑分区,才可使用,并且扩展分区最多只有一个(对操作系统的的限制,最多只能装一个操作系统);逻辑分区的数据依操作系统而不同,在Linux系统中,IDE硬盘最多可以有59个逻辑分区(5号到63号,磁盘前缀为:hd),SATA硬盘最多有11个逻辑分区(5号到15号,磁盘前缀为:sd)。

2、Linux文件系统通常会将数据和文件权限、属性分开存放在不同的块中,权限和属性放置到inode中,实际数据存放到data block中,具体信息如下:

super block:记录此文件系统的整体信息,包括inode/block的总量、使用量、剩余量、以及文件系统的格式与相关信息等;

inode:记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的block号码;

block:实际记录文件的内容,若文件太大时,就占用多个block。

3、Linux的Ext2文件系统

文件系统一开始就将inode与block规划好了,除非重新格式化(或者利用resize2fs等命令更改系统大小),否则inode与block固定后就不会再变动的。

在文件系统整体的规划中,文件系统最前面有一个启动扇区,可以安装引导装载程序。

①inodetable(inode表格)

inode记录文件数据至少有下面这些:

·该文件的访问模式(read/write/excute)

·该文件的所有者与组(owner/group)

·该文件的大小

·该文件创建或状态改变的时间(ctime)

·最近一次的读取时间(atime)

·最近修改时间(mtime)

·定义文件特性的标志(flag),如设置SetUID等

·该文件真正内容的指向(pointer)

·每个inode的大小均固定为128bytes

·每个文件都会仅占用一个inode而已,因此文件系统能够创建的文件数量与inode的数量有关

·系统读取文件时需要先找到inode,并分享inode所记录的权限与用户是否符合,如符合才能够开始实际读取数据block的内容

·inode记录block号码的区域定位12个直接、1个间接、与1个三间接记录去,即拿block来记录额外的号码

②data block(数据块)

在Ext2文件系统中,所支持的block大小有1kb、2kb及4kb三种。

③Superblock(超级块)

④File System Description(文件系统描述说明)

⑤block bitmap(块对照表)

⑥inode bitmap(inode对照表)

4、Ext2/Ext3文件的访问与日志文件系统的功能

新增一个文件,此时文件系统的行为是:

①先确定用户对欲添加文件的目录是否具有w与x的权限,若有的话才能添加

②根据inode bitmap找到没有使用的inode号码,并将新文件的权限/属性写入

③根据block bitmap找到没有使用中的block号码,并将时间的数据写入block中,且更新inode的block指向数据

④将刚才写入的inode与block数据同步更新inode bitmap与block bitmap,并更新supervblock的内容

一般将inodetable与datatable称为数据存放区域,至于superblock、blockbitmp、inodebitmap等区段被称为中间数据(metadata),这些区段的数据经常变动,每次添加、删除、编辑时都可能会影响到这三个部分的数据。

为了保证文件系统信息一致性,Ext3加入了日志文件系统。Ext3是Ext2的升级版。

5、文件系统的简单操作

(1)磁盘与目录的容量:df,du

df:列出文件系统的整体磁盘使用量

df [-ahikHtm] [目录或文件名]

-a:列出所有的文件系统,包括系统特有的/proc等文件系统

-k:以KB的容量显示各文件系统

-m:以MB的容量显示各文件系统

-h:以人们较易阅读的GB、MB、KB等格式自行显示

-i:不用硬盘容量,而以inode的数量来显示

du:评估文件系统的磁盘的使用量,目录所占容量

du [-ahskm] 文件或目录名称

-a:列出所有的文件与目录的容量,默认仅统计目录下面的文件量

-s:列出总量而已,而不列出每个各别的目录占用量

(2)连接文件:ln

在Linux下面的连接文件有两种:一种是类似Windows的快捷方式功能的文件,可以快速连接到目标文件或目录(符号连接,symbolic link);另一种则是通过文件系统的inode连接来产生新的文件名,而不产生新文件(硬连接,hard link)。

hard link:只是在某个目录下新建一条文件名连接到某个inode号码的关联记录上。相对于symbolic link更安全,如果你将任何一个“文件名”删除,其是inode与block都还是存在的。使用hard link设置连接文件时,磁盘的空间与inode的数目都不会改变,只是在该目录的关连数据上多写了一个。但使用hard
link要注意:不能跨文件系统,也不能连接到目录。

symbolic link:类似Windows的快捷方式,创建一个独立的文件,而这个文件会让数据的读取指向它连接的那个文件的文件名,当源文件被删除之后,symbolic link的文件会打开,实际上就是找不到源文件的“文件名”。

ln [-sf] 源文件 目标文件

其中,-s:如果不加任何参数就是hard link,加上-s 就是symbolic link

-f:如果目标文件存在时,就主动将目标文件直接删除后再创建

6、磁盘的分区、格式化、检验与挂载

(1)磁盘分区:fdisk

fdisk [-l] 设备名称

其中,-l:输出后面接的设备所有的分区内容。若仅有fdisk -l时,则系统将会把整个系统内能够找到的设备的分区均列出来。fdisk只有root才能执行。

(2)磁盘格式化:mkfs

mkfs [-t 文件系统格式] 设备文化名

其中,-t:可以接文件系统格式,如ext3,ext2,vfat等

磁盘格式化指定文件系统的具体选项使用:mke2fs

mke2fs [-b block的大小] [-i inode大小] [-L 卷标] [-cj]设备

7、磁盘挂载与卸载

磁盘挂载要注意:

①单一文件系统不应该被重复挂载在不同的挂载点(目录)中;

②单一目录不应该重复挂载多个文件系统;

③作为挂载点的目录理论上应该是都是空目录才是;如果挂载的目录不是空,那么挂载子文件系统之后,原目录下的东西就会暂时消失,并不会被覆盖掉,等新分区卸载之后,原目录的内容就会再次显示出来。

mount -a

-a:依照配置文件/etc/fstab的数据将所有未挂载的磁盘都挂载上来;

monut [-t 文件系统] [-L Label名] [-o 额外选项] \

[-n] 设备文件名 挂载点

-t:指定文件系统种类

-n:系统将实际挂载情况实时写入/etc/mtab中,其他参数请使用man monut查看。

umonut [-fn] 设备文件名或挂载点

其中,-f:强制卸载,可用在类似网络文件系统(NFS)无法读取到的情况下;

-n:不更新/etc/mtab的情况下卸载

8、文件常用压缩命令



压缩命令:

①compress:这个压缩命令是非常老旧的压缩命令,已经不再流行了。

compress [-rcv]
文件或目录

其中,-r:可以连同目录下的文件也同时给予压缩;

-c:将压缩数据输出成为standard output(输出到屏幕);

-v:可以显示出压缩后的文件信息以及压缩过程中的一些文件名变化。

②gzip:目前应用最为广泛的压缩命令,可以解压compress、zip与gzip等软件所在压缩文件,建立的压缩文件为*.gz的文件名。可以使用zcat命令直接读取纯文本压缩文件。

gzip [-cdtv#] 文件名

其中,-c:将压缩的数据输出到屏幕上,可以通过数据流重定向来处理;

-d:解压缩的参数;

-t:可以用来检验一个压缩文件的一致性,看看文件有无错误;

-v:可以显示原文件/压缩文件的压缩比等信息;

-#:压缩等级,-1最快,但压缩比最差,-9最慢,但压缩比最好,默认是-6.

如:gzip -v man.cofig(压缩man.config文件,并显示压缩比),gzip -d man.config.gz(解压man.config.gz文件),zcat man.config.gz(查看压缩文件man.config.gz)

③bzip2:提供压缩比比gzip更佳的压缩程序,建立的压缩文件为*.bz2的文件名。bzcat:查看*.bz2d的压缩文件。

bzip2 [-cdkzv#] 文件名

其中,-k:保留原文件,而不会删除原始的文件;其他参数同gzip。

注:gzip、bzip2都只能对单一文件进行压缩,不能对目录进行压缩,若对目录进行压缩需要使用tar命令。

④打包命令:tar

打包压缩:tar [-j|-z][cv]
[-f 新建文件名] filename

查看文件名:tar [-j|-z][tv]
[-f 新建文件名]

加压缩:tar
[-j|-z][xv] [-f 新建文件名] [-C 目录]

其中,-c:新建打包文件,可以搭配-v来查看过程中被打包的文件名(filename);

-t:查看打包文件的内容包含哪些文件名,重点在查看文件名;

-x:解打包或解压缩的功能,可以搭配-C(大写)在特定目录解压;

-j:通过bzip2的支持进行压缩/解压,此时文件名最好为*.tar.bz2;

-z:通过gzip的支持进行压缩/解压
,此时文件名最好为*.tar.gz;

-v:在压缩/解压过程中,将正在处理的文件名显示出来;

-f
filename:-f后面要接被处理的文件名,建议-f单独写一个参数;

-C
目录:在特定的目录解压缩。

其他参数,请使用man
tar查看。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: