RAID6은 EXT4-fs를 마운트할 수 없습니다: 형상 오류: 블록 수가 장치 크기를 초과합니다.

RAID6은 EXT4-fs를 마운트할 수 없습니다: 형상 오류: 블록 수가 장치 크기를 초과합니다.

내 서버에서는 SSD를 부팅 드라이브로 사용하고 RAID6 설정의 6TB HDD 11개를 추가 스토리지로 사용합니다. 그러나 마더보드에 몇 가지 문제가 발생한 후 마더보드를 SATA 포트가 4개만 있는 마더보드로 교체하여 RAID6 설정 크기를 11개 드라이브에서 4개 드라이브로 줄였습니다. 어레이에 저장되는 실제 데이터는 6TB 미만이므로 줄어든 저장 공간에 데이터가 들어갈 수 있어야 한다.

나는 배열을 축소하기 위해 다음 페이지의 지침을 사용한 것 같습니다. 너무 오래 전 일이기 때문에 이것이 사용된 페이지나 지침이었는지, 세부 사항도 많이 기억나지 않습니다.

사용하지 않은 7개의 드라이브에서 슈퍼블록을 0으로 설정한 것 같습니다 sudo mdadm --zero-superblock.

사용하려는 드라이브 4개에 대해 마운트할 수 없습니다. 나는 어레이에서 파티션을 사용하고 있다고 생각하지 않습니다.

sudo mount /dev/md127 /mnt/md127
mount: /mnt/md127: wrong fs type, bad option, bad superblock on /dev/md127, missing codepage or helper program, or other error.

에서 /var/log/syslog:

kernel: [ 1894.040670] EXT4-fs (md127): bad geometry: block count 13185878400 exceeds size of device (2930195200 blocks)

13185878400 / 2930195200== 때문에 파일 시스템 4.59 / 2축소하는 등의 문제가 있다고 생각합니다. RAID6에는 2개의 예비 드라이브가 있으므로 11개(활성 드라이브 9개, 예비 드라이브 2개)에서 11개(활성 드라이브 2개, 예비 드라이브 9개)로 변경됩니까? 4개(활성 2개, 대기 2개)로 이동하면 블록 수가 장치 크기의 정확한 배수보다 훨씬 높은 이유를 설명할 수 있습니다 4.5.

장치의 추가 정보:

