10年後の2010 CentOSシステムの最新システムで作成されたext4パーティションをどのようにマウントしますか?

10年後の2010 CentOSシステムの最新システムで作成されたext4パーティションをどのようにマウントしますか?

大量のデータを本番サーバーに転送するために、Ubuntu 18.04.4 LTSにext4パーティションを作成しました。サーバーはカーネル2.6.32でCentOS 6.10を実行しています。これExt4操作ガイド「Ext4はLinux 2.6.28で完全に機能し、安定したファイルシステムとしてリリースされました」と示されているので、パーティションをマウントできるようです。

ただし、サーバーにパーティションをマウントしようとすると、次のエラーが発生します。

localhost kernel: EXT4-fs (sdd1): couldn't mount RDWR because of unsupported optional features (400)
localhost kernel: JBD: Unrecognised features on journal
localhost kernel: EXT4-fs (sdd1): error loading journal

サーバーへのフルルートアクセス権がありますが、実行中のソフトウェアとの互換性の問題により、OSコンポーネントをアップグレードできません。

初期のインターネット検索では、問題がメタデータチェックサム機能によるものであることを示唆していたため、最新のe2fsprogs(1.46-WIP(2020年3月20日))をダウンロードしてコンパイルし、それを使用して機能を無効にしました。

sudo /home/user/bin/e2fsck -f /dev/sdd1
sudo /home/user/bin/tune2fs -O ^metadata_csum /dev/sdd1

ただし、「サポートされていないオプション機能(400)」メッセージは受信されなくなりますが、パーティションはまだマウントされていません。

$ sudo mount /dev/sdd1 /mnt/disk1
mount: wrong fs type, bad option, bad superblock on /dev/sdd1,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

$ sudo tail /var/log/messages
Jul 20 08:01:21 localhost kernel: JBD: Unrecognised features on journal
Jul 20 08:01:21 localhost kernel: EXT4-fs (sdd1): error loading journal

サーバーを再起動したり、システムソフトウェアを変更せずにこのパーティションのデータにアクセスする方法はありますか? 2つのオプションがあるようです。マウントパーティションをそのまま使用するか(FUSEを使用するか、独自のmount.ext4バイナリをコンパイルする)、une2fsを使用して互換性のない残りの機能を削除します(この機能が何であるかをどうやって知ることができますか?)。

コロナ19ロックのために、誰かがサーバーからドライブを取り外し、別のコンピュータに接続するまで2〜3週間待つ必要があることに言及したいと思います。より迅速に実装できるソリューションを見つける必要があります。

答え1

まず走ってみてください

sudo e2fsck -f -v -C 0 -t /dev/sdd1

この機能の削除を完了するには、e2fsckを実行する必要があるかもしれません。

それでも役に立たない場合は、ログを削除して再生成してみてください。

sudo /home/user/bin/tune2fs -O '^has_journal,^64bit' /dev/sdd1
sudo /home/user/bin/resize2fs -s /dev/sdd1
sudo /home/user/bin/tune2fs -j /dev/sdd1

最後に、まだマウントされていない場合と使用されているフラグを比較し、sudo dumpe2fs /dev/existing_parition既存sudo dumpe2fs /dev/sdd1のパーティションに存在しないフラグを削除します。

後で参照できるように、新しいシステムではなく古いシステムでファイルシステムをフォーマットする場合は、新しいカーネルが常に機能する必要があります。新しいシステムでフォーマットする必要がある場合)をmke2fs -t ext4 -O '^metadata_csum,^64bit'使用するmke2fs -t ext3

答え2

最新のシステムから grub ブートローダを回復するには、以前の回復環境 (~2014?) を使用する必要があり、同じ問題が発生しました。私にとっての解決策は、ログなしでファイルシステムをマウントすることでした:

# mount -o ro,noload /dev/sda1 /mnt

mount(8)「noload」パラメータは(IMO正確に)文書化されていないようですが、マニュアルページに表示されます--read-only

   -r, --read-only
          Mount the filesystem read-only.  A synonym is -o ro.

          Note that, depending on the filesystem type, state
          and kernel behavior, the system may still write to the device.
          For example, ext3 and ext4 will replay the journal if the
          filesystem is dirty.  To prevent this kind of write access,
          you may want to mount an ext3 or ext4 filesystem with the
 [look->] ro,noload mount options or set the block device itself to
          read-only mode, see the blockdev(8) command.

読み書きをマウントすることもできますが、読み取り専用のみが必要です。

関連情報