+ -
当前位置:首页 → 问答吧 → JFS2 文件 rm 恢复。

JFS2 文件 rm 恢复。

时间:2009-01-06

来源:互联网

http://bbs.loveunix.net/thread-94019-1-1.html  讨论了 jfs1 rm的恢复。

以下是 jfs2的,我没有写文件名的恢复,主要是解释起来太复杂,英文的,顺便收点钱。

jfs2 rm recovery.rar (3.53 KB)

下载次数:612

2009-1-6 12:22

阅读权限: 20

解压txt文件

作者: projects   发布时间: 2009-01-06

楼猪,这东西好H啊。希望是好东西

作者: zhangyi1201   发布时间: 2009-01-06

的确是太强了,学习了

作者: LGHREADY   发布时间: 2009-01-06

斥巨资买了,好好看看。鸟语不好真吃亏啊

作者: 哞哞牛   发布时间: 2009-01-06

要看懂这个难点

作者: lichx123   发布时间: 2009-01-06

太黑了,不买   

作者: wwrko   发布时间: 2009-01-06

下来做个试验看看如何

作者: lambert_wu   发布时间: 2009-01-06

这么贵希望是好东西

作者: dzq198536   发布时间: 2009-01-06

5个金币就说贵,不厚道

作者: yddll   发布时间: 2009-01-06

这个比较高。

作者: ma.yu   发布时间: 2009-01-06

一个字“黑”!

作者: 小菜鸟_2008   发布时间: 2009-01-06

斥巨资买了,好好看看。鸟语不好真吃亏啊

作者: abit2007   发布时间: 2009-01-06

买就一个字!!!

作者: redliquid   发布时间: 2009-01-06

试验了一下,不错,鉴于JFS2没有32位 JFS那么多限制,又是大于4MB如何如何,又是大文件系统如何如何,因此方法对付任何大小文件的通用性应当是没问题的。

作者: larryh   发布时间: 2009-01-06

等攒够了钱来买

作者: endlesssky   发布时间: 2009-01-06

晕 又是5个币````

作者: dfyskyorc   发布时间: 2009-01-06

实验了一下,没成功啊,从fsck部分开始就不同了。

16:42:27 root@ST-FREE:[/]#fsck /testjfs2



The current volume is: /dev/fslv01
Primary superblock is valid.
*** Phase 1 - Initial inode scan
*** Phase 2 - Process remaining directories
*** Phase 3 - Process remaining files
*** Phase 4 - Check and repair inode allocation map
File system inode map is corrupt; FIX? y
Superblock marked dirty because repairs are about to be written.
*** Phase 5 - Check and repair block allocation map
Inodes not connected to the root directory
         tree have been detected.  Will reconnect.
File system is clean.
Superblock is marked dirty; FIX? y
All observed inconsistencies have been repaired.
16:42:53 root@ST-FREE:[/]#mount /testjfs2
16:43:02 root@ST-FREE:[/]#cd /testjfs2
16:43:11 root@ST-FREE:[/testjfs2]#ls -lt
total 8
-rw-r--r--   1 root     system            4 Jan 06 16:35 test2
drwxr-xr-x   2 root     system          256 Jan 06 16:32 lost+found
16:43:14 root@ST-FREE:[/testjfs2]#cd lost+found
16:44:08 root@ST-FREE:[/testjfs2/lost+found]#l
ksh: l:  not found.
16:44:09 root@ST-FREE:[/testjfs2/lost+found]#ls
4
16:44:10 root@ST-FREE:[/testjfs2/lost+found]#cat 4
16:44:20 root@ST-FREE:[/testjfs2/lost+found]#ls -l
total 0
-rw-r--r--   1 root     system            0 Jan 06 16:34 4
16:44:26 root@ST-FREE:[/testjfs2/lost+found]#

作者: beginner-bj   发布时间: 2009-01-06

原帖由 abit2007 于 2009-1-6 15:27 发表
斥巨资买了,好好看看。鸟语不好真吃亏啊

你怎么学我说话啊

作者: 哞哞牛   发布时间: 2009-01-06

原帖由 beginner-bj 于 2009-1-6 16:50 发表
实验了一下,没成功啊,从fsck部分开始就不同了。
...


不会吧,我屡试屡成啊:

