`e2fsck`の `offset`オプション構文

`e2fsck`の `offset`オプション構文

存在するこの回答@psusiユーザーがe2fsckドキュメントに見つからない使用法を示しましたe2fsck /dev/sdc1?offset=2048

RAIDアレイのデバイスを確認するために使用しようとしています(手動の失敗と削除)。簡単に言うと、/dev/sdb2のオフセット67108864から始まるext4ファイルシステムがあることを知っていますが、正しくマウント解除されていません。私は次のことを試しました(/dev/sdb2常に異なるテスト間で同じ内容に戻ります)。

  1. 実行が正常に機能し、それを使用して5つの孤立したinodeが削除され、ファイルシステムが完全に復元されマウントされているmount /dev/sdb2 -o loop,offset=67108864 /tmp/mntことがわかります。dmesg | tail

    EXT4-fs: 5 orphan inodes deleted
    EXT4-fs: recovery complete
    EXT4-fs: mounted filesystem with ordered data mode. Opts: (null)
    
  2. 同様にlosetup /dev/loop0 --offset 67108864 /dev/sdb2 && e2fsck -n /dev/loop0:

    root: recovering journal
    root: Clearing orphaned inode 1179687 (uid=1000, gid=1000, mode=0100600, size=16384)
    root: Clearing orphaned inode 1179686 (uid=1000, gid=1000, mode=0100600, size=16384)
    root: Clearing orphaned inode 1179685 (uid=1000, gid=1000, mode=0100600, size=32768)
    root: Clearing orphaned inode 1179684 (uid=1000, gid=1000, mode=0100600, size=32768)
    root: Clearing orphaned inode 1179683 (uid=1000, gid=1000, mode=0100600, size=65536)
    root: clean, 225936/4882432 files, 2664100/19514624 blocks
    
  3. e2fsck -p /dev/sdb2?offset=67108864私はこれが上記の方法(使用)と同じだと思いましたが、losetup次のような結果が得られます。

    root: recovering journal
    e2fsck: Bad magic number in super-block while trying to re-open root
    root: ********** WARNING: Filesystem still has errors **********
    

    e2fsckオフセットに誤った値(0)を入力すると、ファイルシステムが見つからないというエラーが発生するため、パーティションが見つかったと確信しています。また、e2fsck -p /dev/sdb2?offset=67108864方法 1 または 2 以降で使用する場合root: clean, ...

offset誰もがこのオプションに関するドキュメントを教えてくれるか、それがe2fsck正確に何をしているのか、そしてそれが与えられたオフセットを使ってループバックデバイスをインストールするのとどう違うのかを理解するのに役立つかもしれません。

ありがとうございます。

編集:追加情報。この動作を次のように再現できます。

dd if=/dev/zero of=/tmp/disk bs=1M count=100
mkfs -t ext4 -E offset=70000000 /tmp/disk
sudo mount -o loop,offset=70000000 /tmp/disk /mnt/
ps > /mnt/test
cp /tmp/disk /tmp/disk2
cp /tmp/disk2 /tmp/disk2.copy
sudo umount /mnt 
e2fsck -p /tmp/disk2?offset=70000000
# /tmp/disk2: recovering journal
# e2fsck: Bad magic number in super-block while trying to re-open /tmp/disk2
# /tmp/disk2: ********** WARNING: Filesystem still has errors **********
sudo mount -o loop,offset=70000000 /tmp/disk2.copy /mnt/
dmesg | tail
# [240760.866274] EXT4-fs (loop3): mounted filesystem with ordered data mode. Opts: (null)
# [240770.516865] EXT4-fs (loop3): recovery complete
# [240770.516869] EXT4-fs (loop3): mounted filesystem with ordered data mode. Opts: (null)
sudo umount /mnt
e2fsck -n /tmp/disk2?offset=70000000
# e2fsck 1.42.13 (17-May-2015)
# Warning: skipping journal recovery because doing a read-only filesystem check.
# /tmp/disk2: clean, 11/25688 files, 8896/102400 blocks
e2fsck -n /tmp/disk2.copy?offset=70000000
# e2fsck 1.42.13 (17-May-2015)
# /tmp/disk2.copy: clean, 11/25688 files, 8896/102400 blocks

ご覧のとおり、ファイルをマウントするとログが復元され、e2fsckはファイルシステムがクリーンであると報告されますが、e2fsck -pエラーが発生してログは復元されません。

これが役に立つ場合、2つのディスクイメージの違いは次のとおりです。

関連情報