第三十一讲——管理磁盘分区 本文共有4799个字,关键词: 管理磁盘分区的命令:fdisk fdisk /dev/sda(必须指向一个设备,不能指向一个分区)在sda上创建、删除分区。 执行命令后会进入一个交互式界面 p: 显示当前硬盘上的分区,包括没有保存的修改。 fdisk创建、删除分区时并不是立即保存生效的,只有退出这个命令的时候修改才会生效,如果创建错了、删除错了不保存直接退出即可。 n:创建新分区(新硬盘会有编号的选择,e扩展分区,p主分区) d:删除一个分区 w:保存并退出 q:不保存退出 t: 修改分区类型(文件系统类型)使用L可以查看所有支持的文件类型种类 l:显示所有支持的类型 创建一个新分区时,硬盘会询问使用的分区号(1/2/3/4),然后会默认一个起始柱面,这个默认就好,接下来就是指定结束柱面,可以按照空间大小指定:+1G(M/K) 扩展分区不能直接使用,它只是一个指针,指向MBR之外的一个分区表,扩展分区下创建的分区叫逻辑分区,逻辑分区是自动编号的。 当我们新建分区后内核不会立即识别,我们可以通过cat /proc/partitions查看当前内核是被了哪些分区。 创建完分区后我们需要通知内核重读分区表 partx /dev/sda (partprobe /dev/sda)重读分区表 当分区表重读后,接下来就是格式化并挂载分区。 操作系统的执行过程分为两段(两种模式) 一般来说,用户是没有特权取操作硬件的,所以这些进程所运行的模式我们称为用户模式,运行的空间我们称为用户空间。 所有的进程一般来说都运行在用户空间,指的是它们没有特权 我们常见的CUP(inter和AMD),将CPU划分为四个环状(同心圆)运行级别,最内层为ring0,外层为ring3,内核是跑在ring0上的,用户进程跑在ring3上,1和2由于历史原因没有使用,三级别下是没有特权的。 我们说过,任何程序在编程的时候,利用的是硬件芯片的功能,一些I/O操作(和硬件打交道的指令)都只能运行在零级别上。 所以要想和硬件打交道,必须要转入内核才有权限。(内核空间/内核模式)零级别。 文件系统对任何文件的操作都是通过文件系统调用接口来实现,一个内核所提供的功能都是通过系统调用向外提供的。因此,管理文件的功能也是通过系统调用来完成(和文件操作相关)。 我们要知道,打开一个文件可读取一个文件是两码事。 我们格式化分区之后会发现少了不少的空间,这些少去的空间用于存放元数据。 块大小(block size):对文件系统来讲,块大小是不确定的,它只能是2^n字节,一般为1024/2048/4096byte,三种情况(linux上)。 block size 决定了怎么装在磁盘块到内存中去,我们知道,磁盘中的数据不能直接被CPU访问,CPU要访问一个数据时,得先将数据装载进入内存。 内存中的空间一般是分成页面(页框)的,一般来讲,一个页框只能存放一个磁盘块或者两个磁盘块或者四个磁盘块,页框的大小通常为4k. 页框的大小对于不同的CPU是不一样的。 占据磁盘块的文件通常只有两类主流文件: 一是普通文件,二是目录文件 块组:块组属于逻辑概念,块组对用户是不可见的,块组是为了方便文件管理,块组的大小取决于块的大小,如果块大小为1K,那么一个块组中可以有1024*8bit个块(一个块位图中可标识的块的数目)。 在创建文件系统的时候,在元数据区有一个超级块(super block),用于保存创建了多少个块组。 super block坏了,基本上分区也就挂了,所以super block可以有多个备份 super block中保存了整个分区的全局信息。 有多少块组 每个块组中有多少个快 块大小 空闲磁盘块,已使用磁盘块 已用inode,未使用inode 块组描述符表(也拥有备份): 当前系统有多少块组,每一个块组从第几个开始,到第几个结束。 每一个块组都有一个inode表,每一个块组中有inode位图,块位图。 任何一个分区的第一个(第零个)块是不能被使用的,预留出来为boot block 引导块 如果在分区上安装操作系统,其BootLoader应当装在boot block中(多操作系统)。 boot block是被MBR调用的 除了第一个块,其他的块直接被划分为块组 boot block block group0 block group1 n…… 每一块组可划分为: super block GDT block bitmap inode bitmap inode table date blocks(数据块) mode权限 owner属主属组 size 大小 timestamps时间戳 direct blocks直接磁盘块指针 indirect blocks间接磁盘块指针 double indirect二级间接磁盘块指针 triple indirect三级间接磁盘块指针 super block超级块一般有3-4个备份 GDT:块组描述符表,group description table 存放每一个块组的起始块编号,结束块编号(块组边界信息),根据块个数不同,占据的空间也是不一样的,未必是一个磁盘块。 所以我们说一个磁盘分区内部又被分成了多个逻辑区域,彼此之间分隔开来管理。 inode:index node inode中存放inode号,属主属组,权限,时间戳,文件大小,直接磁盘块指针,间接磁盘块指针,二级间接磁盘块指针,三级间接磁盘块指针。 ext2 inode ext3于ext2最大的不同就是ext3被称为日志文件系统(journal file system) 日志文件系统将磁盘分为三个区,元数据区、数据区、日志区。 日志文件系统在运行的时候,先将inode的放入日志区,如果数据存储一般掉电了,重启时只需将日志中的inode删除即可,在ext2中需要遍历整个磁盘来寻找损坏的文件,效率非常低下。 日志文件系统提升了文件系统的检查速度,但是意为着多了一次I/O操作,写入操作比ext2慢一些。 非日志文件系统在linux上只有ext2一个,对于一些数据完整性、安全性要求不高,特别是需要大量写入小文件时,ext2的优势就比较明显(比如临时文件等情况),对性能要求比较高的场景下。 一级磁盘块,最多来讲只指向十来个磁盘块,不管指针有多少个级,这些指针加起来所能引用的块的个数是有限的,这个限制就是单个文件最大的文件大小限度。 对于一个系统工程师来讲,更多的管理操作如下: 对普通用户看不见的,不需要看的,我们要看 文件系统有多大,超级块在上面位置,超级块的备份个数够不够,GDT在什么位置,备份数够不够,里面存放了哪些信息,分了多少个磁盘块,有没有产生磁盘碎片,需不需要修复,一共有多少个块组,哪一个块组中有碎片等等,更多的是新加入的磁盘需要分区,格式化,挂载,以及文件系统损坏需要修复。 「一键投喂 软糖/蛋糕/布丁/牛奶/冰阔乐!」 赞赏 × 几人行 (๑>ڡ<)☆谢谢老板~ 2元 5元 10元 50元 100元 任意金额 2元 使用微信扫描二维码完成支付 版权声明:本文为作者原创,如需转载须联系作者本人同意,未经作者本人同意不得擅自转载。 给自己讲linux 2016-12-31 评论 1625 次浏览