Điểm:14

Unable to mount an XFS filesystem from Linux RAID6 array ("Log inconsistent")

lá cờ fr
Bob

First time poster - my apologies if I don't get the etiquette correct.

I have a ~200TB RAID6 array with 30 disks and I'm unable to mount it - I just get the message:

mount /dev/md125 /export/models
mount:/dev/md125: can't read superblock

If I run mdadm --detail on it, it shows as clean:

/dev/md125:
           Version : 1.2
     Creation Time : Wed Sep 13 15:09:40 2017
        Raid Level : raid6
        Array Size : 218789036032 (203.76 TiB 224.04 TB)
     Used Dev Size : 7813894144 (7.28 TiB 8.00 TB)
      Raid Devices : 30
     Total Devices : 30
       Persistence : Superblock is persistent

     Intent Bitmap : Internal

       Update Time : Fri May 20 23:54:52 2022
             State : clean
    Active Devices : 30
   Working Devices : 30
    Failed Devices : 0
     Spare Devices : 0

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : bitmap

              Name : localhost.localdomain:SW-RAID6
              UUID : f9b65f55:5f257add:1140ccc0:46ca6c19
            Events : 1152436

    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync   /dev/sda1
       1      65      161        1      active sync   /dev/sdaa1
       2      65      177        2      active sync   /dev/sdab1
       3      65      193        3      active sync   /dev/sdac1
       4      65      209        4      active sync   /dev/sdad1
       5       8       17        5      active sync   /dev/sdb1
       6       8       33        6      active sync   /dev/sdc1
       7       8       49        7      active sync   /dev/sdd1
       8       8       65        8      active sync   /dev/sde1
       9       8       81        9      active sync   /dev/sdf1
      10       8       97       10      active sync   /dev/sdg1
      11       8      113       11      active sync   /dev/sdh1
      12       8      129       12      active sync   /dev/sdi1
      13       8      145       13      active sync   /dev/sdj1
      14       8      161       14      active sync   /dev/sdk1
      15       8      177       15      active sync   /dev/sdl1
      16       8      193       16      active sync   /dev/sdm1
      17       8      209       17      active sync   /dev/sdn1
      18       8      225       18      active sync   /dev/sdo1
      19       8      241       19      active sync   /dev/sdp1
      20      65        1       20      active sync   /dev/sdq1
      21      65       17       21      active sync   /dev/sdr1
      22      65       33       22      active sync   /dev/sds1
      23      65       49       23      active sync   /dev/sdt1
      24      65       65       24      active sync   /dev/sdu1
      25      65       81       25      active sync   /dev/sdv1
      26      65       97       26      active sync   /dev/sdw1
      27      65      113       27      active sync   /dev/sdx1
      28      65      129       28      active sync   /dev/sdy1
      29      65      145       29      active sync   /dev/sdz1

cat /proc/stat shows:

[root@knox ~]# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md125 : active raid6 sdo1[18] sdh1[11] sdad1[4] sdd1[7] sdb1[5] sdi1[12] sdt1[23] sdr1[21] sdp1[19] sdx1[27] sdg1[10] sdn1[17] sdm1[16] sdab1[2] sdu1[24] sdl1[15] sde1[8] sdf1[9] sdw1[26] sdc1[6] sdq1[20] sdy1[28] sds1[22] sdv1[25] sdac1[3] sdz1[29] sdaa1[1] sda1[0] sdj1[13] sdk1[14]
      218789036032 blocks super 1.2 level 6, 512k chunk, algorithm 2 [30/30] [UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU]
      bitmap: 0/59 pages [0KB], 65536KB chunk

md126 : active raid1 sdae3[0] sdaf2[1]
      976832 blocks super 1.0 [2/2] [UU]
      bitmap: 0/1 pages [0KB], 65536KB chunk

md127 : active raid1 sdaf1[1] sdae1[0]
      100554752 blocks super 1.2 [2/2] [UU]
      bitmap: 1/1 pages [4KB], 65536KB chunk

unused devices: <none>

Examine on the individual devices also shows as healthy (I haven't included the results for them all because it would take up too much space but they're all the same as this one):

/dev/sda1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x1
     Array UUID : f9b65f55:5f257add:1140ccc0:46ca6c19
           Name : localhost.localdomain:SW-RAID6
  Creation Time : Wed Sep 13 15:09:40 2017
     Raid Level : raid6
   Raid Devices : 30

 Avail Dev Size : 15627788288 sectors (7.28 TiB 8.00 TB)
     Array Size : 218789036032 KiB (203.76 TiB 224.04 TB)
    Data Offset : 262144 sectors
   Super Offset : 8 sectors
   Unused Space : before=262056 sectors, after=0 sectors
          State : clean
    Device UUID : 917e739e:36fa7cf6:c618d73c:43fb7dec

Internal Bitmap : 8 sectors from superblock
    Update Time : Fri May 20 23:54:52 2022
  Bad Block Log : 512 entries available at offset 72 sectors
       Checksum : 2b5e9556 - correct
         Events : 1152436

         Layout : left-symmetric
     Chunk Size : 512K

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

The relevant entries in dmesg show:

[13297.001208] XFS (md125): Mounting V5 Filesystem
[13297.008854] XFS (md125): Log inconsistent (didn't find previous header)
[13297.008874] XFS (md125): failed to find log head
[13297.008878] XFS (md125): log mount/recovery failed: error -5
[13297.008934] XFS (md125): log mount failed

The background to this is rather long and involved but the short version is that I tried to grow the array with the addition of an additional disk and the operation got interrupted. I eventually got the array rebuilt by reshaping it back to the original 30 disks (which took a full two weeks!) but now it doesn't want to mount.

Unfortunately, it's not backed up (I mean to where fdo you back up 200TB?!?!). Nothing of value was supposed to be stored here but, human beings what they are, some critcal stuff has been stored there.

I've looked at xfs_repair but I'm not sure if I should run it on the RAID array (md125) or on the individual sd* devices.

Thanks

Update (the history behind it all):

The device is SuperMicro server running CentOS 7 (3.10.0-1160.11.1.e17.x86_64) with version 4.1 – 2018-10-01 of mdadm with 30 x 8TB disk in a RAID6 configuration. It also has boot and root on 2 RAID1 arrays – the RAID6 array being solely for data. It was runing out of space so we decided to add more drives to the array (it can hold a total of 45 drives).

Since the original disk in the array were 4kN drives and the supplied devices were 512e it was necessary to reformat them with sg_format to convert them (a procedure supported by Western Digital). I started with one disk as a test. Unfortunately the process was interrupted part way through so I restarted it and completed OK, sort of – it did convert the disk to 4096k but it did throw an I/O error or two but they didn’t seem too concerning and I figured, if there was a problem, it would show up in the next couple of steps. I’ve since discovered the dmesg log and that indicated that there were significantly more I/O errors than I thought.

Anyway, since sg_format appeared to complete OK, I moved onto the next stage which was to partition the disk with the following commands

     parted -a optimal /dev/sd<x>
     (parted) mklabel msdos
     (parted) mkpart primary 2048s 100% (need to check that the start is correct)
     (parted) align-check optimal 1 (verify alignment of partition 1)
     (parted) set 1 raid on (set the FLAG to RAID)
     (parted) print

I then added the new disk to the array:

     mdadm --add /dev/md125 /dev/sd<x>

And it completed without any problems.

I then proceeded to grow the array:

     mdadm --grow --raid-devices=31 --backup-file=/grow_md125.bak /dev/md125

I monitored this with cat /proc/mdstat and it showed that it was reshaping but the speed was 0K/sec and the reshape didn’t progress from 0%.

About 12 hours later, as the reshape hadn’t progressed from 0%, I looked at ways of aborting it, such as mdadm --stop /dev/md125 which didn't work so I ended up rebooting the server

The server came up in emergency mode.

I was able to log on as root OK but the RAID6 array ws stuck in the reshape state.

I then tried mdadm --assemble --update=revert-reshape --backup-file=/grow_md125.bak --verbose --uuid= f9b65f55:5f257add:1140ccc0:46ca6c19 /dev/md125 and this produced:

     mdadm: No super block found on /dev/sde (Expected magic a92b4efc, got <varying numbers>
     mdadm: No RAID super block on /dev/sde
     .
     .
     mdadm: /dev/sde1 is identified as a member of /dev/md125, slot 6
     .
     .
     mdadm: /dev/md125 has an active reshape - checking if critical section needs to be restored
     mdadm: No backup metadata on /grow_md125.back
     mdadm: Failed to find backup of critical section
     mdadm: Failed to restore critical section for reshape, sorry.

I tried difference variations on this including mdadm --assemble --invalid-backup --force all to no avail.

At this point I have also removed the suspect disk but this hasn't made any difference.

But the closest I've come to fixing this is running mdadm /dev/md125 --assemble --invalid-backup --backup-file=/grow_md125.bak --verbose /dev/sdc1 /dev/sdd1 ....... /dev/sdaf1 and this produces:

     mdadm: /dev/sdaf1 is identified as a member of /dev/md125, slot 4.
     mdadm: /dev/md125 has an active reshape - checking if critical section needs to be restored
     mdadm: No backup metadata on /grow_md125.back
     mdadm: Failed to find backup of critical section
     mdadm: continuing without restoring backup
     mdadm: added /dev/sdac1 to /dev/md125 as 1
     .
     .
     .
     mdadm: failed to RUN_ARRAY /dev/md125: Invalid argument

dmesg has this information:

     md: md125 stopped.
     md/raid:md125: reshape_position too early for auto-recovery - aborting.
     md: pers->run() failed ...
     md: md125 stopped.

Since all of the above, I booted from a rescue CD and was able to reshape it back to the original 30 devices and have booted back into the native installation (I did have to remark out that array from fstab to do so).

Nikita Kipriyanov avatar
lá cờ za
Sửa chữa nên được thực hiện trên RAID. Ngoài ra, nếu đó là *có thể phân vùng* (kiểm tra với `fdisk -l /dev/mdXXX` nếu có bất kỳ phân vùng nào), bạn nên làm việc với các phân vùng. Ngoài ra, **tránh các mảng lớn như vậy**. Tốt hơn là có "RAID60" ở dạng 3 trên 10 (3 mảng RAID6 gồm 10 thiết bị, mỗi thiết bị được xếp thành hàng với nhau). Có, bạn sẽ mất một số dung lượng, nhưng hoạt động quản lý sẽ không kéo dài hàng tuần. // Ngoài ra còn về lịch sử cách bạn vào trạng thái này, phần mở rộng bị gián đoạn và định hình lại. Nó dễ dàng có thể là dữ liệu không thể phục hồi bây giờ. Xin lỗi.
lá cờ fr
Bob
Cảm ơn @NikitaKipriyanov.. Nền tảng của tất cả những điều này rất dài. Có cách nào để đăng các mảng văn bản lớn không?
Nikita Kipriyanov avatar
lá cờ za
Giới hạn bài đăng ServerFault là 30k ký tự. Nếu dữ liệu của bạn lớn hơn thế, thì có lẽ đó không phải là lỗi dành cho ServerFault, bởi vì không chắc rằng câu hỏi đó sẽ có giá trị đối với bất kỳ ai khác. Ngoài ra, về RAID, đây là một chủ đề khá sâu và phổ biến và có nhiều câu hỏi như thế này về Serverfault, một số câu hỏi đã được trả lời, nhưng rất khó để vượt ra ngoài câu trả lời chung: tạo ảnh chụp nhanh và thử theo nhiều cách khác nhau hoặc tìm một chuyên gia được trả lương sẽ giải quyết trường hợp cụ thể của bạn.
lá cờ fr
Bob
Cảm ơn @NikitaKipriyanov. Tôi vừa chỉnh sửa bài đăng gốc của mình để bao gồm nền.
djdomi avatar
lá cờ za
Tôi đồng ý với nikitia, dừng mọi thay đổi, bắt chuyên gia
U. Windl avatar
lá cờ it
Trên "vì vậy tôi đã kết thúc việc khởi động lại máy chủ": sẽ là khôn ngoan nếu kiểm tra nhật ký hệ thống hoặc dmesg * trước khi * khởi động lại. Tôi đoán có rất nhiều lỗi I/O. Có thể cố gắng tháo lại đĩa bằng cách sử dụng `mdadm` sẽ thông minh hơn hoặc cố gắng "lỗi cứng" ổ đĩa bị hỏng thông qua các lệnh phần mềm (như trong https://stackoverflow.com/a/1365156/6607497).
Điểm:13
lá cờ za

Tôi muốn mở rộng các đề xuất ở trên.

Nó là cực kỳ đáng giá thiết lập thiết bị khối lớp phủ, do đó, bất kỳ thay đổi nào đối với hệ thống tệp mà bạn sẽ thực hiện để khôi phục nó sẽ không thay đổi bất kỳ điều gì trên RAID và điều này sẽ cho phép bạn đặt lại mọi thứ và bắt đầu lại từ đầu. Do đó, bạn sẽ có vô số lần thử, do đó giải phóng áp lực tâm lý.

Tôi đã làm điều đó với Qemu's qemu-nbd, Linux nbd.ko (Trình điều khiển thiết bị khối mạng) và tệp lớp phủ qcow2.

  1. Kết nối đĩa bổ sung nơi lớp phủ sẽ được lưu trữ. Tải trình điều khiển NBD. Gắn đĩa cào của bạn vào đâu đó:
modprobe nbd
gắn kết/dev/sdXXN/tmp/lớp phủ
  1. Tạo tệp lớp phủ qcow2:
qemu-img tạo -f qcow2 -b /dev/md125 -F raw /tmp/overlay/attempt1.qcow2
  1. Tạo một thiết bị khối từ tệp lớp phủ bằng cách sử dụng qemu-nbd:
qemu-nbd -c /dev/nbd0 /tmp/overlay/attempt1.qcow2

Bây giờ bạn có một /dev/nbd0 đó là một "bản sao có thể ghi" của mảng của bạn. Bạn có thể ghi vào thiết bị này một cách an toàn, mọi thay đổi sẽ được ghi vào /tmp/overlay/attempt1.qcow2. Vì vậy, ví dụ, khi bạn thử lời khuyên của @shodanshok, hãy áp dụng nó vào /dev/nbd0.

  1. Nếu bạn bị kẹt, hãy ngắt kết nối lớp phủ và xóa tệp lớp phủ
qemu-nbd -d /dev/nbd0
rm /tmp/overlay/attempt1.qcow2

Sau đó lặp lại mọi thứ từ bước (2). Ngoài ra, bạn có thể tạo bao nhiêu lớp phủ cũng như không gian và /dev/nbdX thiết bị cho phép (ví dụ: tôi có 16 thiết bị) và hoạt động song song. Tất nhiên, tất cả chúng nên sử dụng các hình ảnh lớp phủ khác nhau. Điều này hữu ích nếu bạn chỉ khôi phục một phần dữ liệu trong một số lần thử và phần dữ liệu khác trong một số lần thử khác.

Khi làm việc với các bản sao của hệ thống tệp XFS, hãy nhớ rằng mỗi bản sao của chúng phải có UUID riêng biệt.

Khi (nếu) tìm thấy đường dẫn khôi phục chính xác, nó có thể được áp dụng lại cho thiết bị thô, "khôi phục hệ thống tệp một cách không thể đảo ngược" hoặc bạn có thể thuê một số dung lượng, kết xuất dữ liệu đã khôi phục ở đó từ lớp phủ NBD, tạo lại RAID và hệ thống tệp và tải xuống trở lại.

Tôi biết, điều này là khó khăn và rườm rà. Đây là lý do tại sao các tổ chức khôi phục dữ liệu tính phí rất cao khi họ làm việc với RAID. Khi tự mình thử, bạn sẽ đồng ý rằng những tờ tiền này không bị thổi phồng như thoạt nhìn.

Và tôi nhắc lại điều đó một lần nữa, RAID6 của 30 thiết bị là một điều khó khăn. Tốt hơn nên có v.d. 3 mảng RAID6 gồm 10 ổ, mỗi mảng, sau đó sắp xếp chúng lại với nhau bằng cách sử dụng MD RAID 0 hoặc LVM phân lớp. Điều này sẽ giúp mọi thứ trở nên dễ quản lý hơn và các thao tác định hình lại/kiểm tra của bạn sẽ không mất hàng tuần để hoàn thành. Có, bạn thường xuyên kiểm tra tính nhất quán của RAID (xét kỹ), ít nhất là hai tháng một lần, phải không?

Cập nhật: Có thông tin có giá trị trong các bình luận, đáng để thêm vào đây.

  • Tôi nghi ngờ công cụ qemu sẽ có sẵn trong Synology DSM. Nhưng bạn có thể kết nối đĩa với PC thông thường bằng Linux và tiếp tục. Hoặc thử khởi động Synology từ mạng hoặc LiveUSB â NAS có thể kết nối 30 đĩa về cơ bản là một máy tính có thể gắn giá đỡ amd64 thông thường. â

  • @Mark đề xuất một cách khác để tạo lớp phủ:

@Bob, có các tùy chọn khác để tạo lớp phủ â Tôi đã sử dụng ổ USB và các bước tại https://raid.wiki.kernel.org/index.php/Recovering_a_damaged_RAID

Một cách hay, sử dụng khung Trình ánh xạ thiết bị, có khả năng có mặt trong DSM! Ngoài ra, nó có thể nhanh hơn cách tiếp cận của tôi. Nó là dmsetup lệnh người tạo thiết bị ảo với tệp lớp phủ thưa thớt. Tuy nhiên, vì bản thân mảng RAID có vẻ rõ ràng trong trường hợp của bạn và tất cả những gì chúng ta nói đến là sửa một hệ thống tệp, tôi khuyên bạn nên tạo lớp phủ của một mảng đã lắp ráp (/dev/md125) chứ không phải của các thành phần mảng riêng lẻ.

lá cờ fr
Bob
Cảm ơn @Nikita, kiểm tra với `fdisk -l /dev/md125` mang lại cho tôi: ```Đĩa /dev/md125: 224040.0 GB, 224039972896768 byte, 54697259008 cung Đơn vị = cung từ 1 * 4096 = 4096 byte Kích thước cung (logic/vật lý): 4096 byte / 4096 byte Kích thước I/O (tối thiểu/tối ưu): 524288 byte / 14680064 byte ```
lá cờ fr
Bob
`chia tay` trả về: ``` [root@knox ~]# chia tay GNU Parted 3.1 Sử dụng /dev/sda Chào mừng đến với GNU Parted! Nhập 'trợ giúp' để xem danh sách các lệnh. (đã chia tay) chọn/dev/md125 Sử dụng /dev/md125 (chia tay) in Lỗi: /dev/md125: nhãn đĩa không được nhận dạng Model: Mảng RAID phần mềm Linux (md) Đĩa /dev/md125: 224TB Kích thước cung (logic/vật lý): 4096B/4096B Bảng phân vùng: không xác định Cờ đĩa: ```
lá cờ fr
Bob
mô tả của bạn về quy trình lớp phủ nghe có vẻ hơi phức tạp và tôi có thể hiểu tại sao bạn nói rằng các tổ chức khôi phục dữ liệu xứng đáng với số tiền họ bỏ ra. Đối với câu hỏi của bạn về việc xóa, câu trả lời chắc chắn là có đối với NAS Synology nhỏ hơn của chúng tôi nhưng với con quái vật này, tôi rất xấu hổ khi thừa nhận rằng tôi không chắc chắn. Tôi không chắc liệu tôi có đề cập rằng Linux và Linux RAID đặc biệt là hơi mới đối với tôi hay không nên tôi không hiểu sâu về vấn đề này.
Nikita Kipriyanov avatar
lá cờ za
Tôi nghi ngờ công cụ qemu sẽ có sẵn trong Synology DSM. Nhưng bạn có thể kết nối đĩa với PC thông thường bằng Linux và tiếp tục. Hoặc thử khởi động Synology từ mạng hoặc LiveUSB â NAS có thể kết nối 30 đĩa về cơ bản là một máy tính có thể gắn giá đỡ amd64 thông thường.
Mark avatar
lá cờ tz
@Bob, có các tùy chọn khác để tạo lớp phủ - Tôi đã sử dụng ổ USB và các bước tại https://raid.wiki.kernel.org/index.php/Recovering_a_damaged_RAID
Nikita Kipriyanov avatar
lá cờ za
Một cách hay, sử dụng khung Trình ánh xạ thiết bị, có thể có trong DSM! Ngoài ra, nó có thể nhanh hơn cách tiếp cận của tôi. Chính lệnh `dmsetup` đã tạo một thiết bị ảo với tệp lớp phủ thưa thớt.Tuy nhiên, vì bản thân mảng RAID có vẻ rõ ràng trong trường hợp của bạn và tất cả những gì chúng ta nói đến là sửa một hệ thống tệp, nên tôi khuyên bạn nên tạo lớp phủ của một mảng được lắp ráp (`/dev/md125`) thay vì các thành phần mảng riêng lẻ đó.
Điểm:10
lá cờ ca

Các bản ghi

[13297.001208] XFS (md125): Gắn hệ thống tệp V5
[13297.008854] XFS (md125): Nhật ký không nhất quán (không tìm thấy tiêu đề trước đó)
[13297.008874] XFS (md125): không tìm thấy phần đầu nhật ký
[13297.008878] XFS (md125): đăng nhập/khôi phục không thành công: lỗi -5
[13297.008934] XFS (md125): quá trình gắn nhật ký không thành công

khiến tôi nghĩ rằng việc định hình lại bị hủy bỏ đã "xáo trộn" số LBA để XFS không tìm thấy nhật ký mục đích của nó.Điều này có thể có nghĩa là tham nhũng rộng rãi, như những người khác đã nói, dừng lại ở đây và liên hệ với một dịch vụ phục hồi dữ liệu chuyên nghiệp.

Nếu điều này là không thể, tôi sẽ thử lần cuối bằng cách bỏ qua nhật ký XFS với nội dung nào đó như mount -o ro,norecovery /dev/md125 /export/models nhưng trong trường hợp rất khó xảy ra nếu nó hoạt động, hãy chuẩn bị để tham nhũng dữ liệu rộng rãi.

Một lần nữa, nếu nó lưu trữ dữ liệu quan trọng, hãy liên hệ với công ty khôi phục dữ liệu trước khi làm bất cứ điều gì.

lá cờ fr
Bob
Cảm ơn @shodanshok. Tôi sẽ thử nói chuyện với ông chủ về nó.
Criggie avatar
lá cờ in
@bob nếu cách này hiệu quả thì bạn cần ghi lại các hành động của mình và hãy cẩn thận. "Che mông của bạn" ngay cả khi nó tốn tiền. Nếu việc mất dữ liệu này khiến công ty phải trả giá, họ có thể đổ lỗi cho bạn về điều đó.
U. Windl avatar
lá cờ it
CÓ, sự cố hiện tại dường như không liên quan đến RAID bên dưới; thay vào đó, vấn đề là "Nhật ký không nhất quán". Câu hỏi thực sự thú vị là làm thế nào trạng thái này xảy ra. Nhật ký hệ thống từ quá khứ có thể hữu ích.
lá cờ cn
@Bob gắn kết với tùy chọn "norecovery" là an toàn. Nếu nó hoạt động, hãy kiểm tra xem bạn có thể truy cập dữ liệu của mình không và dữ liệu có nhất quán hay không. Tuy nhiên, hãy chuẩn bị để cần một số nơi để sao chép dữ liệu có giá trị của bạn ở nơi khác.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.