编辑一下,避免盗版结果了LZ的挣钱生意
  1. [43p150:root:/test2] l /setup/*07
  2. total 3000296
  3. ......
  4. -rw-r--r--   1 root     sys        98089984 Nov 27 2008  X11.fnt.ucs.ttf.5.3.0.5
  5. 0.U
  6. -rw-r--r--   1 root     sys       114598912 Nov 27 2008  X11.fnt.ucs.ttf_CN.5.3.
  7. 0.50.U
  8. -rw-r--r--   1 root     sys           15360 Nov 27 2008  X11.fnt.ucs.ttf_extb.5.
  9. 3.0.10.U
  10. -rw-r--r--   1 root     sys            7168 Nov 27 2008  X11.loc.en_US.Dt.rte.5.
  11. 3.0.60.U
  12. -rw-r--r--   1 root     sys         7094272 Nov 27 2008  X11.motif.lib.5.3.0.60.
  13. U
  14. -rw-r--r--   1 root     sys          193536 Nov 27 2008  X11.motif.mwm.5.3.7.0.U
  15. -rw-r--r--   1 root     sys          318464 Nov 27 2008  X11.samples.apps.aixcli
  16. ents.5.3.0.60.U
  17. [43p150:root:/test2] cp /setup/*07/X11.fnt.ucs.ttf_CN.5.3.0.50.U /setup/bbb
  18. [43p150:root:/test2] cp /setup/bbb .
  19. [43p150:root:/] rm test2/bbb
  20. [43p150:root:/] sync
  21. [43p150:root:/] umount /test2
  22. [43p150:root:/] fsdb /test2

  23. File System:                    /test2

  24. File System Size:               519768  (512 byte blocks)
  25. Aggregate Block Size:           4096
  26. Allocation Group Size:          8192    (aggregate blocks)

  27. > 重要操作
  28. Inode 2 at block 33, offset 0x400:

  29. [1] di_fileset:         16              [18] di_inostamp:       0x000ab676
  30. [2] di_number:          2               [19] di_gen:            1
  31. [3] di_size:    0x0000000000000100      [20] di_ixpxd.len:      4
  32. [4] di_nblocks: 0x0000000000000000      [21] di_ixpxd.addr1:    0x00
  33. [5] di_nlink:           3               [22] di_ixpxd.addr2:    0x00000021
  34. [6] di_mode:            0x000141ed           di_ixpxd.address:  33
  35.                 0040755 drwxr-xr-x      [24] di_uid:            0
  36.                                         [25] di_gid:            0
  37. [9] di_atime.tj_nsec:   0x392e4160      [26] di_atime.tj_sec:0x00000000000abe6f
  38. [10] di_ctime.tj_nsec:  0x1308e36b      [27] di_ctime.tj_sec:0x00000000000ac18a
  39. [11] di_mtime.tj_nsec:  0x1308e36b      [28] di_mtime.tj_sec:0x00000000000ac18a
  40. [12] di_otime.tj_nsec:  0x00000000      [29] di_otime.tj_sec:0x00000000000ab676
  41. [13] di_ea.flag:        0x00            [30] di_ea.len:         0
  42.      EAv1                               [31] di_ea.addr1:       0x00
  43. [15] di_ea.nEntry:      0x00            [32] di_ea.addr2:       0x00000000
  44. [16] di_ea.type:        0x0000               di_ea.address:     0
  45.                                         [34] di_ea.nblocks:     0
  46. change_inode: [m]odify, [e]a, [t]ree, or e[x]it > 重要操作
  47. Root D-Tree Node of inode 2

  48. [1] flag        0x83            BT_ROOT  BT_LEAF
  49. [2] nextindex   2
  50. [3] freecnt     6       Actual Free Count: 6
  51. [4] freelist    2       type 'f' to walk
  52. [5] idotdot     2
  53.     stbl        {3,1,1,0,0,0,0,0}       type '#' for specific stbl entry

  54.        Slots:   next    cnt     type 's' to modify slot
  55.      slot[1]:   0       0
  56.      slot[2]:   4       1
  57.      slot[3]:   0       0
  58.      slot[4]:   5       1
  59.      slot[5]:   6       1
  60.      slot[6]:   7       1
  61.      slot[7]:   8       1
  62.      slot[8]:   -1      1
  63. dtree: Hit enter to see entries, [h]ex dump, [u]p, [m]odify, [f]reelist,
  64.         [s]lot, [#], or e[x]it: 重要操作
  65. Slot:      Inum              Next  NamLen    Name
  66. 00000000:  00000000 00000002 00000000 00000000   |................|
  67. 00000010:  83020602 00000000 03010100 00000000   |................|
  68. 00000020:  00000000 00000003 FF0A6C6F 73742B66   |..........lost+f|
  69. 00000030:  6F756E64 00000000 00000000 00000000   |ound............|
  70. 00000040:  04010000 00000006 FF036262 62000000   |..........bbb...|
  71. 00000050:  00000000 00000000 00000000 00000000   |................|
  72. 00000060:  00000000 00000004 FF036161 61000000   |..........aaa...|
  73. 00000070:  00000000 00000000 00000000 00000000   |................|
  74. 00000080:  05010000 00000000 00000000 00000000   |................|
  75. 00000090:  00000000 00000000 00000000 00000000   |................|
  76. 000000a0:  06010000 00000000 00000000 00000000   |................|
  77. 000000b0:  00000000 00000000 00000000 00000000   |................|
  78. 000000c0:  07010000 00000000 00000000 00000000   |................|
  79. 000000d0:  00000000 00000000 00000000 00000000   |................|
  80. 000000e0:  08010000 00000000 00000000 00000000   |................|
  81. 000000f0:  00000000 00000000 00000000 00000000   |................|
  82. -hit enter for more-
  83. 00000100:  FF010000 00000000 00000000 00000000   |................|
  84. 00000110:  00000000 00000000 00000000 00000000   |................|
  85. dtree: Press [u]p, [#], or e[x]it > 重要操作
  86. > 重要操作
  87. Inode 6 at block 33, offset 0xc00:

  88. [1] di_fileset:         16              [18] di_inostamp:       0x000ab676
  89. [2] di_number:          6               [19] di_gen:            3232612811
  90. [3] di_size:    0x0000000006d4a400      [20] di_ixpxd.len:      4
  91. [4] di_nblocks: 0x0000000000006d4b      [21] di_ixpxd.addr1:    0x00
  92. [5] di_nlink:           0               [22] di_ixpxd.addr2:    0x00000021
  93. [6] di_mode:            0x000081a4           di_ixpxd.address:  33
  94.                 0100644 -rw-r--r--      [24] di_uid:            0
  95.                                         [25] di_gid:            0
  96. [9] di_atime.tj_nsec:   0x36cc62c0      [26] di_atime.tj_sec:0x00000000000ac108
  97. [10] di_ctime.tj_nsec:  0x1308e36b      [27] di_ctime.tj_sec:0x00000000000ac18a
  98. [11] di_mtime.tj_nsec:  0x2ae097d5      [28] di_mtime.tj_sec:0x00000000000ac122
  99. [12] di_otime.tj_nsec:  0x36cc62c0      [29] di_otime.tj_sec:0x00000000000ac108
  100. [13] di_ea.flag:        0x00            [30] di_ea.len:         0
  101.      EAv1                               [31] di_ea.addr1:       0x00
  102. [15] di_ea.nEntry:      0x00            [32] di_ea.addr2:       0x00000000
  103. [16] di_ea.type:        0x0000               di_ea.address:     0
  104.                                         [34] di_ea.nblocks:     0
  105. change_inode: [m]odify, [e]a, [t]ree, or e[x]it > 最最最最最最重要操作
  106. Inode 6 at block 33, offset 0xc00:

  107. [1] di_fileset:         16              [18] di_inostamp:       0x000ab676
  108. [2] di_number:          6               [19] di_gen:            3232612811
  109. [3] di_size:    0x0000000006d4a400      [20] di_ixpxd.len:      4
  110. [4] di_nblocks: 0x0000000000006d4b      [21] di_ixpxd.addr1:    0x00
  111. [5] di_nlink:           1               [22] di_ixpxd.addr2:    0x00000021
  112. [6] di_mode:            0x000081a4           di_ixpxd.address:  33
  113.                 0100644 -rw-r--r--      [24] di_uid:            0
  114.                                         [25] di_gid:            0
  115. [9] di_atime.tj_nsec:   0x36cc62c0      [26] di_atime.tj_sec:0x00000000000ac108
  116. [10] di_ctime.tj_nsec:  0x1308e36b      [27] di_ctime.tj_sec:0x00000000000ac18a
  117. [11] di_mtime.tj_nsec:  0x2ae097d5      [28] di_mtime.tj_sec:0x00000000000ac122
  118. [12] di_otime.tj_nsec:  0x36cc62c0      [29] di_otime.tj_sec:0x00000000000ac108
  119. [13] di_ea.flag:        0x00            [30] di_ea.len:         0
  120.      EAv1                               [31] di_ea.addr1:       0x00
  121. [15] di_ea.nEntry:      0x00            [32] di_ea.addr2:       0x00000000
  122. [16] di_ea.type:        0x0000               di_ea.address:     0
  123.                                         [34] di_ea.nblocks:     0
  124. change_inode: [m]odify, [e]a, [t]ree, or e[x]it > 重要操作
  125. > 重要操作
  126. [43p150:root:/] fsck -y /test2



  127. The current volume is: /dev/test2lv
  128. Primary superblock is valid.
  129. J2_LOGREDO:log redo processing for /dev/test2lv
  130. Primary superblock is valid.
  131. *** Phase 1 - Initial inode scan
  132. *** Phase 2 - Process remaining directories
  133. *** Phase 3 - Process remaining files
  134. *** Phase 4 - Check and repair inode allocation map
  135. File system inode map is corrupt (FIXED)
  136. Superblock marked dirty because repairs are about to be written.
  137. *** Phase 5 - Check and repair block allocation map
  138. Block allocation map is corrupt (FIXED)
  139. Inodes not connected to the root directory
  140.         tree have been detected.  Will reconnect.
  141. File system is clean.
  142. Superblock is marked dirty (FIXED)
  143. All observed inconsistencies have been repaired.
  144. [43p150:root:/] mount /test2
  145. [43p150:root:/] cd test2
  146. [43p150:root:/test2] l
  147. total 100488
  148. -rw-r--r--   1 root     system     51449856 Jan 09 11:44 aaa
  149. drwxr-xr-x   2 root     system          256 Jan 09 11:05 lost+found
  150. [43p150:root:/test2] l l*
  151. total 324320
  152. -rw-r--r--   1 root     system     51449856 Jan 09 11:33 5
  153. -rw-r--r--   1 root     system    114598912 Jan 09 11:46 6
  154. [43p150:root:/test2] sum l*/6
  155. sum /setp/bbb
  156. 30070 111913 lost+found/6
  157. [43p150:root:/test2] sum /setup/bbb
  158. 30070 111913 /setup/bbb
  159. [43p150:root:/test2]
