如何挂载在最近系统上创建的 ext4 分区,在十年前的 2010 CentOS 系统上?

nic*_*ree 2 linux ext4

我在 Ubuntu 18.04.4 LTS 上创建了一个 ext4 分区,以便将大量数据传输到生产服务器。服务器运行 CentOS 6.10,内核为 2.6.32。该的ext4 HOWTO规定“的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
Run Code Online (Sandbox Code Playgroud)

我对服务器有完全的 root 访问权限,但由于与正在运行的软件的兼容性问题,我无法升级任何操作系统组件。

最初的谷歌搜索表明问题是由元数据校验和功能引起的,所以我下载并编译了最新的 e2fsprogs (1.46-WIP (20-Mar-2020)) 并使用它们来禁用该功能:

sudo /home/user/bin/e2fsck -f /dev/sdd1
sudo /home/user/bin/tune2fs -O ^metadata_csum /dev/sdd1
Run Code Online (Sandbox Code Playgroud)

但是分区仍然无法挂载,尽管我不再收到“不支持的可选功能(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
Run Code Online (Sandbox Code Playgroud)

有什么方法可以在不重新启动服务器或更改任何系统软件的情况下访问此分区上的数据吗?似乎有两种选择:要么按原样安装分区(使用 FUSE,或编译我自己的 mount.ext4 二进制文件),要么使用 tune2fs 删除剩余的不兼容功能(如何找出它们是什么?)

我应该提到,由于 COVID-19 锁定措施,需要两到三周的时间等待有人从服务器上拔下驱动器并将其插入另一台机器。我需要找到一个可以比这更快地实施的解决方案。

Art*_*nov 6

首先尝试运行

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
Run Code Online (Sandbox Code Playgroud)

最后,如果它仍然无法挂载,请比较用于sudo dumpe2fs /dev/existing_parition和的标志,sudo dumpe2fs /dev/sdd1并删除现有分区中不存在的标志。

为了将来参考,如果您在旧系统而不是新系统上格式化文件系统,则新内核应该始终可以使用它。如果您需要在新系统上格式化,您可以使用mke2fs -t ext4 -O '^metadata_csum,^64bit'来避免一些较新的功能(尽管这可能是一个移动目标),或者mke2fs -t ext3(尽管这可能会比 ext4 慢一些,但是非常安全兼容)。