实训8磁盘管理.docx

上传人:b****8 文档编号:12786668 上传时间:2023-06-08 格式:DOCX 页数:25 大小:136.64KB
下载 相关 举报
实训8磁盘管理.docx_第1页
第1页 / 共25页
实训8磁盘管理.docx_第2页
第2页 / 共25页
实训8磁盘管理.docx_第3页
第3页 / 共25页
实训8磁盘管理.docx_第4页
第4页 / 共25页
实训8磁盘管理.docx_第5页
第5页 / 共25页
实训8磁盘管理.docx_第6页
第6页 / 共25页
实训8磁盘管理.docx_第7页
第7页 / 共25页
实训8磁盘管理.docx_第8页
第8页 / 共25页
实训8磁盘管理.docx_第9页
第9页 / 共25页
实训8磁盘管理.docx_第10页
第10页 / 共25页
实训8磁盘管理.docx_第11页
第11页 / 共25页
实训8磁盘管理.docx_第12页
第12页 / 共25页
实训8磁盘管理.docx_第13页
第13页 / 共25页
实训8磁盘管理.docx_第14页
第14页 / 共25页
实训8磁盘管理.docx_第15页
第15页 / 共25页
实训8磁盘管理.docx_第16页
第16页 / 共25页
实训8磁盘管理.docx_第17页
第17页 / 共25页
实训8磁盘管理.docx_第18页
第18页 / 共25页
实训8磁盘管理.docx_第19页
第19页 / 共25页
实训8磁盘管理.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

实训8磁盘管理.docx

《实训8磁盘管理.docx》由会员分享,可在线阅读,更多相关《实训8磁盘管理.docx(25页珍藏版)》请在冰点文库上搜索。

实训8磁盘管理.docx

实训8磁盘管理

一、磁盘分区基本知识

1、硬盘组成与分区

扇区(Sector)为最小的物理储存单位,每个扇区为512bytes;

将扇区组成一个圆,那就是磁柱(Cylinder),磁柱是分区(partition)的最小单位;

第一个扇区最重要,里面有:

(1)主要启动区(Masterbootrecord,MBR)及分区表(partitiontable),其中MBR占有446bytes,而partitiontable则占有64bytes。

2、磁盘分区

磁盘分区指指定分区的启始与结束磁柱。

即告诉操作系统『这颗磁盘在此分区可以存取的区域是由A磁柱到B磁柱之间的区块』,这样操作系统就能够知道他可以在所指定的区块内进行文件数据的读/写/搜寻等动作。

指定分区的磁柱范围记录位置:

就是第一个扇区的分区表中。

但是因为分区表仅有64bytes而已,因此最多只能记录四笔分区的记录,这四笔记录我们称为主要(primary)或扩展(extended)分区,其中扩展分区还可以再分割出逻辑分区表(logical),而能被格式化的则仅有主要分区与逻辑分区。

⏹主要分区与扩展分区最多可以有四笔(硬盘的限制)

⏹扩展分区最多只能有一个(操作系统的限制)

⏹逻辑分区是由扩展分区持续切割出来的分区;

⏹能够被格式化后,作为数据存取的分割槽为主要分区与逻辑分区。

扩展分区无法格式化;

⏹逻辑分区的数量依操作系统而不同,在Linux系统中,IDE硬盘最多有59个逻辑分区(5号到63号),SATA硬盘则有11个逻辑分区(5号到15号)。

3、各种接口的磁盘在Linux中的文件名分别为:

/dev/sd[a-p][1-15]:

为SCSI,SATA,U盘,Flash闪盘等接口的磁盘文件名;

/dev/hd[a-d][1-63]:

为IDE接口的磁盘文件名;

二、文件系统

1、格式化

因为每种操作系统所配置的文件属性/权限并不相同,为了存放这些文件所需的数据,因此就需要将分区进行格式化,以成为操作系统能够利用的『文件系统格式(filesystem)』。

Linux的文件系统则为Ext2(Linuxsecondextendedfilesystem,ext2fs)

一个分区可以格式化为多个文件系统,如LVM、软件磁盘阵列等

2、文件系统工作原理

操作系统的文件数据除了文件实际内容外,通常含有非常多的属性,例如Linux操作系统的文件权限(rwx)与文件属性(拥有者、群组、时间参数等)。

文件系统通常会将这两部份的数据分别存放在不同的区块,权限与属性放置到inode中,至于实际数据则放置到datablock区块中。

另外,还有一个超级区块(superblock)会记录整个文件系统的整体信息,包括inode与block的总量、使用量、剩余量等。

每个inode与block都有编号。

●superblock:

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

●inode:

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

●block:

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

