drjones
作者drjones·2013-09-12 16:48
软件开发工程师·江中集团

222教材141页的Super block corrupted and corrupted customized ODM database

字数 2847阅读 3935评论 0赞 1
dd count=1 bs=4k skip=15 seek=8 if=/dev/LVName of=/dev/LVName -- JFS2
seek就是去掉8个,不包括0,没有0这个概念
这个还是说明了seek在备份的时候,是没有一点关系的# dd if=1.txt of=1.bak bs=1 count=1 seek=0
以下答案可知seek=0和seek=1的情况下都是把位置放在第一个的
# ls -l
total 24
-rw-r--r--    1 root     system            2 Sep 12 22:50 1.txt
-rw-r--r--    1 root     system            3 Sep 12 22:55 2.txt
-rw-r--r--    1 root     system            4 Sep 12 22:55 3.txt
drwxr-xr-x    2 root     system          256 Sep 12 16:39 lost+found
# dd if=1.txt of=1.bak
0+1 records in.
0+1 records out.
# dd if=2.txt of=1.bak bs=1 seek=1
3+0 records in.
3+0 records out.
# dd if=3.txt of=1.bak bs=1 seek=3
4+0 records in.
4+0 records out.
# cat 1.bak
122333
1+0 records in.
1+0 records out.
# ls -l
total 32
-rw-r--r--    1 root     system            1 Sep 12 22:51 1.bak
-rw-r--r--    1 root     system            2 Sep 12 22:50 1.txt
-rw-r--r--    1 root     system            2 Sep 12 22:50 2.txt
-rw-r--r--    1 root     system            2 Sep 12 22:50 3.txt
drwxr-xr-x    2 root     system          256 Sep 12 16:39 lost+found
# cat 1.bak
1# rm 1.bak 
# dd if=1.txt of=1.bak bs=1 count=1 seek=1
1+0 records in.
1+0 records out.
# cat 1.bak
1# dd if=1.txt of=1.bak bs=1 count=1 seek=2
1+0 records in.
1+0 records out.
# cat 1.bak
11#

# dd if=1.txt of=1.bak count=1 bs=1 seek=100
1+0 records in.
1+0 records out.
# cat 1.bak
1# rm 1.bak
# dd if=1.txt of=1.bak count=1 bs=1 skip=10
1+0 records in.
1+0 records out.

dd if=/dev/zero of=/dev/lv1 count=32 bs=4k seek=1这个命令是能破坏的
# dd if=/dev/zero of=/dev/lv1 count=16 bs=4k seek=1这个也能破坏
dd if=/dev/zero of=/dev/lv1 count=8 bs=4k seek=1也会破坏
fsck: 0507-020 Invalid magic number in the primary superblock.
Secondary superblock is valid.
Primary superblock is corrupt.
; FIX? y
会提示以上这个


所以JFS2主的应该是在第8个位置,备份的在15
1.If fsck indicates that block 8 is corrupted,the super block for the file system is corrupted and needs to be repaired.Enter the command:
dd count=1 bs=4k skip=31 seek=1 if=/dev/hdn of=/dev/hdn
首先,模拟这个错误,1位置的超级块损坏
dd if=/dev/zero of=/dev/lv1 bs=4k count=4096 这个就有用
dd if=/dev/zero of=/dev/lv1 bs=4k count=256  这个不行


dd count=1 bs=4k skip=31 seek=1 if=/dev/LVName of=/dev/LVName -- JFS
dd count=1 bs=4k skip=15 seek=8 if=/dev/LVName of=/dev/LVName -- JFS2

明白了,因为在jfs中,超级块的大小是4096字节,偏移量是4096字节;而在jfs2中,超级块的大小仍是4096字节,但是超级块在逻辑卷中的偏移量是32768字节。
所以上面那个seek是8,感觉又不像,这句的理解像是跳过31个后,这找这一个
这个不是8块,是第8个的意思
jfs2就是跳过15个
按理来说count已经包括了一个1数字了
man里面的翻译
seek指定的输出文件,寻求从开始记数字变量前复制记录
skip跳过指定跳过输入块值输入块在开始复制

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

1

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关资料

X社区推广