欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

第十三周学习笔记

程序员文章站 2022-08-29 18:27:32
文件系统: block: 文件系统以block为单位,一般大小为1024bytes(1k)或2K或4K。块的出现用以提升读写性能,一般来讲不到一个block的文件也以一个block来存储,虽然浪费,但是比起速度来讲还是很值得 inode 一个大的文件包含多个block,block在磁盘上分散,如果不 ......

文件系统:

block:
文件系统以block为单位,一般大小为1024bytes(1k)或2k或4k。块的出现用以提升读写性能,一般来讲不到一个block的文件也以一个block来存储,虽然浪费,但是比起速度来讲还是很值得


inode
一个大的文件包含多个block,block在磁盘上分散,如果不予以指针,每次读取需要扫描整个磁盘。所以inode中主要记录了元数据(inode号、文件类型、权限、文件所有者、大小、时间戳等)另外最重要的是还存储了指向属于该文件的block的指针


bmap
在写入文件的时候,如果需要找出空闲的block而整个磁盘扫描的话就会很慢,bmap能够标识block,从而更快的找出空闲的block,bmap的一个字节能够标识8个block,bmap自身需要占用一些block


inode表
用一个1k的block来存储一个128字节的inode太浪费了。所以将ionde组合起来成为inode表(ionde table)来存储,当一个文件系统创建时,所有的inode已经成为ionde表的形式进行管理了

块组(block group)
bmap和inode表都需要存储空间,如果数据大了,也需要不小的存储空间来存储,主要是解析起来也慢,所以利用块组来进行优化。每个组中都存有本组的inode table范围, bmap等。块组的大小根据一个block的大小能够标识多少个block来划分,一个完整占用的bmap能够标识1024*8=8192个block(这些block存储数据区和元数据区)。所以一个块组的大小大概是8m

超级块(superblock)
用以存放一个文件系统究竟存放了多少个块组,每个块组又有多少block和多少inode号等等信息,还有本间系统本身的属性信息如各种时间戳。block总数量和空间数量、inode总数量和空闲数量,以及当前文件系统是否正常等等。用df -ht命令就能读取每个文件系统的超级块。超级块对文件系统及其重要,超级块的丢失或者损坏都将会导致文件系统的损坏,所以一般会在多个块组中备份。ext家族的文件系统可以使用dumpe2fs -h来获取

 

磁盘raid

 

raid0
raid0至少需要两块磁盘,将一个数据切割,写入到两个磁盘的block上。这样做能大大提高磁盘的读写能力。但是坏处是非常的不安全,当有一个磁盘损坏,另一块磁盘因为数据的不完整,也随之废弃。

raid1
raid1至少也需要两块磁盘,将一个数据同时写入到两个磁盘的block上,就相当于将一份数据复制成两份写到不同的磁盘上。这样做的好处是大大提高了磁盘的安全性,即使一块磁盘损坏了,另一块磁盘也能立刻投入工作。缺点是:增加了磁盘的成本的同时,容量却没有增大,仅仅只有一个磁盘的容量。另外虽然写入磁盘的速度不变,但是同时又系统调用io写入磁盘的压力就会变大,增加了系统的压力。另外理论上来说,读的速度和raid0的速度是一样的

raid10
raid10至少需要4块磁盘,如字面意思先对两两磁盘进行raid1操作,形成两个raid1,再对两个raid1进行raid0操作。这样当数据写入的时候,就能分片写入到raid1中,raid1又会对其进行“备份"。即使一个raid1中的一个磁盘废弃,这样也不会导致数据的丢失,除非同组的raid1全部报废,那么就会造成数据的丢失。所以,这样大大提高了数据的安全和读写速度

raid01

raid10至少需要4块磁盘,如字面意思先对两两磁盘进行raid0操作,形成两个raid0,然后对这两个raid0进行raid1操作。
这种方案安全性完全得不到保证,因为一个raid0中的磁盘损坏,这个raid0就会损坏,读写压力也就完全的到了另外一个raid0上。所以这种方案很少人使用,基本可以忽略。