索引式文件系统(indexedallocation):

图1inode/block数据存取示意图

3、inodetable(inode表格)

inode记录的文件数据包括底下这些:

∙该文件的存取模式(read/write/excute);

∙该文件的拥有者与群组(owner/group);

∙该文件的容量;

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

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

∙最近修改的时间(mtime);

∙定义文件特性的旗标(flag),如SetUID...;

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

inode的数量与大小也是在格式化时就已经固定了:

∙每个inode大小均固定为128bytes;

∙每个文件都仅会占用一个inode而已;

∙承上,因此文件系统能够创建的文件数量与inode的数量有关;

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

4、Superblock(超级区块)

Superblock是记录整个filesystem相关信息的地方,没有Superblock,就没有这个filesystem了。

其记录的信息主要有:

∙block与inode的总量;

∙未使用与已使用的inode/block数量;

∙block与inode的大小(block为1,2,4K,inode为128bytes);

∙filesystem的挂载时间、最近一次写入数据的时间、最近一次检验磁盘(fsck)的时间等文件系统的相关信息;

∙一个validbit数值,若此文件系统已被挂载,则validbit为0,若未被挂载,则validbit为1。

图2文件系统示意图

练习:

查看文件系统

[root@www~]#dumpe2fs[-bh]装置文件名

选项与参数:

-b:

列出保留为坏轨的部分

-h:

仅列出superblock的数据,不会列出其他的区段内容!

范例:

找出我的根目录磁盘文件名,并观察文件系统的相关信息

[root@www~]#df<==这个命令可以叫出目前挂载的装置

Filesystem1K-blocksUsedAvailableUse%Mountedon

/dev/hdc299206243822848558570841%/<==就是这个光!

/dev/hdc3495631614137645591084%/home

/dev/hdc1101086111268474112%/boot

tmpfs37133203713320%/dev/shm

[root@www~]#dumpe2fs/dev/hdc2

dumpe2fs1.39(29-May-2006)

Filesystemvolumename:

/1<==这个是文件系统的名称(Label)

Filesystemfeatures:

has_journalext_attrresize_inodedir_index

filetypeneeds_recoverysparse_superlarge_file

Defaultmountoptions:

user_xattracl<==默认挂载的参数

Filesystemstate:

clean<==这个文件系统是没问题的(clean)

Errorsbehavior:

Continue

FilesystemOStype:

Linux

Inodecount:

2560864<==inode的总数

Blockcount:

2560359<==block的总数

Freeblocks:

1524760<==还有多少个block可用

Freeinodes:

2411225<==还有多少个inode可用

Firstblock:

0

Blocksize:

4096<==每个block的大小啦!

Filesystemcreated:

FriSep501:

49:

202008

Lastmounttime:

MonSep2212:

09:

302008

Lastwritetime:

MonSep2212:

09:

302008

Lastchecked:

FriSep501:

49:

202008

Firstinode:

11

Inodesize:

128<==每个inode的大小

Journalinode:

8<==底下这三个与下一小节有关

Journalbackup:

inodeblocks

Journalsize:

128M

Group0:

(Blocks0-32767)<==第一个datagroup内容,包含block的启始/结束号码

Primarysuperblockat0,Groupdescriptorsat1-1<==超级区块在0号block

ReservedGDTblocksat2-626

Blockbitmapat627(+627),Inodebitmapat628(+628)

Inodetableat629-1641(+629)<==inodetable所在的block

0freeblocks,32405freeinodes,2directories<==所有block都用完了!

Freeblocks:

Freeinodes:

12-32416<==剩余未使用的inode号码

Group1:

(Blocks32768-65535)

....(底下省略)....

#前半部在显示supberblock的内容,包括标头名称(Label)以及inode/block的相关信息

#后面则是每个blockgroup的个别信息!

您可以看到各区段数据所在的号码!

#也就是说,基本上所有的数据都与block的号码有关。

三、目录树

1、目录

在Linux下的ext2文件系统创建一个目录时,ext2会分配一个inode与至少一块block给该目录。

其中,inode记录该目录的相关权限与属性,并可记录分配到的那块block号码;而block则是记录在这个目录下的文件名与该文件名占用的inode号码数据。

目录所占用的block内记录如下的信息:

图:

目录占用的block记录的数据示意图

练习:

观察root家目录内的文件所占用的inode号码

[root@www~]#ls-li

total92

654683-rw-------1rootroot1474Sep418:

27anaconda-ks.cfg

648322-rw-r--r--1rootroot42304Sep418:

26install.log

648323-rw-r--r--1rootroot5661Sep418:

25install.log.syslog

2、文件

