注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

itoedr的it学苑

记录从IT文盲学到专家的历程

 
 
 

日志

 
 

QNX4文件系统简介  

2014-03-18 10:28:58|  分类: linux存储技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
  

QNX4 文件系 统 是 QNX Neutrion 默 认 的操作系 统 ,它使用与 QNX4 文件系 统 一 样 的磁 盘结 构,由 fs-qnx4.so 提供,当使用 devc-* 加 载 QNX4 文件系 统时 自 动 加 载 。它使用 (extent-based) , 带 指 纹 的位 图 分配方式,有效防止了数据 丢 失,并且更容易恢复。
? 基于 POSIX 文件系统
? 健壮性:所有敏感信息都写在磁 盘 上
?磁 盘签 名和特殊的 key 信息即使在磁 盘损 坏的 时 候也能恢复数据
?支持 505 文字的文件名
?支持多 线 程
?客 户驱动 的 优 先 级
?与 QNX4 一致的磁 盘结 构
一、 QNX 4 disk structure
1
Partition components
一个 QNX 4 文件系 统 可以占据一整 块 磁 盘 ( 如 软盘 ) ,也可以是磁 盘 上的一个分区。 QNX 4 文件系 统 在用命令 dinit 初始化文件系统时创建以下结构 :


? loader block [ 加 载块 ] :磁盘分区中的第一数据块。它包含了给 BIOS 加载用的引导代码,并从分区中加载 OS 镜像。但磁盘中不包含分区是,就是磁盘中的第一个物理块。
? root block [ 根 块 ] :它是分区中的第二个块。它有一个目录结构,并包含如下文件:
The root directory of the filesystem(usuall /)
:文件系统的根目录 ( 通常是 /)
/.indoes
/.boot
:通常被引导的 OS 镜像就存储在这个文件中
/.altboot
:也可以用于存储替代的 OS 镜像
? bitmap blocks [ 位 图块 ] :一组 rook block 之后的连续块。它包含了这个分区的一个为映像。一 bit 对应分区中的一块 ( 通常为 2M) 。当这个 bit 0 时表示这个块没有被使用。
? root directory [ 跟目 录 ] :一个普通的目录,但是包含如下特性。它包含了如下以下特定文件:
① /.
/.. :一个指向跟目录的连接
② /.bitmap
:一个包含分区位图映像的只读文件 ( bitmap block)
③ /.inodes
:一个 inode 对象的集合。第一个对象保留用于信息区。第一位是 IamTHE.inodeFILE 。在软盘 /RAM 中占一块,在磁盘中占 16 块。
④ /.logfilenames
:一个可选文件,用于保存超过 48 个字符的文件名
⑤ /.boot
:系统镜像
⑥ /.altboot
:系统替换镜像
? other directories files free blocks etc :其他目 录 、文件、空 闲块 ,等
2
Directories[ 目录 ]
一个目录是一个普通的文件,这个文件中包含了一组目录对象。
通常第一对象是 /. 文件,第二个是 /.. 文件等。每个目录对象不是对应了一个文件,就是指向了 /.inodes 文件中的一个对象。


3
Links
如果文件名超过 16 个字符,或者它是一个指向其他文件的链接,他就会被描述为一个特殊格式的目录对象。



4
Extent blocks
当文件信息需要扩展时使用 Extent blocks

5
Files
文件和扩展文件是一组由目录 /inode 对象描述的磁盘块。在 Neutrino 中通常为以下结构:

二、 File system
1
Extents
QNX 4 文件系统中,普通的文件和目录存储在一组连续的磁盘块上。保持这个文件的目录对象 (directory entry) 会跟踪这个扩展块。文件系统会用一个链表保存这个 extent 的信息。当一个文件需要更多空间时,文件系统会试图连续扩展磁盘。如果不行,就会在其他地方分配一个新的 extent 。文件系统会分配比要求的空间要大得空间,以防止多个文件同时写时分配了多个不连续的空间。当文件关闭时,多余的空间会被释放。

2
、健壮性
写文件时,多数文件都会先缓存在内存中,一定的延迟后在写入磁盘。而像目录更新、 txtent blocks bitmap 等会立即写入磁盘以防止文件系统的损害。

三、文件系统维护工具
1
fdisk
Fdisk
能够创建和维护硬盘上的分区。这个分区信息能够和其他系统共用,也可以用其他版本的 fdisk 来维护。如果分区 loader block 损害或丢失, fdisk 能够重新建一个。
建议备份所有分区表的信息。
2
dinit
Dinit
能够创建 loader block root block bitmap block root directory /.inodes file /.longfilename file 。如果磁盘的最初几个块坏了,可以使用 dinit –r 去恢复,然后调用 chkfsys
3
chkfsys
Chkfsys
QNX 系统中主要的文件系统维护工具,它能够:
? 检查整个分区中的目录结构,报告任何问题。 如果可能就能够修复。
? 确定所有的磁盘分配
? 可以重写 /.bitmap 文件
只有但 root block 可用是可能使用 chkfsys 。如果 root block 已经损害可以尝试使用 dinit 恢复。
4
dcheck
dcheck
通过读取所有磁盘块来查找坏块。当制定 -m 参数时, dcheck 会将坏块从 bitmap 中删除。当 dcheck 发现坏块时,会将其写入 /.bad_blks 文件中。可以多次运行 dcheck 用以增加发现坏块的几率。
5
zap
zap
能够删除一个文件而不释放对应的磁盘。当一个 directory 已经损坏后两个文件同时使用了同一块磁盘时,可以使用 zap
6
spatch
当磁盘上的文件或目录丢失时,通过 chkfsys 也知道一个关键的文件或目录没有被恢复,就可以使用 spatch 来恢复数据。 Spatch 能够直接浏览磁盘,以解决问题。使用 spatch 之前必须理解 QNX4 文件系统的磁盘构造。

四、磁盘与文件的恢复
1
、使用 chkfsys
通常 chkfsys 需要文件系统空闲,并且没有文件被打开。 Chkfsys 扫描整个磁盘,构建一个 bitmap 并验证所有文件和目录的完整性。当扫描结束后会将生成的 bitmap 与文件系统的 bitmap 进行比较,如果一致就结束验证;如果不一致就会询问是否需要覆盖。在扫描的过程中 chkfsys 也可以解决以下问题:
? unbusy 文件: 正在写操作时系统崩溃产生的文件
? 确定所有文件大小

2
、何时使用 chkfsys
建议在日常维护过程中使用 chkfsys 。如每次启动的时候。而当系统崩溃、电源中断、异常重启时,运行 chkfsys 就显得特别重要,它嫩购验证系统是否有文件损害。
不建议在运行中的系统中执行 chkfsys ,如果必须执行就应该加上 -f 参数。

3
、从坏块中恢复数据
电源断电或设备问题都会导致坏块,在一些情况下只是读出数据并重新写入就有可能短时间内恢复数据,这是可以将数据备份到其他地方。这时可以通过 spatch 命令去读取这些坏块上的数据,并通常都能够再重新写入。同时 spatch 也会重写 CRC 码让这些块恢复正常。然后就可以将这些文件复制到其他地方。再用 zap 命令消除这个损坏的文件。

五、无法启动时的处理
1
、试图从 CDROM 或网络启动
2
、试图启动硬盘驱动。
3
、执行 fdisk
4
、加载文件系统

  评论这张
 
阅读(155)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017