sudo mdadm --detail /dev/md127
/dev/md127:
           Version : 1.2
     Creation Time : Wed Nov 24 22:28:38 2021
        Raid Level : raid6
        Array Size : 11720780800 (10.92 TiB 12.00 TB)
     Used Dev Size : 5860390400 (5.46 TiB 6.00 TB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

     Intent Bitmap : Internal

       Update Time : Sun Apr  9 04:57:29 2023
             State : clean 
    Active Devices : 4
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 0

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : bitmap

              Name : nao0:0  (local to host nao0)
              UUID : ffff85d2:b7936b45:f19fc1ba:29c7b438
            Events : 199564

    Number   Major   Minor   RaidDevice State
       9       8       16        0      active sync   /dev/sdb
       1       8       48        1      active sync   /dev/sdd
       2       8       32        2      active sync   /dev/sdc
      10       8        0        3      active sync   /dev/sda
sudo mdadm --examine /dev/sd[a-d]
/dev/sda:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x1
     Array UUID : ffff85d2:b7936b45:f19fc1ba:29c7b438
           Name : nao0:0  (local to host nao0)
  Creation Time : Wed Nov 24 22:28:38 2021
     Raid Level : raid6
   Raid Devices : 4

 Avail Dev Size : 11720780976 sectors (5.46 TiB 6.00 TB)
     Array Size : 11720780800 KiB (10.92 TiB 12.00 TB)
  Used Dev Size : 11720780800 sectors (5.46 TiB 6.00 TB)
    Data Offset : 264192 sectors
   Super Offset : 8 sectors
   Unused Space : before=264112 sectors, after=176 sectors
          State : clean
    Device UUID : 07f76b7f:f4818c5a:3f0d761d:b2d0ba79

Internal Bitmap : 8 sectors from superblock
    Update Time : Sun Apr  9 04:57:29 2023
  Bad Block Log : 512 entries available at offset 32 sectors
       Checksum : 914741c4 - correct
         Events : 199564

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 3
   Array State : AAAA ('A' == active, '.' == missing, 'R' == replacing)
/dev/sdb:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x1
     Array UUID : ffff85d2:b7936b45:f19fc1ba:29c7b438
           Name : nao0:0  (local to host nao0)
  Creation Time : Wed Nov 24 22:28:38 2021
     Raid Level : raid6
   Raid Devices : 4

 Avail Dev Size : 11720780976 sectors (5.46 TiB 6.00 TB)
     Array Size : 11720780800 KiB (10.92 TiB 12.00 TB)
  Used Dev Size : 11720780800 sectors (5.46 TiB 6.00 TB)
    Data Offset : 264192 sectors
   Super Offset : 8 sectors
   Unused Space : before=264112 sectors, after=176 sectors
          State : clean
    Device UUID : 3b51a0c9:b9f4f844:68d267ed:03892b0d

Internal Bitmap : 8 sectors from superblock
    Update Time : Sun Apr  9 04:57:29 2023
  Bad Block Log : 512 entries available at offset 32 sectors
       Checksum : 294a8c37 - correct
         Events : 199564

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 0
   Array State : AAAA ('A' == active, '.' == missing, 'R' == replacing)
/dev/sdc:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x1
     Array UUID : ffff85d2:b7936b45:f19fc1ba:29c7b438
           Name : nao0:0  (local to host nao0)
  Creation Time : Wed Nov 24 22:28:38 2021
     Raid Level : raid6
   Raid Devices : 4

 Avail Dev Size : 11720780976 sectors (5.46 TiB 6.00 TB)
     Array Size : 11720780800 KiB (10.92 TiB 12.00 TB)
  Used Dev Size : 11720780800 sectors (5.46 TiB 6.00 TB)
    Data Offset : 264192 sectors
   Super Offset : 8 sectors
   Unused Space : before=264112 sectors, after=176 sectors
          State : clean
    Device UUID : 0fcca5ee:605740dc:1726070d:0cef3b39

Internal Bitmap : 8 sectors from superblock
    Update Time : Sun Apr  9 04:57:29 2023
  Bad Block Log : 512 entries available at offset 32 sectors
       Checksum : 31472363 - correct
         Events : 199564

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 2
   Array State : AAAA ('A' == active, '.' == missing, 'R' == replacing)
/dev/sdd:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x1
     Array UUID : ffff85d2:b7936b45:f19fc1ba:29c7b438
           Name : nao0:0  (local to host nao0)
  Creation Time : Wed Nov 24 22:28:38 2021
     Raid Level : raid6
   Raid Devices : 4

 Avail Dev Size : 11720780976 sectors (5.46 TiB 6.00 TB)
     Array Size : 11720780800 KiB (10.92 TiB 12.00 TB)
  Used Dev Size : 11720780800 sectors (5.46 TiB 6.00 TB)
    Data Offset : 264192 sectors
   Super Offset : 8 sectors
   Unused Space : before=264112 sectors, after=176 sectors
          State : clean
    Device UUID : e1912abb:ba98a568:8effaa66:c1440bd8

Internal Bitmap : 8 sectors from superblock
    Update Time : Sun Apr  9 04:57:29 2023
  Bad Block Log : 512 entries available at offset 32 sectors
       Checksum : 82a459ba - correct
         Events : 199564

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 1
   Array State : AAAA ('A' == active, '.' == missing, 'R' == replacing)

fsck온라인에서 검색한 후 , e2fsck및 를 사용해 resize2fs문제를 해결해 보았습니다. 그러나 이 작업을 시도하면서 아무런 진전이 없었으며 실수로 디스크의 데이터를 변경하여 문제를 더욱 악화시켰을 수도 있습니다.

그리고 resize2fs,

sudo resize2fs /dev/md127
resize2fs 1.46.5 (30-Dec-2021)
Please run 'e2fsck -f /dev/md127' first.

resize2fs나는 그것으로 실제로 아무것도 할 수 없기 때문에 e2fsck그것을 사용하면서 많은 오류를 겪고 있습니다 . 수천개의 오류로 인해 프로그램이 끝나기도 전에 그만뒀습니다.

sudo e2fsck -f /dev/md127
e2fsck 1.46.5 (30-Dec-2021)
The filesystem size (according to the superblock) is 13185878400 blocks
The physical size of the device is 2930195200 blocks
Either the superblock or the partition table is likely to be corrupt!
Abort<y>? no
Pass 1: Checking inodes, blocks, and sizes
Error reading block 3401580576 (Invalid argument) while getting next inode from scan.  Ignore error<y>? yes
Force rewrite<y>? yes
Error reading block 3401580577 (Invalid argument) while getting next inode from scan.  Ignore error<y>? yes
Force rewrite<y>? yes
Error reading block 3401580578 (Invalid argument) while getting next inode from scan.  Ignore error<y>? yes
Force rewrite<y>? yes
Error reading block 3401580579 (Invalid argument) while getting next inode from scan.  Ignore error<y>? yes
Force rewrite<y>? yes
Error reading block 3401580580 (Invalid argument) while getting next inode from scan.  Ignore error<y>? yes
Force rewrite<y>? yes
Error reading block 3401580581 (Invalid argument) while getting next inode from scan.  Ignore error<y>? yes
Force rewrite<y>? yes
Error reading block 3401580582 (Invalid argument) while getting next inode from scan.  Ignore error<y>? yes
Force rewrite<y>?

내 가설은 보고된 드라이브 크기에 약간의 불일치가 있을 수 있다는 것입니다. RAID에는 파티션이나 LVM 볼륨이 없는 것 같습니다.

sudo fdisk -l
...

Disk /dev/sda: 5.46 TiB, 6001175126016 bytes, 11721045168 sectors
Disk model: WDC WD60EZAZ-00S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes


Disk /dev/sdb: 5.46 TiB, 6001175126016 bytes, 11721045168 sectors
Disk model: WDC WD60EZAZ-00S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes


Disk /dev/sdc: 5.46 TiB, 6001175126016 bytes, 11721045168 sectors
Disk model: WDC WD60EZAZ-00S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes


Disk /dev/sdd: 5.46 TiB, 6001175126016 bytes, 11721045168 sectors
Disk model: WDC WD60EZAZ-00S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes


Disk /dev/md127: 10.92 TiB, 12002079539200 bytes, 23441561600 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 524288 bytes / 1048576 bytes

현재 사용 중인 4개 드라이브의 데이터는 fsck/changed 될 수도 있고 그렇지 않을 수도 e2fsck있지만, 데이터는 0으로 설정된 슈퍼블록이 있는 사용되지 않는 다른 7개 드라이브에도 있어야 합니다. 나에게는 데이터가 어떤 드라이브에서 복구되는지는 중요하지 않으므로 모든 드라이브 그룹에서 복구하기 위한 효과적인 솔루션을 높이 평가할 것입니다!

추가 정보가 필요한 경우 기꺼이 제공해 드리겠습니다.

답변1

ext4 파일 시스템은 블록 장치(12TB 블록 장치의 54TB 파일 시스템)보다 훨씬 큽니다. e2fsck그리고 resize2fs이런 상황에서는 매우 비협조적일 수 있습니다. 파일 시스템은 큰 덩어리를 잃는 것을 싫어합니다.

debugfs데이터를 신속하게 복구하려면 재해 모드에서 행운을 시험해 보세요.

# debugfs -c /dev/md127
debugfs 1.47.0 (5-Feb-2023)
debugfs: ls -l
| (this should list some files)
| (damaged files usually show with 0 bytes and 1-Jan-1970 timestamp)
debugfs: rdump / /some/recovery/dir/

이렇게 하면 파일을 복사해야 하지만(복구 저장소로 관련되지 않은 HDD 사용) 일부 파일은 유사 Attempt to read block from filesystem resulted in short read하거나 유사한 오류를 일으킬 수 있습니다.


실제로 파일 시스템을 복구하려면 일반적으로 원래 장치 크기를 복원하고 거기에서 이동하는 것이 가장 좋습니다. 경우에 따라 블록 장치 축소를 되돌릴 수 있습니다. 그러나 귀하의 경우 이는 되돌릴 수 없습니다.

RAID를 11개 장치로 늘릴 수 있지만 드라이브 순서가 올바른 경우에도 손실된 데이터는 복구되지 않으며 나머지 디스크에 남아 있을 수 있는 데이터를 덮어쓰게 됩니다. mdadm은 모든 성장 작업에서 오프셋을 이동하므로 레이아웃이 완전히 잘못됩니다.

따라서 컷오프 지점을 넘어서는 모든 내용은 손실됩니다.

또한 모든 데이터를 다시 구성하는 데 시간이 오래 걸리며 결과는 가상 드라이브 용량(루프 장치 및 dm-linear 또는 LVM 씬 볼륨 등의 경우 모두 0)을 추가하는 것보다 나을 것이 없습니다.


최상의 시나리오는 다시 생성하여 부분적으로 되돌릴 수 있습니다.(기록 중 복사 오버레이에서 mdadm --create 사용)원래 11개 드라이브 RAID 6에는 4개 드라이브가 없습니다(드라이브가 완전히 0이 되었기 때문에).

그러나 기껏해야 RAID 6이 복구할 수 있는 것보다 많은 간격이 있는 연결이 끊어진 데이터 블록을 제공할 것입니다. 더 이상 메타데이터가 없기 때문에 더욱 복잡합니다(현재 레이드에서 변경된 원본 오프셋과 드라이브 순서를 알아야 함).

그렇게 할 수 있다면 현재 RAID(0-12TB)와 복구 RAID(12TB-54TB)를 dm-linear(모두 쓰기 중 복사 오버레이 위에 있음)와 연결하고 무엇을 찾을 수 있는지 확인할 수 있습니다.

하지만 이 과정은 복잡하고 성공 확률도 매우 낮다. 축소 작업으로 예약된 12TB 외부에 저장된 데이터의 경우 블록/스트라이프 파일보다 작은 일부 데이터는 살아남을 수 있지만 큰 파일은 완전히 손상됩니다.

관련 정보