复制代码

[ 本帖最后由 larryh 于 2009-1-6 18:17 编辑 ]

作者: larryh   发布时间: 2009-01-06

又反复测试了几遍,发现rm前如果执行过sync,就能恢复,否则就是空文件。

作者: beginner-bj   发布时间: 2009-01-06

咱们测试的机器都是没跑应用的,内存空闲得一塌糊涂,加上测试文件又小,sync间隔一般也是缺省的,除非运气好刚好在rm之前离上次sync 60秒,否则肯定那文件没真正写到硬盘,呵呵

作者: larryh   发布时间: 2009-01-06

没错,是和这个进程“/usr/sbin/syncd 60 ”有关。最多等1分钟以后再rm,也可以。

作者: beginner-bj   发布时间: 2009-01-06

买了 虽然还不是很明白 但是迟早能明白!

作者: zmd123   发布时间: 2009-01-06

唉,都什么世道,这种东西收5个小钱也有人嫌贵,好歹也是我一个字一个字敲出来的,不说多少年前我花了多少时间去一个byte一个byte研究的,IBM可没有资料写这些。下次有兴趣写如何在jfs2中恢复文件名等等,俺要坚定不移的收金条。 真不是为了钱,要不我根本不会发这篇了,只是希望国内的小同学们(老同学就免了)也能够知道尊重人的劳动,天下没有免费的午餐。Good Luck.

