您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
马哥linux运维学习笔记-磁盘及文件系统管理详解之一
发布时间:2018-07-08 19:32:32编辑:雪饮阅读()
结构:
磁盘->磁道->扇区
不同盘面相同磁道形成柱面
不同分区相当于把一个大的文件系统分隔成为一个个逻辑边界进行隔离的小文件系统
低级格式化:
划分磁道、扇区等,并没有分区,在厂商手中完成
mbr:
主引导记录(512byte)
是master boot record或main boot record的缩写
位于磁盘0盘面0磁道0扇区
mbr包含446byte的bootloader程序,该程序用于引导某分区上操作系统进行启动
mbr包含一个64bytes的分区集合,该集合最大允许4个主分区,每个主分区16bytes
我们常见的有很多都是分区大于4个的,这种是通过其中一个主分区扩展的,也就是说将该主分区仅仅作为指针指向另外一个更大的空间,该空间中再做分区增加即可。
mbr包含2bytes的magic number,是为了标记mbr是否有效的
开机流程:
bios根据启动顺序,挨个找每个启动设备的mbr ,当mbr没有问题后,将mbr中的bootloader加载到计算机内存中, bios退出计算机接下来就跑bootloader程序 .
bootloader运行后根据我们所选择的操作系统找到其分区和操作系统内核,然后将操作系统内核读入到计算机内存中 。
然后bootloader工作完成,接下来内核启动自身,完成操作系统的其他各项事情 。
分区:
分区按柱面划分,按磁道作为标识,有0柱面1柱面。。。。
当读取其它柱面信息时候
磁头旋转后有可能数据已经旋转过了,所以要等待数据下一轮旋转回来才能取得
这就是磁盘的读写延迟
一般来说磁盘转速越快越好,但是越快虽然减少了寻道时间,而会导致发热量也会很大。
另外由于磁头和盘面距离为微米级别,需要完全真空下的环境,若你把磁盘拆开,什么也不做重新放回去,就可能破坏了真空环境,那么非真空环境下的不可见颗粒都可能影响到磁盘,那么就有可能导致你的计算机磁盘损毁,真空是为了避尘。
磁盘的转速单位为rpm,一般常见的有7200rpm
由于是同心圆,相同时间内,最外磁道走过的范围最大,所以经常使用的数据应该放到最外磁道
系统默认分区为c分区是因为c分区正好是第一分区位于最外磁道,分区序号越大则存储数据越靠内磁道
。
数据存储
(1)索引与数据的结构
文件存储索引,由于和文件本身没有关系,所以叫做源数据 metadata。
文件系统会根据索引进行数据的存取,文件系统不在分区上,但文件系统的数据在分区上
文件系统把分区划分为俩块,一块源数据存储区一块数据存储区
数据区又分成多个逻辑块block,每个block代表一个存储单元,给每个存储单元分配多个扇区
然后文件存储的时候在源数据区给该文件建立一个指针,该文件指针指向其所占据的多个存储单元。
每个存储单元有使用和未使用的标记,当存储第二个文件的时候就会扫描整个数据区,找到没有被使用的存储单元进行存储。
所以如果一个分区比较大,而存储单元又比较小,那么扫描整个数据区的时候将会很慢。
在源数据区还存在一个块位图bitmap,仅存储block编号与block使用状态作为对象而形成的对象集合,则下次存储文件时不需要扫描整个数据区,仅扫描该块位图即可 。
源数据区域若是存储索引所需的空间不足时候此时即便数据区域还可以存储不少数据,仍旧无法继续存储 。
索引区是默认开辟了n个类似于数据区的存储单元,当新的索引需要写入时候是要进行选择对应索引区的存储单元
那么索引区也有其对应的位图
每个索引item被称为inode
inode存储着文件属主属组、权限、时间戳以及所占用的块等,就是没有文件名。
当一个inode所需要指向的存储单元非常多的时候就会像扩展分区一样,用一个指针指向一个更大的区域,该区域放置其所占据的存储单元。
文件名被放置在目录中,目录也是文件也会占据磁盘块。目录又属于根目录,跟目录由系统内核找到 。
每个目录所占据的存储单元会被划分为一个具有两列的表,分别存储inode编号、文件名。
每个文件包括根目录都有对应的inode
目录在存储单元的这种表结构被叫做目录项,即dentry
文件存储时为了防止一个文件存在与多个不连续存储单元时,后期查看该文件时的效率问题,所以文件存储是会先占据8个连续的存储单元
当存储结束会把没有用完的重新释放。
若不是连续的,则磁头找文件的时候则不能一次性连续取出。
文件删除时文件存储索引位图中item被标记为未使用,其对应被占据的存储单元也标记为未使用,当下次有文件写入时就会直接覆盖即可。
(2)实际使用中
实际磁盘使用过程中则是在上面一切逻辑之上还存在块组的概念
一个全局信息描述了有多少个块组,
块组列表中每个块组存放多个分区项
ln
ln命令被用来建立链接,格式ln [options]实际文件 链接文件
硬链接建立如:
ln nginx.conf nginx.conf2222
硬链接特性:
(1)只能对文件创建不能对目录创建,如:
[root@localhost conf]# ln ../html ./testdir
ln: ‘../html’: hard link not allowed for directory
(2)不能跨文件系统,如:
[root@localhost conf]# ln nginx.conf ../html/lost+found/flowerAndSnake/test.txt
ln: failed to create hard link ‘../html/lost+found/flowerAndSnake/test.txt’ => ‘nginx.conf’: Invalid cross-device link
(3)创建硬链接会增加文件的被链接数,如:
这里ls -i命令用来查看文件的inode,下面结果的最前面的数值就是文件的inode
[root@localhost conf]# ls -li
total 68
33735750 -rw-r--r--. 1 root root 1034 Jul 6 15:27 fastcgi.conf
33735751 -rw-r--r--. 1 root root 1034 Jul 6 15:27 fastcgi.conf.default
33735748 -rw-r--r--. 1 root root 964 Jul 6 15:27 fastcgi_params
33735749 -rw-r--r--. 1 root root 964 Jul 6 15:27 fastcgi_params.default
33735744 -rw-r--r--. 1 root root 2837 Jul 6 15:27 koi-utf
33735743 -rw-r--r--. 1 root root 2223 Jul 6 15:27 koi-win
33735746 -rw-r--r--. 1 root root 3463 Jul 6 15:27 mime.types
33735747 -rw-r--r--. 1 root root 3463 Jul 6 15:27 mime.types.default
33735759 -rw-r--r--. 3 root root 2704 Jul 6 15:29 nginx.conf
33735759 -rw-r--r--. 3 root root 2704 Jul 6 15:29 nginx.conf2222
33735759 -rw-r--r--. 3 root root 2704 Jul 6 15:29 nginx.conf222233
33735757 -rw-r--r--. 1 root root 2685 Jul 6 15:27 nginx.conf.default
33735754 -rw-r--r--. 1 root root 596 Jul 6 15:27 scgi_params
33735755 -rw-r--r--. 1 root root 596 Jul 6 15:27 scgi_params.default
33735752 -rw-r--r--. 1 root root 623 Jul 6 15:27 uwsgi_params
33735753 -rw-r--r--. 1 root root 623 Jul 6 15:27 uwsgi_params.default
33735745 -rw-r--r--. 1 root root 3610 Jul 6 15:27 win-utf
软连接的建立如:
ln -s nginx.conf dmj22
软连接的特性:
可应用于目录
可跨文件系统
不会增加被链接文件的链接次数
其大小为指定的路径(或文件名)所包含的字符个数
du命令
用来统计文件或文件夹的占用大小
-s:如果是目录则仅统计该目录总大小不列出其内每个文件详情
-h:统计结果用kb\Gb等比较友好的单位显示
默认下是输出该目录中每个文件的大小详情,非递归
df命令
用来查看当前系统上文件系统的磁盘使用情况
-P:当某条记录某个字段太长可能会导致一条记录换行,而P参数可以使得强制在一行
-i:查看inode
-h:统计结果用kb\Gb等比较友好的单位显示
关键字词:linux,磁盘,文件系统