免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3400 | 回复: 10
打印 上一主题 下一主题

请问怎样从NTFS转到UFS [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-12-19 12:34 |只看该作者 |倒序浏览
很奇怪,本来机子上是FREEBSD+WINDOWS,现在那个FREEBSD的UFS磁盘格式却变成dos扩展分区了,但数据还在里面,如何改回UFS呀

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2006-12-19 13:05 |只看该作者
是很奇怪 你现在还是双系统吗

论坛徽章:
0
3 [报告]
发表于 2006-12-19 14:37 |只看该作者
Freebsd已经进不了了,文件格式不对,而且不是主分区了,肯定只有WINDOWS了

论坛徽章:
2
丑牛
日期:2013-09-29 09:47:222015七夕节徽章
日期:2015-08-21 11:06:17
4 [报告]
发表于 2006-12-19 14:39 |只看该作者
在windows下装能读取usf分区的软件,看能不能读出去。

论坛徽章:
0
5 [报告]
发表于 2006-12-19 15:17 |只看该作者
原帖由 jervis0211 于 2006-12-19 12:34 发表
很奇怪,本来机子上是FREEBSD+WINDOWS,现在那个FREEBSD的UFS磁盘格式却变成dos扩展分区了,但数据还在里面,如何改回UFS呀



注意:本文介绍的方法部分,假定读者对UFS文件系统,以及FreeBSD的日常操作相当熟悉;请勿轻易执行本文介绍的操作,本文中的操作,可能导致fsck_ffs(无法修正的严重问题。由于在此本人已明确告知读者这一风险,据此,对于由于执行这些操作导致的任何数据损失,本人明示不承担任何责任。

FreeBSD的UFS文件系统的布局结构,在设计时已经考虑到了磁盘立体结构上发生各种损坏的可能性。UFS考虑到了磁盘可能发生单轨、整柱面或整面磁盘的数据发生损毁的可能性。

一般而言,文件系统都需要保存带有“索引”或“描述”性质的关键数据,通常这种数据也称为“元数据”(metadata)。在UFS和UFS2文件系统中,这些元数据包括了超级块(super-block)、柱面组记帐信息等。在UFS2文件系统中的每个超级块大约需要占用3个扇区,它包含了对整个文件系统的描述性信息,因此对于文件系统而言,超级块是非常重要的。在最初的FFS(Berkeley Fast File System,FreeBSD的UFS和UFS2文件系统,事实上是FFS的演化版本)设计中,为了使文件系统在遭到毁灭性打击,如硬盘发生整轨、整面或全柱面损毁时能够得以恢复,在文件系统初始化时,会将超级块复制到整个磁盘的多个位置,以便在发生硬件损坏时能够读取。

有时,由于软件或临时性的硬件信号干扰,也会导致超级块损坏。在文件系统挂载时,系统只会读取主超级块的内容;此处也会保存一些记帐信息。主超级块在文件系统的生命周期内,会不断地发生修改,以反映文件系统目前的状态。为了确保备份的安全,备份超级块不会跟进这些变动。在必要时,fsck_ffs(程序能够根据磁盘上的其它元数据,重新计算应该应用到超级块上的变动。

在FreeBSD中,对于损毁严重的主超级块,系统会给出超级块不正确的提示而拒绝挂载;fsck_ffs(在不指定使用备份超级块时,也会出现类似的问题(我认为这是一个bug,在大约1994年的时候引入,如果有时间的话我会修正这个问题)。要在fsck_ffs的过程中指定使用哪个超级块,可以使用fsck_ffs的-b参数来指定。

我个人建议,只要条件允许,在执行任何数据恢复操作之前,第一步是先将整个磁盘分区进行备份。在FreeBSD中,可以使用dd来完成这项任务。然后,所有的操作,都应在副本而不是正本上运行。如果正本属于硬件损坏,特别是介质损毁,还应从副本复制副本来用于实际操作。

如何确定备份超块的位置

对于UFS2而言,第一个备份超块的位置,通常在该文件系统的第160扇区。如果之前没有记录超块的其它备份的位置,可以用下列命令来得到:

newfs -N /dev/da0s1a

注意,如果在执行newfs时指定了任何其它参数,还需要一起指定。注意,-N是必须的,否则newfs将真的创建文件系统,并使恢复超块不再可能。

这之后,可以尝试使用fsck_ffs(来修复:

fsck_ffs -b 160 -fy /dev/da0s1a

对于损坏非常严重的文件系统,则不应使用前述操作,而应在确认备份超块没有问题的前提下,直接使用它来覆盖。

下面的命令,能够将位于/dev/da0s1a文件系统的备份超块以类似debug的形式dump出来:

dd if=/dev/da0s1a iseek=160 bs=512 count=3 | hexdump -C

一定要仔细确认这个超块没有受到损毁!请参见 sys/ufs/ffs/fs.h 中定义的struct fs结构。

之后,首先备份现有的、占据超块位置的数据。这一步并非严格必须,但很明显,做事后诸葛亮是没有意义的。对于UFS2文件系统,主超级块的起点是文件系统的第128扇区(随配置不同,这个值可能有所差异)。

dd if=/dev/da0s1a iseek=128 bs=512 count=3 of=bad_superblock

接下来,复制备份超块到一个文件:

dd if=/dev/da0s1a iseek=160 bs=512 count=3 of=backup_superblock

最后,用该超块覆盖主超块:

dd if=backup_superblock oseek=128 bs=512 count=3 of=/dev/da0s1a

由于统计信息均不正确,此时磁盘不应投入正常使用。由于我们首先要做的是修复数据,因此此时应以只读方式挂载:

mount -ordonly /dev/da0s1a /mnt/

并从其中复制数据:

cd /mnt
find . -type f [其它条件] | tar cfT - - | tar xf - -C /recovery/

这之后,使用fsck_ffs(对其进行处理,可以进一步得到一些数据:

fsck -fy /dev/da0s1a

几点需要注意的事情:

a) 挂接损坏的文件系统,有可能随时导致内核以极其惨烈的方式崩溃。目前为止,我发现过的此类问题均已进行了修正,但很难说这类问题已经完全不存在。理想状况下,应使用NFS挂接一个远程的文件系统用于写操作;每处理完一个损坏的文件系统,应重启一次。
b) 损坏严重的文件系统会包含一个甚至大量损坏的柱面组信息。这些信息会使文件信息发生损坏。这种情况几乎已经没有可能修正数据了,在复制数据时,应剔除这些数据。
c) 前述操作必须非常小心进行。所有操作均可能导致fsck无法修正的问题。

[ 本帖最后由 新杂人 于 2006-12-19 15:19 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2006-12-19 15:25 |只看该作者
楼上的,我现在只能进WINDOWS,UFS没有了,怎么弄捏

论坛徽章:
0
7 [报告]
发表于 2006-12-20 14:29 |只看该作者
找一下windows下装能读取usf分区的那个软件试试,别重状,数据没了可不好

论坛徽章:
0
8 [报告]
发表于 2006-12-21 10:06 |只看该作者
原帖由 prolj 于 2006-12-20 14:29 发表
找一下windows下装能读取usf分区的那个软件试试,别重状,数据没了可不好

有摸有搞错,大家回答问题要看清呀,现在摸有UFS分区了已经,汗一个

论坛徽章:
0
9 [报告]
发表于 2006-12-21 10:18 |只看该作者
原帖由 jervis0211 于 2006-12-21 10:06 发表

有摸有搞错,大家回答问题要看清呀,现在摸有UFS分区了已经,汗一个


论坛徽章:
0
10 [报告]
发表于 2006-12-30 10:21 |只看该作者
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP