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

서버를 다시 시작하거나 시스템 소프트웨어를 변경하지 않고 이 파티션의 데이터에 액세스할 수 있는 방법이 있습니까? 두 가지 옵션이 있는 것 같습니다. 마운트 파티션을 있는 그대로 사용하거나(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.

읽기-쓰기를 마운트할 수도 있지만 읽기 전용만 필요합니다.

관련 정보