《Linux系统管理1--linux复习笔记(16页).doc》由会员分享,可在线阅读,更多相关《Linux系统管理1--linux复习笔记(16页).doc(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-EXT3文件系统文件系统磁盘结构组描述符的作用在超级块之后,是由多个块组成的组描述符表。分区中有多少个块组,就有多少个组描述符表。每一个组描述符表都会给出这个块组中的一些简要信息。例如在这个块组中从哪里开始是inode表,从哪里开始是数据块,空闲的inode和数据块还有多少个等等特殊的inode编号Inode为2是分区的根目录文件的inodeInode为7是预留块,当扩大文件系统(分区)时(先采用lvm或者类似的工具扩大分区或者卷的大小,然后再采用ext2resize或者类似工具来完成ext3或者ext4文件系统的在线增长),这些预留块用于存放组描述符。Inode为8是日志可正常使用的第一个
2、inode编号为11目录文件的结构定义和作用:用于存储文件名和inode的对应关系一个目录文件的大小为文件系统块大小的整数倍rec_len:目录项的长度,必须是4的倍数,字节为单位name_len:文件名的长度,字节为单位inode、rec_len、name_len、file_type四项的长度是固定的8字节,但name的长度并不是rec_len的值减去8,而是和name_len的值相符。既在name值的后面,有时仍有一些字符不属于文件名,但长度记在rec_len中。这是因为删除文件时,并不删除该条目录项,而只是简单的修改前一条目录项的rec_len。比如一个目录中有两个文件file1和fil
3、e2,目录文件中有4个目录项,.、.、file1、file2。目录项“.”的rec_len为12,但name的值是“.”,即只有1个字节;目录项“.”的rec_len的值为140;file1的rec_len的值为28,file2的rec_len的值为3916。总大小是4096。计算题块组大小计算:一个块组有多少个块取决于块大小(也可以在创建文件系统时用“-g”参数指定,不过它只用于开发者测试用,对用户无意义)。块组内数据块的使用情况在块位图中表示,块位图占用一个块。如果块大小为4096字节,则每个数据块有40968=32K个二进制位,因此一个块组中就可容纳32K个数据块;一个块组占据的磁盘空间
4、为32K4K=128M。单个文件的最大尺寸:一个指向一个数据块的指针为32bits,即4Bytes,若一个磁盘块为1K,则一个磁盘块可容纳256(28)个指针,可指向256(28)个数据块,即一个一级间接索引可以确定281K=256K大小的文件;一个二级间接索引可以确定28281K=64M大小的文件;一个三级间接索引可以确定2828281K=16G大小的文件。若数据块大小为2K,则一个磁盘块可容纳512(29)个指针,则一个三级间接索引可以确定2929292K=256G大小的文件;若数据块大小为4K,则一个磁盘块可容纳1024(210)个指针,则一个三级间接索引可以确定2102102104K=
5、4T大小的文件,此值是理论值,由于标准库使用32位宽的long类型变量(有符号)表示文件内的位置,这将文件大小限制在231字节,因此实际限制在2T。Ext3文件系统的日志三种日志模式的操做过程及其性能差异在Ext3文件系统中,日志由三种模式:完全、顺序(预定)、写回。完全:将元数据和数据先写进日志,然后在写进相应的磁盘位置。既这种模式需要把数据写进磁盘两次。顺序(预定):先将数据写进磁盘,在把元数据写进日志、再把元数据写进磁盘。写回:元数据先写进日志,再写进磁盘,数据写进磁盘、但数据和元数据的写入没有固定的先后顺序。这种形式可以保证元数据的一致性,但不能保证数据的一致性。一般情况下,性能最好的
6、是写回,最差的是完全。但在异步随机写时,完全日志的性能会最好。因为写进日志时不需要随机写,而从日志写进文件时,随机写已经被调整成顺序写。写回的性能比顺序稍好一点点。日志事物包含的各个块及其作用日志文件的第一个数据块是日志超级块,后面的块按事务分成组,一个事务包含一组块。一个事务包含以下块:描述块、元数据块、提交块、撤消块。其中,若是FULL DATA日志模式,则元数据块包含元数据块和数据块。日志超级块中包含了日志文件块大小、日志文件包含的总块数、第一个事务的序列号等信息 描述块包含一个描述项列表,每一项都包含文件系统的块号,这个块号与日志的元数据块依次对应 提交块只有12字节的标准头,它表示本
7、事务结束。 撤消块在12字节标准头之后,是一个已取消修改的块列表,撤消块应用在序列号等于或小于撤消块的序列号的所有事务中。表示本事务撤销文件系统的缓存缓存的种类dentry缓存和inode缓存(inode),Page缓存和Buffer缓存(元数据和数据)。Buffers存储的是文件的元数据块Cached存储的是文件的实际数据pdflush运行机制数据回写:周期性的和强制性的pdflush线程隔一段时间启动一次,默认是5秒只写回变脏超过一段时间的页,默认是30秒每次写回的总页数不超过1024默认情况下,并发的pdflush线程是2,最大是8.当系统中超过1秒钟没有空闲的pdflush线程,则启动
8、一个新的pdflush。若某个线程的空闲时间超过1秒,则销毁它 若一次写回的时间超过一个周期,则推迟1秒再启动下一次pdflush线程若某个页被锁而不能写回,可跳过或等待写回分同步和异步两种必须写回设备的情况属于同步写回,称作数据完整性回写各项调优参数的含义dirty_background_bytes:缓存中的脏数据达到设定值时,启动pdflush开始强制写回。dirty_background_ratio:缓存中的脏数据达到设定的比例时,启动pdflush开始强制写回。dirty_ratio:某个进程产生的脏页到达此比例时(默认为20%,但不能小于5%),开始强制写回。dirty_bytes:
9、某个进程产生的脏页到达此字节数,开始强制写回。dirty_expire_centisecs:时间值,当页变脏时间超过此值时,pdflush将其写回。dirty_writeback_centisecs:时间值,为pdflush的调用周期drop_caches:用于释放页缓存、dentry缓存和inode缓存。vfs_cache_pressure:用于确定回收dentry缓存和inode缓存的策略,默认值是100。小于100表示倾向于保留dentry缓存和inode缓存。nr_pdflush_threads:当前并发的pdflush线程数,该参数只读不可改。IO调度以BIO结构为基本的读写单位。
10、前置合并(front merge)和后置合并(back merge) deadline调度器下,一共有5个队列,一个是块设备的请求队列,调度器的任务是从其它四个队列中挑出一个请求放进块设备的请求队列。 fifo队列:等到排序队列各种调度器的适用范围Noop调度器:适用环境:嵌入式系统、拥有智能raid控制器或固态磁盘的计算机。(简单,减少CPU)Deadline调度器适用环境:数据库服务器。目标:任何请求都会在一定时间内得到服务CFQ调度器适用于通用服务器、多媒体应用(video,audio)和桌面系统。将I/O带宽均匀分配给各个进程,但同时考虑了优先级、deadline和anticipato
11、ry。deadline各项调优参数的含义fifo_batch:一批请求的最大数目,默认是16front_merges:是否执行扇区前置合并,默认为1,即执行read_expire:读请求的超时时间,默认为500mswrite_expire:写请求的超时时间,默认为5swrites_starved:写请求队列的调度频率,默认是2。即发送两批读请求之后,发送1批写请求。CFQ调度器的优先级优先级分为3类:RT(real-time)、BE(best-effort)、Idle。RT和BE各有8个等级,0的优先级最高、7的优先级最低。具有RT优先级的请求优先被执行,没有RT之后才执行BE,没有BE之后才
12、执行Idle。同一优先级类的进程通过时间片长短来体现优先级的高低。CFQ各项调优参数的含义back_seek_penalty:反向寻道的代价。即相对于正向寻道,反向寻道相同数目的扇区所需要花费的时间,是正向寻道所需时间的倍数。此参数用于队列的扇区排序。默认是2back_seek_max:反向寻道最大数值,默认是16M。超过此值,则遵循电梯原则fifo_expire_sync(同步):同deadline调度,fifo队列头的请求超时时间。默认为125msfifo_expire_async(异步):同上。默认为250mslow_latency:桌面模式,当打开时,会加速写操作的交互时间。默认开启。
13、在服务器上可关闭它。quantum:一次从队列中发给驱动的请求数,默认为4slice_sync:同步请求队列优先级的基准时间片,即BE类优先级为4的队列的时间片,默认为100ms,每一级相差20msslice_async:默认是40ms,每一级相差20msslice_idle:队列已空,但时间片未用尽,等待下一个请求到达的时间。默认为8ms。此等待时间对于寻道时间长的块设备很有用,但对于raid来说,寻道时间并不重要,因此将此值设为0更有效率。slice_async_rq:基础值,用于确定一个发送给驱动的最大异步请求数目,当超过此数值,即使未用尽时间片,也认为它超时,开始调度下一个队列。IO编
14、程模型四种编程模型的含义同步阻塞:发出I/O读写请求,并等待结果。内核阻塞该进程,做上下文切换,调度其它进程来执行。 它一次只能处理一个I/O,当遇到多个I/O时,只能通过多线程或多进程的方法。同步非阻塞:发出I/O请求,并要求立刻返回结果,如果结果没有返回(返回EAGAIN错误),则继续发请求,直至返回结果。它可以处理多个I/O,但它并不知道哪个I/O已经准备好,花费了大量的CPU时间来不停的发起I/O。异步阻塞:异步阻塞I/O是对通知事件进行阻塞,而不是对 I/O 调用进行阻塞。即当有通知到达时,一定有某个I/O是已经ready的。若是单个I/O,则这种方式无意义,但当有多个I/O时,进程不会因为某一个I/O被阻塞而影响其它已经ready的I/O。优点在于采用消息通知机制,可以发出成千上万的I/O请求,因此性能较好。缺点在于它是单进程机制,若某一I/O处理过程中出现问题而挂起,会导致进程挂起,其它I/O处理也无法进行了。异步非阻塞:采用多线程或多线程方式实现。当发出I/O请求后,进程转而处理其它事情,等I/O返回后,再去处理它。使用多进程或多线程机制,优点在于一个I/O操作出现问题不会影响其它。缺点在于创建新的进程或线程会增加CPU和内存开销,大量的I/O会导致性能下降,内存消耗严重。编译内核各种查找驱动方法的过程第 16 页-