LINUX课件filesystem.ppt

上传人:sh****n 文档编号:6375875 上传时间:2020-02-24 格式:PPT 页数:51 大小:914KB
返回 下载 相关 举报
LINUX课件filesystem.ppt_第1页
第1页 / 共51页
LINUX课件filesystem.ppt_第2页
第2页 / 共51页
LINUX课件filesystem.ppt_第3页
第3页 / 共51页
点击查看更多>>
资源描述
文件系统 DOS的文件系统 Unix的文件系统 Linux的文件系统 当你把新买的一个硬盘装到电脑上之后 你接下来要做的事情是什么 文件系统 分区和格式化 为什么一定要分区 分区的理由 首先 分区可以方便我们对磁盘的使用 不同的分区可以建立不同的文件系统 其次 分区有安全性上的优势 因为一个分区毁坏了 另一个分区仍然可以使用 再次 分区有可靠性上的优势 一个分区的故障不影响另一个分区的运行 这些都是好的理由 但都不是必须分区的理由 必须分区的理由 必须分区的理由是对磁盘空间的使用 因为计算机的内存字长是有限的 而磁盘地址需要存放在内存字里面 因此 操作系统能够访问的磁盘地址数量是一个有限数 例如 早期的内存字长度为16位 操作系统能够表示的磁盘地址数为216 也就是65536个磁盘地址 假设磁盘数据块 每个地址 的大小为512字节 则操作系统能够访问的最大磁盘空间为33554432 即32MB的空间 文件系统 常用的文件物理分配方式如下 连续区分配 优点 1 顺序访问容易 2 顺序访问速度快 文件访问的速度是几种存储空间分配方式中最高的一种 缺点 要求有连续的存储空间必须事先知道文件的长度不宜用来存放用户文件 数据库文件等经常被修改的文件 隐式链接在文件目录的每个目录项中 都必须含有指向链接文件第一个盘块和最后一个盘块的指针 顺序访问 随机访问低效 可靠性差为了提高检索速度和指针所占的存储空间 可将几个盘块组成一个簇 cluster 显式链接用于链接文件各物理块的指针 显式地存放在内存的一张链接表中 该表在整个磁盘仅一张 即FAT 文件分配表 FAT技术 Microsoft在其早期的操作系统中采用的是FAT FileAllocationTable 文件分配表 文件系统 早期MS DOS操作系统所使用的是FAT12文件系统 在每个分区中都配有两张文件分配表FAT1和FAT2 在FAT的每个表项中存放下一个盘块号 它实际上是用于盘块之间的链接的指针 通过它可以将一个文件的所有的盘块链接起来 而将文件的第一个盘块号放在自己的FCB FileControlBlock 文件控制块 即目录项 中 MS DOS的文件物理结构 对于1 2MB的软盘 每个盘块的大小为512B 在每个FAT中共含有2 4K个表项 由于每个FAT表项占12位 故FAT表占用3 6KB的存储空间 现在我们来计算以盘块为分配单位时 所允许的最大磁盘容量 由于每个FAT表项为12位 因此 在FAT表中最多允许有4096个表项 如果采用以盘块作为基本分配单位 每个盘块 也称扇区 的大小一般是512字节 那么 每个磁盘分区的容量为2MB 4096 512B 同时 一个物理磁盘支持4个逻辑磁盘分区 所以相应的磁盘最大容量仅为8MB 这对最早时期的硬盘还可应付 但很快磁盘的容量就超过了8MB FAT12是否还可继续用呢 回答虽是肯定的 但需要引入一个新的分配单位 簇 FAT技术 簇的概念为了适应磁盘容量不断增大的需要 在进行盘块分配时 不再以盘块而是以簇 cluster 为基本单位 簇是一组连续的扇区 在FAT中它是作为一个虚拟扇区 簇的大小一般是2n n为整数 个盘块 在MS DOS的实际运用中 簇的容量可以仅有一个扇区 512B 两个扇区 1KB 四个扇区 2KB 八个扇区 4KB 等 一个簇应包含扇区的数量与磁盘容量的大小直接有关 例如 当一个簇仅有一个扇区时 磁盘的最大容量为8MB 当一个簇包含两个扇区时 磁盘的最大容量可以达到16MB 当一个簇包含了八个扇区时 磁盘的最大容量便可达到64MB FAT技术 由上所述可以看出 以簇作为基本的分配单位所带来的最主要的好处是 能适应磁盘容量不断增大的情况 值得注意的是 使用簇作为基本的分配单位虽可减少FAT表中的项数 在相同的磁盘容量下 FAT表的项数是与簇的大小成反比的 这一方面会使FAT表占用更少的存储空间 并减少访问FAT表的存取开销 提高文件系统的效率 但这也会造成更大的簇内零头 它与存储器管理中的页内零头相似 FAT技术 FAT12存在的问题尽管FAT12曾是一个不错的文件系统 但毕竟已老化 已不能满足操作系统发展的需要 其表现出来的主要问题是 对所允许的磁盘容量存在着严重的限制 通常只能是数十兆字节 虽然可以用继续增加簇的大小来提高所允许的最大磁盘容量 但随着支持的硬盘容量的增加 相应的簇内碎片也将随之成倍地增加 此外 它只能支持8 3格式的文件名 FAT技术 FAT16对FAT12所存在的问题进行简单的分析即可看出 其根本原因在于 FAT12表最多只允许4096个表项 亦即最多只能将一个磁盘分区分为4096个簇 这样 随着磁盘容量的增加 必定会引起簇的大小和簇内碎片也随之增加 由此可以得出解决方法 那就是增加FAT表的表项数 亦即应增加FAT表的宽度 如果我们将FAT表的宽度增至16位 最大表项数将增至65536个 此时便能将一个磁盘分区分为65536 216 个簇 我们把具有16位表宽的FAT表称为FAT16 在FAT16的每个簇中可以有的盘块数为4 8 16 32直到64 由此得出FAT16可以管理的最大分区空间为216 64 512 2048MB FAT技术 由上述分析不难看出 FAT16对FAT12的局限性有所改善 但改善很有限 当磁盘容量迅速增加时 如果再继续使用FAT16 由此所形成的簇内碎片所造成的浪费也越大 例如 当要求磁盘分区的大小为8GB时 则每个簇的大小达到128KB 这意味着内部零头最大可达到128KB 一般而言 对于1 4GB的硬盘来说 大约会浪费10 20 的空间 为了解决这一问题 微软推出了FAT32 由于FAT12和FAT16都不支持长文件名 为了满足用户的需求 Windows95系统对FAT16进行了扩展 通过一个长文件名占用多个目录项的方法 使文件名的长度可以达到255个字符 这种扩展的FAT16也成为VFAT FAT技术 FAT32如同存储器管理中的分页管理 所选择的页面越大 可能造成的页内零头也会越大 为减少页内零头就应该选择适当大小的页面 在这里 为了减小磁盘的簇内零头 也就应当选择适当大小的簇 问题是FAT16表的长度只有65535项 随着磁盘容量的增加 簇的大小也必然会随之增加 为了减少簇内零头 也就应当增加FAT表的长度 为此 需要再增加FAT表的宽度 这样也就由FAT16演变为FAT32 当然 FAT32也有一些不足 微软后来专门为WindowsNT开发了一个全新的文件系统 NTFS NewTechnologyFileSystem FAT技术 FAT32是FAT系列文件系统的最后一个产品 每一簇在FAT表中的表项占据4字节 232 FAT表可以表示4294967296项 即FAT32允许管理比FAT16更多的簇 这样就允许在FAT32中采用较小的簇 FAT32的每个簇都固定为4KB 即每簇用8个盘块代替FAT16的64个盘块 每个盘块仍为512字节 FAT32分区格式可以管理的单个最大磁盘空间大到4KB 232 2TB 三种FAT类型的最大分区以及所对应的块的大小如图所示 FAT技术 簇的大小在一些磁盘管理工具如分区魔术师 PartitionMagic 中可以调整簇的大小 从节约磁盘空间的角度来说簇越小越好 但是从系统的存取速度上来看是越大越好 一定范围内 要是全是大文件的话用大簇比较好 比如可以专门用一个分区来存放电影 这个分区可以用大簇 否则就用默认就可以了 FAT技术 UNIX文件系统是UNIX成功的关键 其特点主要表现为以下几点 目录结构采用树形层次结构可安装拆卸的文件系统文件是无结构的字符流式文件把外部设备和文件目录作为文件处理 UNIX文件系统特点 UNIX文件系统特点 目录 directory 的实现目录的功能是实现文件名到文件地址的映射 目录中的一项称为目录项 dentry directoryentry 所以 文件名和地址这两项在目录中是必不可少的 而文件的其他属性是否放到目录中 不同的操作系统有不同的做法 下图是一个MS DOS的目录项 它总共32个字节 目录 属性 保留 时间 日期 第一块号 长度 目录的实现UNIX中采用的目录结构非常简单 如图 每个目录项占16个字节 其中只包含文件名及其索引节点号 有关文件类型 长度 时间 所有者和磁盘地址等信息都放到索引节点 inode indexnode 中 inode的引入为文件共享提供了便利 目录 索引节点号 索引节点 hello c的内容 目录项 磁盘驱动器 注意 目录也是一个文件 可以像普通文件一样通过less命令查看 链接的目的是为了文件共享 可以用链接命令ln Link 对一个已存在的文件再建立一个新的链接 而不复制文件的内容硬链接 hardlink 让一个文件对应一个或多个文件名 或者说把我们使用的文件名和文件系统使用的节点号链接起来 这些文件名可以在同一目录或不同目录软链接 也叫符号链接 symboliclink 是一种特殊的文件 这种文件包含了另一个文件的任意一个路径名 这个路径名指向位于任意一个文件系统的任意文件 甚至可以指向一个不存在的文件 软链接和硬链接 在Unix Linux系统中 每个文件有一个唯一的数字标示 称为索引节点号 用来唯一标示物理上的一个文件 硬链接lnsourcefilelinkfile对一个现存的文件a 执行lnab操作 即建立了一个硬链接b 其实质是a和b指向同一个物理文件 它们的索引节点号相同 也就是多个逻辑文件同时指向一个物理文件 删除任何一个逻辑文件 只是将索引节点中的文件链接数减一 直到减为零 才会删除物理文件 硬链接其实就是为物理文件增加一个逻辑文件名 硬链接的缺点 不能跨文件系统建立硬链接 不能对目录建立硬链接 当文件所有者把本地文件删除了 别人却还是可以通过另一个连接点访问到该文件 链接文件 软链接 又称符号链接 为了克服硬链接的上述缺点 产生了软链接 用法 ln ssourcefilelinkfile软链接相当于windows下的快捷方式 其只包含目标文件的路径 当目标文件被删除后 就不能通过软链接访问文件了 可以跨文件系统建立符号链接 也可以对目录创建符号链接 甚至可以对一个不存在的文件创建符号链接 链接文件 一行表示一个目录项 当一个进程执行以下代码 fd1 open etc passwd O RDONLY fd2 open local O RDONLY fd3 open etc passwd O WRONLY 文件的打开 磁盘驱动器 当第二个进程执行以下代码 fd1 open etc passwd O RDONLY fd2 open private O RDONLY 文件的打开 磁盘驱动器 目录 索引节点中的地址明细表采用混合索引式文件结构 Linux最初采用Minix的文件系统 其大小限于64MB 文件名长度也限于14个字节Linux经过一段时间的改进和发展 特别是吸取了Unix文件系统的经验 最后形成了现在的Ext3 ExtendedFileSystem 文件系统为了支持其他各种不同的文件系统 Linux提供了一种统一的框架 就是所谓的虚拟文件系统转换 VirtualFilesystemSwitch 简称虚拟文件系统 VFS Linux文件系统 虚拟文件系统的引入 超级块 superblock 对象 存放系统中已安装文件系统的有关信息索引节点 inode 对象 存放关于具体文件的一般信息目录项 dentry 对象 存放目录项与对应文件进行链接的信息文件 file 对象 存放打开文件与进程之间进行交互的有关信息 VFS中的数据结构 超级块用来描述整个文件系统的信息 每个具体的文件系统都有各自的超级块VFS超级块是各种具体文件系统在安装时建立的 并在卸载时被自动删除 其数据结构是super block所有超级块对象以双向环形链表的形式链接在一起与超级块关联的方法就是超级块操作表 这些操作是由数据结构super operations来描述 VFS超级块数据结构 structsuper block kdev ts dev 具体文件系统的块设备标识符 unsignedlongs blocksize 以字节为单位数据块的大小 unsignedchars blocksize bits 块大小的值占用的位数 structlist heads list 指向超级块链表的指针 structfile system type s type 指向文件系统的file system type数据结构的指针 structsuper operations s op 指向具体文件系统的用于超级块操作的函数集合 u 一个共用体 其成员是各种文件系统的fsname sb info数据结构 文件系统处理文件所需要的所有信息都放在称为索引节点的数据结构inode中 在同一个文件系统中 每个索引节点号都是唯一的inode中有两个设备号 i dev 常规文件的设备号 和i rdev 某一设备的设备号 VFS的索引节点 structinode structlist headi hash 指向哈希链表的指针 structlist headi list 指向索引节点链表的指针 structlist headi dentry 指向目录项链表的指针 unsignedlongi ino 索引节点号 kdev ti dev 设备标识号 umode ti mode 文件的类型与访问权限 kdev ti rdev 实际设备标识号 uid ti uid 文件拥有者标识号 gid ti gid 文件拥有者所在组的标识号 structinode operations i op 指向对该节点进行操作的一组函数 structsuper block i sb 指向该文件系统超级块的指针 atomic ti count 当前使用该节点的进程数 structfile operations i fop 指向文件操作的指针 structvm area struct i op 指向对文件进行映射所使用的虚存区指针 structpage i page 指向页结构的指针 unsignedlongi state 索引节点的状态标志 unsignedinti flags 文件系统的安装标志 union 联合体结构 其成员指向具体文件系统的inode结构 structminix inode infominix i structext2 inode infoext2 i 每个文件除了有一个索引节点inode数据结构外 还有一个目录项dentry数据结构 dentry结构代表的是逻辑意义上的文件 描述的是文件逻辑上的属性 目录项对象在磁盘上并没有对应的映像inode结构代表的是物理意义上的文件 记录的是物理上的属性 对于一个具体的文件系统 其inode结构在磁盘上就有对应的映像一个索引节点对象可能对应多个目录项对象 目录项对象 structdentry atomic td count 目录项引用计数器 unsignedintd flags 目录项标志 structinode d inode 与文件名关联的索引节点 structdentry d parent 父目录的目录项 structlist headd hash 目录项形成的哈希表 structlist headd lru 未使用的LRU链表 structlist headd child 父目录的子目录项所形成的链表 structlist headd subdirs 该目录项的子目录所形成的链表 structlist headd alias 索引节点别名的链表 intd mounted 目录项的安装点 structqstrd name 目录项名 可快速查找 structdentry operations d op 操作目录项的函数 structsuper block d sb 目录项树的根 即文件的超级块 unsignedlongd vfs flags void d fsdata 具体文件系统的数据 unsignedchard iname DNAME INLINE LEN 短文件名 进程是通过文件描述符来访问文件的Linux中专门用了一个file文件对象来保存打开文件的文件位置 这个对象称为打开的文件描述 openfiledescription file结构中主要保存了文件位置 此外 还把指向该文件索引节点的指针也放在其中 file结构形成一个双链表 称为系统打开文件表 与进程相关的文件结构 文件对象 文件描述符是用来描述打开的文件的 每个进程用一个files struct结构来记录文件描述符的使用情况 这个files struct结构称为用户打开文件表 它是进程的私有数据 与进程相关的文件结构 用户打开文件表 fs struct结构描述进程与文件系统的关系 与进程相关的文件结构 fs struct结构 structfs struct atomic tcount rwlock tlock intumask structdentry root pwd altroot structvfsmount rootmnt pwdmnt altrootmnt count域表示共享同一fs struct表的进程数目 umask域由umask 系统调用使用 用于为新创建的文件设置初始文件许可权 fs struct中的dentry结构是对一个目录项的描述 root pwd及altroot三个指针都指向这个结构 超级块是对一个文件系统的描述 索引节点是对一个文件物理属性的描述 而目录项是对一个文件逻辑属性的描述一个进程所处的位置是由fs struct来描述的 而一个进程 或用户 打开的文件是由files struct来描述的 而整个系统所打开的文件是由file结构来描述主要数据结构间关系的图示 主要数据结构间的关系 open 系统调用就是打开文件 它返回一个文件描述符 所谓打开文件实质上是在进程与文件之间建立起一种连接 而 文件描述符 唯一地标识着这样一个连接打开文件 还意味着将目标文件的索引节点从磁盘载入内存 并进行初始化 打开文件后 文件相关的 上下文 索引节点 目录对象等都已经生成 文件的打开 安装文件系统mount 将一个文件系统的顶层目录挂到另一个文件系统的子目录上 使它们成为一个整体 称为安装 mount 或挂载 把该子目录称为安装点 mountpoint 或挂载点 ext3是Linux的标准文件系统 系统把它的磁盘分区做为系统的根文件系统 ext3以外的文件系统则安装在根文件系统下的某个目录下 成为系统树型结构中的一个分枝 安装一个文件系统用mount命令 windows系统下的挂载点是什么 安装文件系统mount 在Linux下设备的命名 以IDE硬盘为例主板的主IDE接口Primarymaster设备文件名 hdaPrimarySlaver设备文件名 hdb从IDE接口Secondarymaster设备文件名 hdcSecondarySlaver设备文件名 hddsd为SCSI接口的硬盘 例如你看到的硬盘名称可能为sda 所有这些设备文件都在 dev目录下 安装文件系统mount 每个IDE硬盘又被分为多个逻辑盘 我们称为分区 Partition 每个分区以数字命名 依次命名为hda1 hda2 hda3 安装文件系统mount 分区表 PartitionTable 操作器1 fdisk命令 fdisk l 安装文件系统mount 分区表 PartitionTable 操作器2 cfdisk命令 cfdisk 安装文件系统mount 当在一块硬盘上安装windows和Linux双系统时 一块硬盘最多可以分成四个主分区 dos主分区 dos扩展分区 linux根分区和linux交换分区都属于主分区 4个主分区分别用数字表示 如果是第一块硬盘 就hda1 hda2 hda3和hda4 在扩展分区上还可以分逻辑分区 标号从5往后依次排列 在windows中c盘为dos主分区 是hda1 d盘一般是dos扩展分区上的第一个逻辑分区 是hda5 e为hda6 f为hda7等等 安装文件系统mount 例如在双系统下挂载D盘 以root mkdir mnt d 挂载点必须在 mnt下 mount dev hda5 mnt d接下来就可以通过访问 mnt d目录访问D盘 ls mnt d卸载文件系统umount umount mnt d
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!