作者: closer0206   发布时间: 2009-01-06

projects 好人啊 呵呵

作者: projects   发布时间: 2009-01-06

原帖由 larryh 于 2009-1-6 17:29 发表
咱们测试的机器都是没跑应用的,内存空闲得一塌糊涂,加上测试文件又小,sync间隔一般也是缺省的,除非运气好刚好在rm之前离上次sync 60秒,否则肯定那文件没真正写到硬盘,呵呵


这也就是为什么IBM的资料中,无论是snapshot, 还是log回滚都要求针对committed操作,否则无能为力。而且实际上在jfs2中还有个in-core i-node和block i-node,这类似于VGDA/VGSA,in-core i-node是block i-node的copy或buffer。

作者: myciciy   发布时间: 2009-01-06

买了买了,拜读projects的大作哦。

作者: projects   发布时间: 2009-01-06

恩,这个很不错。
最近在研究vgda的layout,等告一段落后再通过fsdb来研究jfs2的layout。

作者: diyxyj   发布时间: 2009-01-06

原帖由 projects 于 2009-1-6 22:47 发表


这也就是为什么IBM的资料中,无论是snapshot, 还是log回滚都要求针对committed操作,否则无能为力。而且实际上在jfs2中还有个in-core i-node和block i-node,这类似于VGDA/VGSA,in-core i-node是block i-n ...



