大量のデータを本番サーバーに転送するために、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