当我们在Linux下的ext2创建一个一般文件时,ext2会分配一个inode与相对于该文件大小的block数量给该文件。

例如:

假设我的一个block为4Kbytes,而我要创建一个100KBytes的文件,那么linux将分配一个inode与25个block来储存该文件!

但同时请注意,由于inode仅有12个直接指向,因此还要多一个block来作为区块号码的记录。

3、目录树读取

文件的inode本身并不记录文件名,文件名的记录是在目录的block当中。

因此在文件与目录的权限中,我们才会提到『新增/删除/更名文件名与目录的w权限有关』!

那么因为文件名是记录在目录的block当中,因此当我们要读取某个文件时,就务必会经过目录的inode与block,然后才能够找到那个待读取文件的inode号码,最终才会读到正确的文件的block内的数据。

由于目录树是由根目录开始读起,因此系统通过挂载的信息可以找到挂载点的inode号码(通常一个filesystem的最顶层inode号码会由2号开始!

),此时就能够得到根目录的inode内容,并依据该inode读取根目录的block内的文件名数据,再一层一层的往下读到正确的文件名。

练习:

观察读取/etc/passwd这个文件的过程(假设身份为一般使用者):

[root@www~]#ll-di//etc/etc/passwd

2drwxr-xr-x23rootroot4096Sep2212:

09/

1912545drwxr-xr-x105rootroot12288Oct1404:

02/etc

1914888-rw-r--r--1rootroot1945Sep2902:

21/etc/passwd

流程:

/的inode:

透过挂载点的信息找到/dev/hdc2的inode号码为2的根目录inode,且inode规范的权限让我们可以读取该block的内容(有r与x);

⏹/的block:

经过上个步骤取得block的号码,并找到该内容有etc/目录的inode号码(1912545);

⏹etc/的inode:

读取1912545号inode得知vbird具有r与x的权限,因此可以读取etc/的block内容;

⏹etc/的block:

经过上个步骤取得block号码,并找到该内容有passwd文件的inode号码(1914888);

⏹passwd的inode:

读取1914888号inode得知vbird具有r的权限,因此可以读取passwd的block内容;

⏹passwd的block:

最后将该block内容的数据读出来。

4、EXT2/EXT3文件的存取与日志式文件系统的功能

新建一个文件或目录的流程:

⏹先确定用户对于欲新增文件的目录是否具有w与x的权限,若有的话才能新增;

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

⏹根据blockbitmap找到没有使用中的block号码,并将实际的数据写入block中,且升级inode的block指向数据;

⏹将刚刚写入的inode与block数据同步升级inodebitmap与blockbitmap,并升级superblock的内容。

5、数据的不一致(Inconsistent)状态

你的文件在写入文件系统时,因为不知名原因导致系统中断(例如突然的停电啊、系统核心发生错误啊~等等的事情发生时),所以写入的数据仅有inodetable及datablock而已,最后一个同步升级中介数据的步骤并没有做完,此时就会发生metadata的内容与实际数据存放区产生不一致(Inconsistent)的情况了。

日志式文件系统的兴起。

6、日志式文件系统(Journalingfilesystem)

为了避免上述提到的文件系统不一致的情况发生,因此提出一个新的方式,如果在filesystem当中规划出一个区块,该区块专门在记录写入或修订文件时的步骤,那不就可以简化一致性检查的步骤了?

也就是说:

1.预备:

当系统要写入一个文件时,会先在日志记录区块中纪录某个文件准备要写入的信息;

2.实际写入:

开始写入文件的权限与数据;开始升级metadata的数据;

3.结束:

完成数据与metadata的升级后,在日志记录区块当中完成该文件的纪录。

在这样的程序当中,万一数据的纪录过程当中发生了问题,那么我们的系统只要去检查日志记录区块,就可以知道哪个文件发生了问题,针对该问题来做一致性的检查即可,而不必针对整块filesystem去检查,这样就可以达到快速修复filesystem的能力!

这就是日志式文件最基础的功能。

ext3:

日志式文件系统,是ext2的升级版本,并且可向下兼容ext2版本。

7、挂载点(mountpoint):

每个filesystem都有独立的inode/block/superblock等信息,这个文件系统要能够链接到目录树才能被我们使用。

将文件系统与目录树结合的动作我们称为『挂载』。

 重点是:

挂载点一定是目录,该目录为进入该文件系统的入口。

 因此并不是你有任何文件系统都能使用,必须要『挂载』到目录树的某个目录后,才能够使用该文件系统的。

练习:

观察/,/boot,/home三个 目录,由于filesystem最顶层的目录之inode一般为2号,因此可以发现/,/boot,/home为三个不同的filesystem

[root@www~]#ls-lid//boot/home