看到回滚,committed,发现oracle的ASSM和文件系统差不多啊,都是管理数据如何存放

redo相当于log,不过oracle有undo,对数据的恢复功能更强大

[ 本帖最后由 tenyears 于 2009-1-6 23:30 编辑 ]

作者: mike79   发布时间: 2009-01-06

先down下来

这几天忙,抽空试验下

作者: tenyears   发布时间: 2009-01-06

原帖由 tenyears 于 2009-1-6 23:18 发表



看到回滚,committed,发现oracle的ASSM和文件系统差不多啊

redo相当于log,不过oracle有undo,对数据的恢复功能更强大


JFS无论1、2都是是 Journaled File System, Journaled就是log的意思, 作为文件系统也大可以把log关掉。logredo在JFS中类似于oracle中的undo(概念有所不同),但通常由fsck来调用,而不是人为操作以减少失误。

作者: lzolder   发布时间: 2009-01-06

现在最大的问题就是:恢复文件时,要umount文件系统。这样假如/下有个文件被删了的话就不好恢复了。

本来想明天到公司用CD启动试一把,但还是算了吧,因为最近不能把太多的精力放到AIX上了,所以有兴趣的兄弟可以试试。

另外插个题外话:发现所有本地的文件系统的INODE都是2,没想明白是怎么回事。

作者: projects   发布时间: 2009-01-06

原帖由 beginner-bj 于 2009-1-7 00:18 发表
现在最大的问题就是:恢复文件时,要umount文件系统。这样假如/下有个文件被删了的话就不好恢复了。

本来想明天到公司用CD启动试一把,但还是算了吧,因为最近不能把太多的精力放到AIX上了,所以有兴趣的兄弟 ...


good thought。

因为一旦rm, 文件系统的directory i-node entry, inode, block都被释放了,umount 是为了防止系统或其他用户对该fs的操作造成数据覆盖。对于重要的文件,甚至乎把机器挂掉都在所不惜。

用CD倒是个好玩的事,不过机器启动一次都要好长时间,玩起来挺费时的。

2是个相对i-node位置或者逻辑位置,每个文件系统都有自己的2,3,4,5.....等等,这样可以扩大文件系统容量,在jfs中的2号(第三个)inode是这个fs的根目录inode, fsdb /filesystem 的时候都是从这个文件系统头开始的,所以一般看到的都是2。你大可以在fs umount的情况下ls -id /mountpoint. 这时的inode number 是不同的-----增加了偏移量,可以换算到实际物理位置。

[ 本帖最后由 projects 于 2009-1-7 09:42 编辑 ]

作者: beginner-bj   发布时间: 2009-01-07

BTW, If you are performing this operation on a filesystem while in maintenance mode (CD boot), do NOT use option 1 when asked on how to mount the filesystems. ALWAYS use option 2, which specifies to start a shell before mounting the filesystems. Otherwise, the system will force a fsck -y on the filesystem and delete your files.

作者: projects   发布时间: 2009-01-07

花了钱的东西才会认真去看

作者: projects   发布时间: 2009-01-07

热门下载

更多