- 博客(26)
- 资源 (10)
- 收藏
- 关注
原创 [ext4] 磁盘布局 - extent tree
传统的类Unix文件系统,比如Ext3,都是使用一个间接数据块映射表来记录每一个数据块的分配情况的。但是这种机制对于超大文件的存储是有缺陷的,特别是当对超大文件进行删除和截断操作时。映射表会对每一个数据块进行记录,而一个超大文件将占有很多的数据块,因此造成映射表将变得无比臃肿,难于维护。Ext4引入了一个新的概念,叫做“Extents”。一个Extents是一个地址连续的数据块(block)的
2014-03-27 14:31:44 7168
翻译 [ext4]磁盘布局 - inode bitmap & table
在[磁盘布局 group部分]已经介绍过ext4的整体布局,其中存在两个与inode有关的名称:inode bitmap和inode table。Inode bitmap,用于表示inode table中对应的inode entry是否已经使用。Bitmap中每个位对应于一个table中inode entry。一个group中Inodebitmap只占用一个block,并且block所有的空间
2014-03-27 14:28:30 6546 3
翻译 [ext4]08 磁盘布局 - CheckSums
从2012年开始,Ext4和jbd2的元数据中都开始加入checksums。特性标识是metadata_csum。Checksum算法是在super_block中指定:struct ext4_super_block {… __u8 s_log_groups_per_flex; /* FLEX_BG group size */ __u8 s_checksu
2014-03-27 14:19:50 3901
翻译 [ext4]07 磁盘布局 - 块/inode分配策略
Ext4系统从设计上就认为数据局部性是文件系统的文件系统的一个理想品质。在机械硬盘上,相关联的数据存放在相近的blocks上,可以使得在访问数据时减少磁头驱动器的移动距离,从而加快IO访问。在SSD上,没有像磁头一样的移动组件。但是数据局部性可以增大请求大小从而降低请求数量。同时可以尽可能的集中擦写块,从而提高重写速度。对减少碎片也很有帮助。Ext4解决碎片问题的第一个方法是,mult
2014-03-24 20:09:32 5539
原创 [ext4]06 磁盘布局 - 特殊inode
Ext4预留了一些inode做特殊特性使用,见下表:inodePurpose 0不存在,Ext4中不存在inode 0. 1存放损坏的数据块链表2根目录3User quota. 用户quota索引4Group
2014-03-24 20:08:28 3734
原创 [ext4]05 磁盘布局 - 延迟块组初始化
延迟块组初始化,Ext4的新特性。如果对应的特性标识uninit_bg置位,那么inode bitmap和inode tables就不会初始化。延迟块组初始化特性特性可以减少格式化耗时。延迟块组初始化特性,默认是开启的。root@ubuntu:~# time mkfs.ext4 -F /dev/sdc…real 0m0.838suser 0m0.072s
2014-03-24 20:07:02 3588
原创 [ext4]04 磁盘布局 - Meta Block Groups
Meta Block Groups,可以翻译为元块组集。如果不采用Meta Block Groups特性,在每个冗余备份的超级块的后面是一个完整的(包含所有块组描述符的)块组描述符表的备份。如前所述(group分析中已经说明,group最大为128M,即2^27 bytes),那么一个group全部存储groups元数据,才会有2^27 / 64=2^21个,更何况,也无法全部用来存储grou
2014-03-24 20:06:24 7135 5
原创 [ext4]010 磁盘布局 - 如何查找inode的磁盘位置
在linux系统中,任何一个文件,都有一个inode与其对应,也就是说,在一个文件系统中,一个文件都有唯一的ino来标示他,那么在ext4系统中,ino是如何确定的哪?当我们新创建的文件或目录时,会调用ext4_create函数,其调用路径是:ext4_create -> ext4_new_inode。就是在函数ext4_new_inode定义了inode->ino。分析函数ext4_ne
2014-03-21 08:53:15 8203 1
原创 [Git]10 如何提交更新时的冲突
当2个branch都修改了同一个文件的同一部分时,这时,就会发生冲突,git的自动合并就会失败。产生了冲突就需要手工解决。
2014-03-20 22:53:47 1801
原创 [Git]09 如何为命令起外号
Git并不会推断你输入的几个字符将会是哪条命令,不过如果想偷懒,少敲几个命令的字符,可以用 git config 为命令设置别名。来看看下面的例子:$ git config --global alias.co checkout$ git config --global alias.br branch$ git config --global alias.
2014-03-20 22:51:53 935
原创 [Git]07 如何在提交过程中忽略某些文件
一般我们总会有些文件无需纳入 Git的管理,也不希望它们总出现在未跟踪文件列表。通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。我们可以创建一个名为 .gitignore的文件,列出要忽略的文件模式。来看一个实际的例子:$ cat .gitignore *.[oa] *~第一行告诉 Git忽略所有以 .o 或 .a 结尾的
2014-03-20 22:50:07 1037
原创 [Git]06 如何提交空目录
git和 svn不同,仅仅跟踪文件的变动,不跟踪目录。所以,一个空目录,如果里面没有文件,即便 git add 这个目录,另外在别处 check out 的时候,是没有这个空目录的。只跟踪文件变化,不跟踪目录,这么设计是有原因的。但这会带来一些小麻烦。有时候,确实需要在代码仓库中保留某个空目录。比如测试时需要用到的空目录。变通的解决办法是在空目录下存一个 .
2014-03-20 22:49:18 8013
原创 [Git]05 如何使用分支
作者:Younger Liu,本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可。几乎每一种版本控制系统都以某种形式支持分支。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。在很多版本控制系统中,这是个昂贵的过程,常常需要创建一个源代码目录的完整副本,对大型项目来说会花费很长时间。有人把Git
2014-03-20 22:46:06 988
原创 [Git]04 如何使用标签
Git也可以对某一时间点上的版本打上标签。人们在发布某个软件版本(比如 v1.0等等)的时候,经常这么做。本节我们一起来学习如何如何新建标签,列出所有可用的标签,以及各种不同类型标签之间的差别。 常用命令1.创建含注释标签$ git tag -a 标签名> -m'标签注释'2.显示所有标签
2014-03-20 22:44:25 840
原创 [Git]03 如何查看提交历史
在提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,可以使用 gitlog 命令查看。 常用命令1.查看提交历史$ git log2.查看某个文件或者某个目录的递交历史$ git log -p 文件名地址或目录地址>3.查看最近N次的递交历史gi
2014-03-20 22:42:08 1150
原创 [Git]02 如何简单使用
本章将介绍几个最基本的,也是最常用的 Git命令,以后绝大多数时间里用到的也就是这几个命令。初始化一个新的代码仓库,做一些适当配置;开始或停止跟踪某些文件;暂存或提交某些更新。我们还会展示如何让 Git忽略某些文件,或是名称符合特定模式的文件;如何既快且容易地撤消犯下的小错误;如何浏览项目的更新历史,查看某两次更新之间的差异;以及如何从远程仓库拉数据下来或者推数据上去。
2014-03-20 22:40:04 987
原创 [Git]01 如何安装和配置
简单地说,Git究竟是怎样的一个系统呢?请注意,接下来的内容非常重要,若是理解了 Git的思想和基本工作原理,用起来就会知其所以然,游刃有余。在开始学习 Git 的时候,请不要尝试把各种概念和其他版本控制系统(诸如 Subversion和 Perforce 等)相比拟,否则容易混淆每个操作的实际意义。Git在保存和处理各种信息的时候,虽然操作起来的命令形式非常相
2014-03-20 22:38:25 1058
原创 [ext4]09 磁盘布局 - superblock备份机制
如果sparse_super特性flag被设置(即开启了sparse_super特性),那么super_block和组描述符的副本只会保存在group索引为0或3、5、7的整数幂。如果没有设置sparse_super特性flag,super_block和组描述符的副本将保存在每一个group中。
2014-03-13 19:40:02 5741
原创 [ext4]磁盘布局 - group分析
ext4文件系统的磁盘布局是先把磁盘分成一个个相同大小的block块(每个block块的大小默认是4K),然后把这些block块合成一个个group。group大小最大为256M(默认为256M),其计算公式:Group_size = (blk_size*8)*blk_size=4096*8*4096= 32768*4096=128M更详细一点如下,针对第一个group(即group0
2014-03-13 19:37:04 9225 4
原创 [ext4]01 磁盘布局 - block分析
ext4文件系统最基本的分配单元是“block”(块)。block是由一组连续的sectors来组成,其大小介于1k~4K之间,当然不可能是任意值,只能是2的整数次幂个sectors。然后连续的blocks再组成group。Block的大小是在mkfs时指定的,默认是4K。默认情况下,系统可以含有2^32个blocks,到那时如果开启“64bit”特性,可以支持2^64个blocks。
2014-03-13 19:34:49 10356 1
原创 [工具技巧] SecureCRT使用技巧 V1.0
本文档适用对象为需要使用secureCRT做系统或网络等调试的工程师,其必须有用过该款软件,基础功能会使用。对于那些需要修改大量设备的配置时像远程升级等等,更应该学习本文档。 1 SecureCRT性能优化1.1 外观优化1.1.1 外观优化说明安装后默认背景界面(如下图)是白底黑字,字体较小,长期使用对眼睛有所伤害,故可以自定义其外观,以保护眼睛。
2014-03-11 15:40:29 1615
转载 内核源码目录结构
浏览内核代码之前,有必要知道内核源码的整体分布情况,按照惯例,内核代码安装在/usr/src/linux目录下,该目录下的每一个子目录都代表了一个特定的内核功能性子集,下面针对2.6.23版本进行简单描述。(1)Documentation。这个目录下面没有内核代码,只有很多质量参差不齐的文档,但往往能够给我们提供很多的帮助。(2)arch。所有与体系结构相关的代码都
2014-03-10 21:17:53 965
原创 共享内存删除的安全“陷阱”
共享内存就是使多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。其他进程能把同一段共享内存段“连接到”他们自己的地址空间里去。所有进程都能访问共享内存中的地址。如果一个进程向这段共享内存写了数据,所做的改动会即时被有访问同一段共享内存的其他进程看到。共享内存的使用大大降低了在大规模数据处理
2014-03-07 15:45:51 2792
原创 基于header的一些常用指令详解
header常用指令header分为三部分:第一部分为HTTP协议的版本(HTTP-Version);第二部分为状态代码(Status);第三部分为原因短语(Reason-Phrase)。// fix 404 pages: 用这个header指令来解决URL重写产生的404 headerheader('HTTP/1.1 200 OK'); // set
2014-03-01 00:09:16 1636
大模型专题报告:百模渐欲迷人眼,AI应用繁花开
2024-03-07
存储专题系列一:新应用发轫,存力升级大势所趋
2024-03-06
AI智算时代:算力芯片加速升级
2024-03-06
翻译分布式文件系统:BeeGFS vs GlusterFS.pdf
2023-08-16
2023东北证券-计算机行业AI深度报告,向量数据库:AI时代的Killer+App-230508.pdf
2023-08-15
计算机:CPU生态价值与机遇研究.pdf
2023-08-15
大数据+物联网智慧水务解决方案.pdf
2023-08-15
2022中国图计算技术及应用发展研究报告.pdf
2023-08-15
金融行业信创云基础架构方案评估.pdf
2023-08-15
计算产业发展简史及趋势
2023-08-15
2021全球加密技术发展趋势研究
2023-08-15
2022 分布式存储市场调研报告 + 分布式存储
2022-05-18
下一代数据存储技术研究报告(2021年)
2021-08-01
fio-2.14.tar.bz2
2017-05-03
Linux中LCD设备驱动
2013-11-06
UBIFS文件系统介绍
2013-10-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人