2drwxr-xr-x23rootroot4096Sep2212:

09/

2drwxr-xr-x4rootroot1024Sep418:

06/boot

2drwxr-xr-x6rootroot4096Sep2902:

21/home

四、文件系统操作

1、查看磁盘与目录的容量

▪df

[root@www~]#df[-ahikHTm][目录或文件名]

选项与参数:

-a:

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

-k:

以KBytes的容量显示各文件系统;

-m:

以MBytes的容量显示各文件系统;

-h:

以人们较易阅读的GBytes,MBytes,KBytes等格式自行显示;

-H:

以M=1000K取代M=1024K的进位方式;

-T:

连同该partition的filesystem名称(例如ext3)也列出;

-i:

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

范例一:

将系统内所有的filesystem列出来!

[root@www~]#df

Filesystem1K-blocksUsedAvailableUse%Mountedon

/dev/hdc299206243823112558544441%/

/dev/hdc3495631614137645591084%/home

/dev/hdc1101086111268474112%/boot

tmpfs37133203713320%/dev/shm

#在Linux底下如果df没有加任何选项,那么默认会将系统内所有的

#(不含特殊内存内的文件系统与swap)都以1Kbytes的容量来列出来!

#至于那个/dev/shm是与内存有关的挂载!

范例二:

将容量结果以易读的容量格式显示出来

[root@www~]#df-h

FilesystemSizeUsedAvailUse%Mountedon

/dev/hdc29.5G3.7G5.4G41%/

/dev/hdc34.8G139M4.4G4%/home

/dev/hdc199M11M83M12%/boot

tmpfs363M0363M0%/dev/shm

#不同于范例一,这里会以G/M等容量格式显示出来,比较容易看!

范例三:

将系统内的所有特殊文件格式及名称都列出来

[root@www~]#df-aT

FilesystemType1K-blocksUsedAvailableUse%Mountedon

/dev/hdc2ext399206243823112558544441%/

procproc000-/proc

sysfssysfs000-/sys

devptsdevpts000-/dev/pts

/dev/hdc3ext3495631614137645591084%/home

/dev/hdc1ext3101086111268474112%/boot

tmpfstmpfs37133203713320%/dev/shm

nonebinfmt_misc000-/proc/sys/fs/binfmt_misc

sunrpcrpc_pipefs000-/var/lib/nfs/rpc_pipefs

#系统里面其实还有很多特殊的文件系统存在的。

那些比较特殊的文件系统几乎

#都是在内存当中,例如/proc这个挂载点。

因此,这些特殊的文件系统

#都不会占据硬盘空间!

范例四:

将/etc底下的可用的磁盘容量以易读的容量格式显示

[root@www~]#df-h/etc

FilesystemSizeUsedAvailUse%Mountedon

/dev/hdc29.5G3.7G5.4G41%/

#在df后面加上目录或者是文件时,df

#会自动的分析该目录或文件所在的partition,并将该partition的容量显示出来,

#所以,您就可以知道某个目录底下还有多少容量可以使用了!

范例五:

将目前各个partition当中可用的inode数量列出

[root@www~]#df-ih

FilesystemInodesIUsedIFreeIUse%Mountedon

/dev/hdc22.5M147K2.3M6%/

/dev/hdc31.3M461.3M1%/home

/dev/hdc126K3426K1%/boot

tmpfs91K191K1%/dev/shm

#这个范例则主要列出可用的inode剩余量与总容量。

分析一下与范例一的关系,

#你可以清楚的发现到,通常inode的数量剩余都比block还要多

▪du

[root@www~]#du[-ahskm]文件或目录名称

选项与参数:

-a:

列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。

-h:

以人们较易读的容量格式(G/M)显示;

-s:

列出总量而已,而不列出每个各别的目录占用容量;

-S:

不包括子目录下的总计,与-s有点差别。

-k:

以KBytes列出容量显示;

-m:

以MBytes列出容量显示;

范例一:

列出目前目录下的所有文件容量

[root@www~]#du

8./test4<==每个目录都会列出来

8./test2

....中间省略....

12./.gconfd<==包括隐藏文件的目录

220.<==这个目录(.)所占用的总量

#直接输入du没有加任何选项时,则du会分析『目前所在目录』

#的文件与目录所占用的硬盘空间。

但是,实际显示时,仅会显示目录容量(不含文件),

#因此.目录有很多文件没有被列出来,所以全部的目录相加不会等于.的容量喔!

#此外,输出的数值数据为1K大小的容量单位。

范例二:

同范例一,但是将文件的容量也列出来

[root@www~]#du-a

12./i

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 外语学习 > 英语学习

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2