ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:744.04KB ,
资源ID:17649514      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17649514.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(EXT2文件系统Word格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

EXT2文件系统Word格式.docx

1、_le32 s_free_inodes_count; / 未使用的inode的总数_le32 s_first_data_block; / 块ID,在小于1KB的文件系统中为0,大于1KB的文件系统中为1_le32 s_log_block_size; / 用以计算块的大小(1024算术左移该值即为块大小)_le32 s_log_frag_size; / 用以计算段大小(为正则1024算术左移该值,否则右移)_le32 s_blocks_per_group; / 每个块组中块的总数_le32 s_frags_per_group; / 每个块组中段的总数_le32 s_inodes_per_grou

2、p; / 每个块组中inode的总数_le32 s_mtime; / POSIX中定义的文件系统装载时间_le32 s_wtime; / POSIX中定义的文件系统最近被写入的时间_le16 s_mnt_count; / 最近一次完整校验后被装载的次数_le16 s_max_mnt_count; / 在进行完整校验前还能被装载的次数_le16 s_magic; / 文件系统标志,ext2中为0xEF53_le16 s_state; / 文件系统的状态_le16 s_errors; / 文件系统发生错误时驱动程序应该执行的操作_le16 s_minor_rev_level; / 局部修订级别_l

3、e32 s_lastcheck; / POSIX中定义的文件系统最近一次检查的时间_le32 s_checkinterval; / POSIX中定义的文件系统最近检查的最大时间间隔_le32 s_creator_os; / 生成该文件系统的操作系统_le32 s_rev_level; / 修订级别_le16 s_def_resuid; / 报留块的默认用户ID_le16 s_def_resgid; / 保留块的默认组ID/ 仅用于使用动态inode大小的修订版(EXT2_DYNAMIC_REV)_le32 s_first_ino; / 标准文件的第一个可用inode的索引(非动态为11)_le

4、16 s_inode_size; / inode结构的大小(非动态为128)_le16 s_block_group_nr; / 保存此超级块的块组号_le32 s_feature_compat; / 兼容特性掩码_le32 s_feature_incompat; / 不兼容特性掩码_le32 s_feature_ro_compat; / 只读特性掩码_u8 s_uuid16; / 卷ID,应尽可能使每个文件系统的格式唯一char s_volume_name16; / 卷名(只能为ISO-Latin-1字符集,以0结束)char s_last_mounted64; / 最近被安装的目录_le32

5、 s_algorithm_usage_bitmap; / 文件系统采用的压缩算法/ 仅在EXT2_COMPAT_PREALLOC标志被设置时有效_u8 s_prealloc_blocks; / 预分配的块数_u8 s_prealloc_dir_blocks; / 给目录预分配的块数_u16 s_padding1;/ 仅在EXT3_FEATURE_COMPAT_HAS_JOURNAL标志被设置时有效,用以支持日志_u8 s_journal_uuid16; / 日志超级块的卷ID_u32 s_journal_inum; / 日志文件的inode数目_u32 s_journal_dev; / 日志文

6、件的设备数_u32 s_last_orphan; / 要删除的inode列表的起始位置_u32 s_hash_seed4; / HTREE散列种子_u8 s_def_hash_version; / 默认使用的散列函数_u8 s_reserved_char_pad;_u16 s_reserved_word_pad;_le32 s_default_mount_opts;_le32 s_first_meta_bg; / 块组的第一个元块_u32 s_reserved190;块组描述符表(GDT,Group Descriptor Table)由很多块组描述符组成,整个分区分成多少个块组就对应有多少个块

7、组描述符。每个块组描述符(Group Descriptor)存储一个块组的描述信息,例如在这个块组中从哪里开始是inode表,从哪里开始是数据块,空闲的inode和数据块还有多少个等等。和超级块类似,块组描述符表在每个块组的开头也都有一份拷贝,这些信息是非常重要的,一旦超级块意外损坏就会丢失整个分区的数据,一旦块组描述符意外损坏就会丢失整个块组的数据,因此它们都有多份拷贝。通常内核只用到第0个块组中的拷贝,当执行e2fsck检查文件系统一致性时,第0个块组中的超级块和块组描述符表就会拷贝到其它块组,这样当第0个块组的开头意外损坏时就可以用其它拷贝来恢复,从而减少损失。存放于超级块所在块的下一个

8、块中。一个块组描述符的结构如下:struct ext2_group_desc_le32 bg_block_bitmap; / 块位图所在的第一个块的块ID_le32 bg_inode_bitmap; / inode位图所在的第一个块的块ID_le32 bg_inode_table; / inode表所在的第一个块的块ID_le16 bg_free_blocks_count; / 块组中未使用的块数_le16 bg_free_inodes_count; / 块组中未使用的inode数_le16 bg_used_dirs_count; / 块组分配的目录的inode数_le16 bg_pad;_l

9、e32 bg_reserved3;块位图(Block Bitmap)一个块组中的块是这样利用的:数据块存储所有文件的数据,比如某个分区的块大小是1024字节,某个文件是2049字节,那么就需要三个数据块来存,即使第三个块只存了一个字节也需要占用一个整块;超级块、块组描述符表、块位图、inode位图、inode表这几部分存储该块组的描述信息。那么如何知道哪些块已经用来存储文件数据或其它描述信息,哪些块仍然空闲可用呢?块位图就是用来描述整个块组中哪些块已用哪些块空闲的,它本身占一个块,其中的每个bit代表本块组中的一个块,这个bit为1表示该块已用,这个bit为0表示该块空闲可用。为什么用df命令

10、统计整个磁盘的已用空间非常快呢?因为只需要查看每个块组的块位图即可,而不需要搜遍整个分区。相反,用du命令查看一个较大目录的已用空间就非常慢,因为不可避免地要搜遍整个目录的所有文件。与此相联系的另一个问题是:在格式化一个分区时究竟会划出多少个块组呢?主要的限制在于块位图本身必须只占一个块。用mke2fs格式化时默认块大小是1024字节,可以用-b参数指定块大小,现在设块大小指定为b字节,那么一个块可以有8b个bit,这样大小的一个块位图就可以表示8b个块的占用情况,因此一个块组最多可以有8b个块,如果整个分区有s个块,那么就可以有s/(8b)个块组。格式化时可以用-g参数指定一个块组有多少个块

11、,但是通常不需要手动指定,mke2fs工具会计算出最优的数值。inode位图(inode Bitmap)和块位图类似,本身占一个块,其中每个bit表示一个inode是否空闲可用。inode表(inode Table)我们知道,一个文件除了数据需要存储之外,一些描述信息也需要存储,例如文件类型(常规、目录、符号链接等),权限,文件大小,创建/修改/访问时间等,也就是ls -l命令看到的那些信息,这些信息存在inode中而不是数据块中。每个文件都有一个inode,一个块组中的所有inode组成了inode表。inode表占多少个块在格式化时就要决定并写入块组描述符中,mke2fs格式化工具的默认策

12、略是一个块组有多少个8KB就分配多少个inode(每个inode占用多少字节?128字节)。由于数据块占了整个块组的绝大部分,也可以近似认为数据块有多少个8KB就分配多少个inode,换句话说,如果平均每个文件的大小是8KB,当分区存满的时候inode表会得到比较充分的利用,数据块也不浪费。如果这个分区存的都是很大的文件(比如电影),则数据块用完的时候inode会有一些浪费,如果这个分区存的都是很小的文件(比如源代码),则有可能数据块还没用完inode就已经用完了,数据块可能有很大的浪费。如果用户在格式化时能够对这个分区以后要存储的文件大小做一个预测,也可以用mke2fs的-i参数手动指定每多

13、少个字节分配一个inode。inode表用于跟踪定位每个文件,包括位置、大小等(但不包括文件名,文件名包含于dentry结构中),一个块组只有一个inode表。一个inode的结构如下:struct ext2_inode _le16 i_mode; / 文件格式和访问权限_le16 i_uid; / 文件所有者ID的低16位_le32 i_size; / 文件字节数_le32 i_atime; / 文件上次被访问的时间_le32 i_ctime; / 文件创建时间_le32 i_mtime; / 文件被修改的时间_le32 i_dtime; / 文件被删除的时间(如果存在则为0)_le16 i

14、_gid; / 文件所有组ID的低16位_le16 i_links_count; / 此inode被连接的次数_le32 i_blocks; / 文件已使用和保留的总块数(以512B为单位)_le32 i_flags; / 此inode访问数据时ext2的实现方式union struct _le32 l_i_reserved1; / 保留 linux1;_le32 h_i_translator; / “翻译者”标签 hurd1;_le32 m_i_reserved1; masix1; osd1; / 操作系统相关数据_le32 i_blockEXT2_N_BLOCKS; / 定位存储文件的块的

15、数组,前12个为块号,第13个为一级间接块号,第14个为二级间接块号,第15个为三级间接块号_le32 i_generation; / 用于NFS的文件版本_le32 i_file_acl; / 包含扩展属性的块号,老版本中为0_le32 i_dir_acl; / 表示文件的“High Size”,老版本中为0_le32 i_faddr; / 文件最后一个段的地址_u8 l_i_frag; / 段号_u8 l_i_fsize; / 段大小_u16 i_pad1;_le16 l_i_uid_high; / 文件所有者ID的高16位_le16 l_i_gid_high; / 文件所有组ID的高16

16、位_u32 l_i_reserved2; linux2;_u8 h_i_frag;_u8 h_i_fsize;_le16 h_i_mode_high;_le16 h_i_uid_high;_le16 h_i_gid_high;_le32 h_i_author; hurd2;_u8 m_i_frag;_u8 m_i_fsize;_u16 m_pad1;_u32 m_i_reserved22; masix2; osd2;inode结构: inode是EXT2基本构件,表示文件系统树型结构的节点。 EXT2文件系统中的每个文件由一个inode描述,且只能由一个inode描述。 inode与文件一起存

17、放在外存,系统运行时,把inode写入内存建立映像,加快文件系统速度。数据块(Data Block)根据不同的文件类型有以下几种情况 对于常规文件,文件的数据存储在数据块中。 对于目录,该目录下的所有文件名和目录名存储在数据块中,注意文件名保存在它所在目录的数据块中,除文件名之外,ls -l命令看到的其它信息都保存在该文件的inode中。注意这个概念:目录也是一种文件,是一种特殊类型的文件。 对于符号链接,如果目标路径名较短则直接保存在inode中以便更快地查找,如果目标路径名较长则分配一个数据块来保存。 设备文件、FIFO和socket等特殊文件没有数据块,设备文件的主设备号和次设备号保存在

18、inode中。现在做几个小实验来理解这些概念。例如在home目录下ls -l:$ ls -ltotal 32drwxr-xr-x 114 akaedu akaedu 12288 2008-10-25 11:33 akaedudrwxr-xr-x 114 ftp ftp 4096 2008-10-25 10:30 ftpdrwx- 2 root root 16384 2008-07-04 05:58 lost+found为什么各目录的大小都是4096的整数倍?因为这个分区的块大小是4096,目录的大小总是数据块的整数倍。为什么有的目录大有的目录小?因为目录的数据块保存着它下边所有文件和目录的名字

19、,如果一个目录中的文件很多,一个块装不下这么多文件名,就可能分配更多的数据块给这个目录。再比如:$ ls -l /dev.prw-r- 1 syslog adm 0 2008-10-25 11:39 xconsolecrw-rw-rw- 1 root root 1, 5 2008-10-24 16:44 zeroxconsole文件的类型是p(表示pipe),是一个FIFO文件,后面会讲到它其实是一块内核缓冲区的标识,不在磁盘上保存数据,因此没有数据块,文件大小是0。zero文件的类型是c,表示字符设备文件,它代表内核中的一个设备驱动程序,也没有数据块,原本应该写文件大小的地方写了1, 5这两

20、个数字,表示主设备号和次设备号,访问该文件时,内核根据设备号找到相应的驱动程序。$ touch hello$ ln -s ./hello halototal 0lrwxrwxrwx 1 akaedu akaedu 7 2008-10-25 15:04 halo - ./hello-rw-r-r- 1 akaedu akaedu 0 2008-10-25 15:04 hello文件hello是刚创建的,字节数为0,符号链接文件halo指向hello,字节数却是7,为什么呢?其实7就是“./hello”这7个字符,符号链接文件就保存着这样一个路径名。再试试硬链接:$ ln ./hello hell

21、o2-rw-r-r- 2 akaedu akaedu 0 2008-10-25 15:04 hello2hello2和hello除了文件名不一样之外,别的属性都一模一样,并且hello的属性发生了变化,第二栏的数字原本是1,现在变成2了。从根本上说,hello和hello2是同一个文件在文件系统中的两个名字,ls -l第二栏的数字是硬链接数,表示一个文件在文件系统中有几个名字(这些名字可以保存在不同目录的数据块中,或者说可以位于不同的路径下),硬链接数也保存在inode中。既然是同一个文件,inode当然只有一个,所以用ls -l看它们的属性是一模一样的,因为都是从这个inode里读出来的。再

22、研究一下目录的硬链接数:$ mkdir a$ mkdir a/b$ ls -ld adrwxr-xr-x 3 akaedu akaedu 4096 2008-10-25 16:15 a$ ls -la atotal 2015 .drwxr-xr-x 115 akaedu akaedu 12288 2008-10-25 16:14 .drwxr-xr-x 2 akaedu akaedu 4096 2008-10-25 16:15 b$ ls -la a/btotal 815 .首先创建目录a,然后在它下面创建子目录a/b。目录a的硬链接数是3,这3个名字分别是当前目录下的a,a目录下的.和b目录

23、下的.。目录b的硬链接数是2,这两个名字分别是a目录下的b和b目录下的.。注意,目录的硬链接只能这种方式创建,用ln命令可以创建目录的符号链接,但不能创建目录的硬链接。2.2.实例剖析 请点评如果要格式化一个分区来研究文件系统格式则必须有一个空闲的磁盘分区,为了方便实验,我们把一个文件当作分区来格式化,然后分析这个文件中的数据来印证上面所讲的要点。首先创建一个1MB的文件并清零:$ dd if=/dev/zero of=fs count=256 bs=4K我们知道cp命令可以把一个文件拷贝成另一个文件,而dd命令可以把一个文件的一部分拷贝成另一个文件。这个命令的作用是把/dev/zero文件开

24、头的1M(2564K)字节拷贝成文件名为fs的文件。刚才我们看到/dev/zero是一个特殊的设备文件,它没有磁盘数据块,对它进行读操作传给设备号为1, 5的驱动程序。/dev/zero这个文件可以看作是无穷大的,不管从哪里开始读,读出来的都是字节0x00。因此这个命令拷贝了1M个0x00到fs文件。if和of参数表示输入文件和输出文件,count和bs参数表示拷贝多少次,每次拷多少字节。做好之后对文件fs进行格式化,也就是把这个文件的数据块合起来看成一个1MB的磁盘分区,在这个分区上再划分出块组。$ mke2fs fsmke2fs 1.40.2 (12-Jul-2007)fs is not

25、a block special device.Proceed anyway? (y,n) (输入y回车)Filesystem label=OS type: LinuxBlock size=1024 (log=0)Fragment size=1024 (log=0)128 inodes, 1024 blocks51 blocks (4.98%) reserved for the super userFirst data block=1Maximum filesystem blocks=10485761 block group8192 blocks per group, 8192 fragments per group128 inodes per groupWriting inode tables: done Writing superblocks and filesystem accounting information: doneThis filesystem will be automatically checked every 27 mounts or180 days, whichever comes first. Use tune2fs -c or -i

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1