Bagaimana memulihkan array mdadm di Synology NAS dengan drive dalam status "E"?

12

Synology memiliki versi khusus driver md dan mdadm toolets yang menambahkan flag 'DriveError' ke struktur flag rdev-> di kernel.

Efek bersih - jika Anda kurang beruntung untuk mendapatkan kegagalan array (drive pertama), dikombinasikan dengan kesalahan pada drive kedua - array masuk ke keadaan tidak membiarkan Anda memperbaiki / merekonstruksi array meskipun membaca dari drive berfungsi baik.

Pada titik ini, saya tidak terlalu khawatir tentang pertanyaan ini dari sudut pandang array INI, karena saya sudah menarik konten dan berniat untuk merekonstruksi, tetapi lebih dari ingin memiliki jalur resolusi untuk ini di masa depan , karena ini adalah kedua kalinya saya sedikit kesana, dan saya tahu saya melihat orang lain menanyakan pertanyaan serupa di forum.

Dukungan teknologi telah kurang membantu (dan sebagian besar tidak responsif), dan tidak akan membagikan informasi apa pun tentang berurusan dengan raidet di kotak.

Isi dari / proc / mdstat:

ds1512-ent> cat /proc/mdstat 
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] 
md2 : active raid5 sdb5[1] sda5[5](S) sde5[4](E) sdd5[3] sdc5[2]
      11702126592 blocks super 1.2 level 5, 64k chunk, algorithm 2 [5/4] [_UUUE]

md1 : active raid1 sdb2[1] sdd2[3] sdc2[2] sde2[4] sda2[0]
      2097088 blocks [5/5] [UUUUU]

md0 : active raid1 sdb1[1] sdd1[3] sdc1[2] sde1[4] sda1[0]
      2490176 blocks [5/5] [UUUUU]

unused devices: <none>

Status dari mdadm --detail / dev / md2:

/dev/md2:
        Version : 1.2
  Creation Time : Tue Aug  7 18:51:30 2012
     Raid Level : raid5
     Array Size : 11702126592 (11160.02 GiB 11982.98 GB)
  Used Dev Size : 2925531648 (2790.00 GiB 2995.74 GB)
   Raid Devices : 5
  Total Devices : 5
    Persistence : Superblock is persistent

    Update Time : Fri Jan 17 20:48:12 2014
          State : clean, degraded
 Active Devices : 4
Working Devices : 5
 Failed Devices : 0
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 64K

           Name : MyStorage:2
           UUID : cbfdc4d8:3b78a6dd:49991e1a:2c2dc81f
         Events : 427234

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8       21        1      active sync   /dev/sdb5
       2       8       37        2      active sync   /dev/sdc5
       3       8       53        3      active sync   /dev/sdd5
       4       8       69        4      active sync   /dev/sde5

       5       8        5        -      spare   /dev/sda5

Seperti yang Anda lihat - / dev / sda5 telah ditambahkan kembali ke array. (Itu drive yang gagal total) - tetapi meskipun md melihat drive sebagai cadangan, itu tidak akan membangun kembali untuk itu. / dev / sde5 dalam hal ini adalah drive masalah dengan keadaan (E) DiskError.

Saya telah mencoba menghentikan perangkat md, menjalankan kekuatan pemasangan kembali, menghapus / membaca sda5 dari perangkat / dll. Tidak ada perubahan perilaku.

Saya dapat sepenuhnya membuat ulang array dengan perintah berikut:

mdadm --stop /dev/md2
mdadm --verbose \
   --create /dev/md2 --chunk=64 --level=5 \
   --raid-devices=5 missing /dev/sdb5 /dev/sdc5 /dev/sdd5 /dev/sde5

yang membawa array kembali ke status ini:

md2 : active raid5 sde5[4] sdd5[3] sdc5[2] sdb5[1]
      11702126592 blocks super 1.2 level 5, 64k chunk, algorithm 2 [5/4] [_UUUU]

Saya kemudian menambahkan kembali / dev / sda5:

mdadm --manage /dev/md2 --add /dev/sda5

setelah itu memulai pembangunan kembali:

md2 : active raid5 sda5[5] sde5[4] sdd5[3] sdc5[2] sdb5[1]
      11702126592 blocks super 1.2 level 5, 64k chunk, algorithm 2 [5/4] [_UUUU]
      [>....................]  recovery =  0.1% (4569508/2925531648) finish=908.3min speed=53595K/sec

Perhatikan posisi drive "hilang" yang cocok dengan posisi tepat slot yang hilang.

Setelah ini selesai, saya pikir saya mungkin akan menarik drive yang dipertanyakan dan memilikinya membangun kembali.

Saya mencari saran apakah ada cara "kurang menakutkan" untuk melakukan perbaikan ini - atau jika ada yang telah melalui pengalaman ini dengan array Synology dan tahu bagaimana memaksanya untuk membangun kembali selain mengambil perangkat md offline dan menciptakan kembali array dari awal.

Nathan Neulinger
sumber
Saya menemukan diri saya dalam situasi yang sama. Apakah Anda berhasil menyelesaikan ini?
dvorak
Ya, saya bisa mendapatkan array yang dibangun kembali mengikuti langkah-langkah di atas. Saya memang menindaklanjutinya dengan membersihkan dan mengubah dari R5 ke R6 - karena pada titik ini, saya benar-benar tidak senang dengan perilaku "tank the whole array" dari Synology yang saya ingin pastikan untuk mentolerir lebih dari satu drive "gagal. ". Dalam kasus kami, drive kedua yang memiliki kesalahan "kesalahan" lulus tes cerdas yang diperpanjang tanpa masalah tunggal.
Nathan Neulinger
Terima kasih untuk panduannya. Saya tidak terlalu percaya diri mengutak-atik semua ini, saya bukan spesialis serangan. Saya sekarang menghadapi masalah yang sama tetapi dalam kasus saya, saya memiliki satu disk RAID 1 array (/ dev / md3) dengan / dev / sde3 ditandai dengan [E] yang ditakuti. Saya berasumsi bahwa mungkin bagi saya untuk mengikuti langkah-langkah yang sama seperti yang Anda lakukan, tetapi karena itu adalah disk tunggal array saya tidak tahu apa yang akan dilakukan ;-). Bagaimanapun, perintah mdadm --stop / dev / md3 gagal (Perangkat atau sumber daya sibuk). Saya kira saya akan Google sedikit lebih lama .. =)
dSebastien
Jika Anda tidak dapat menghentikan array, sepertinya ada sesuatu yang menggunakannya - mis. Itu sudah terpasang, atau ada beberapa tugas lain yang berjalan melawan perangkat itu.
Nathan Neulinger
2
Untungnya bagi saya Synology membantu saya memperbaiki masalah ini. Mereka cukup baik untuk memberi saya perintah yang mereka jalankan. Saya telah memasukkan informasi di blog saya seandainya ada orang lain yang mengalami masalah ini: dsebastien.net/2015/05/05/19/...
dSebastien

Jawaban:

3

Hanya tambahan untuk solusi yang saya temukan setelah saya mengalami masalah yang sama. Saya mengikuti posting blog dSebastien tentang cara membuat ulang array:

Saya menemukan bahwa metode membuat ulang array bekerja lebih baik daripada metode di atas ini. Namun setelah menciptakan kembali array, volume masih tidak ditampilkan di antarmuka web. Tak satu pun dari LUN saya ditampilkan. Pada dasarnya menampilkan array baru tanpa konfigurasi. Saya menghubungi dukungan Synology, dan mereka mengirimnya untuk memperbaiki masalah. Sayangnya, mereka mengirim ulang sementara saya jauh dari konsol. Saya berhasil menangkap sesi meskipun, dan melihat melalui apa yang mereka lakukan. Ketika mencoba memulihkan beberapa data saya, drive itu mogok lagi, dan saya kembali pada situasi yang sama. Saya membuat ulang array seperti di blog dSebastien dan kemudian melihat melalui sesi synology untuk melakukan pembaruan mereka. Setelah menjalankan perintah di bawah ini, array dan LUN saya muncul di antarmuka web, dan saya bisa bekerja dengannya. Saya memiliki pengalaman nol di linux, tetapi ini adalah perintah yang saya lakukan dalam situasi saya. Semoga ini bisa membantu orang lain, tapi tolong gunakan ini dengan risiko Anda sendiri. Akan lebih baik untuk menghubungi dukungan Synology dan membuatnya memperbaikinya untuk Anda, karena situasi ini mungkin berbeda dari Anda

DiskStation> synocheckiscsitrg
synocheckiscsitrg: Pass 

DiskStation> synocheckshare
synocheckshare: Pass SYNOICheckShare()
synocheckshare: Pass SYNOICheckShareExt()
synocheckshare: Pass SYNOICheckServiceLink()
synocheckshare: Pass SYNOICheckAutoDecrypt()
synocheckshare: Pass SYNOIServiceShareEnableDefaultDS()

DiskStation> spacetool --synoblock-enum
****** Syno-Block of /dev/sda ******
//I've removed the output. This should display info about each disk in your array

DiskStation> vgchange -ay
  # logical volume(s) in volume group "vg1" now active

DiskStation> dd if=/dev/vg1/syno_vg_reserved_area of=/root/reserved_area.img
24576+0 records in
24576+0 records out

DiskStation> synospace --map_file -d
Success to dump space info into '/etc/space,/tmp/space'

DiskStation> synocheckshare
synocheckshare: Pass SYNOICheckShare()
synocheckshare: Pass SYNOICheckShareExt()
synocheckshare: Pass SYNOICheckServiceLink()
synocheckshare: Pass SYNOICheckAutoDecrypt()
synocheckshare: Pass SYNOIServiceShareEnableDefaultDS()

DiskStation> synocheckiscsitrg
synocheckiscsitrg: Not Pass, # conflict 

DiskStation> synocheckiscsitrg
synocheckiscsitrg: Pass 
Nirvaan
sumber
1

Tambahan lain: Saya telah menemukan masalah yang sangat mirip dengan perangkat level 0 disk satu-RAID / RAID saya.

Dukungan teknologi sangat membantu dan memulihkan perangkat saya. Inilah yang terjadi, semoga ini membantu orang lain:

Disk saya telah membaca kesalahan pada satu blok tertentu, pesan di log sistem ( dmesg) adalah:

[4421039.097278] ata1.00: read unc at 105370360
[4421039.101579] lba 105370360 start 9437184 end 5860528064
[4421039.106917] sda3 auto_remap 0
[4421039.110097] ata1.00: exception Emask 0x0 SAct 0x2 SErr 0x0 action 0x6
[4421039.116744] ata1.00: edma_err_cause=00000084 pp_flags=00000003, dev error, EDMA self-disable
[4421039.125410] ata1.00: failed command: READ FPDMA QUEUED
[4421039.130767] ata1.00: cmd 60/00:08:b8:d2:47/02:00:06:00:00/40 tag 1 ncq 262144 in
[4421039.130772]          res 41/40:00:f8:d2:47/00:00:06:00:00/40 Emask 0x409 (media error) <F>
[4421039.146855] ata1.00: status: { DRDY ERR }
[4421039.151064] ata1.00: error: { UNC }
[4421039.154758] ata1: hard resetting link
[4421039.667234] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl F300)
[4421039.887286] ata1.00: configured for UDMA/133
[4421039.891777] ata1: UNC RTF LBA Restored
[4421039.895745] ata1: EH complete

Beberapa detik kemudian saya menerima Volume 1 has crashedemail yang mengerikan dari perangkat saya.

- Penafian: Pastikan untuk mengganti nama perangkat dengan nama Anda dan jangan hanya menyalin & menempelkan perintah ini, karena ini dapat memperburuk keadaan! -

Setelah menghentikan seseorang, saya dapat me-mount kembali partisi read only dan menjalankan e2fsk dengan badblocks check ( -c):

umount /dev/md2
e2fsck -C 0 -v -f -c /dev/md2

(Orang juga dapat menggunakan e2fsck -C 0 -p -v -f -c /dev/md2untuk menjalankan sebagai tanpa pengawasan mungkin, meskipun ini tidak berhasil dalam kasus saya, karena kesalahan harus diperbaiki secara manual. Jadi saya harus me-restart e2fsck. Kesimpulan: -p tidak masuk akal dalam kasus kesalahan disk)

Meskipun e2fsck dapat memperbaiki kesalahan dan smartctl juga menunjukkan tidak ada lagi peningkatan Raw_Read_Error_Rate, volume masih tidak akan meningkat dalam mode baca-tulis oleh perangkat. DSM masih menunjukkan "volume macet"

Jadi saya membuka tiket dengan dukungan. Butuh waktu cukup lama untuk menyelesaikannya terlebih dahulu, tetapi pada akhirnya mereka memperbaikinya dengan membangun kembali array RAID dengan:

synospace --stop-all-spaces
syno_poweroff_task -d 
mdadm -Sf /dev/md2
mdadm -AfR /dev/md2 /dev/sda3

Pastikan untuk memeriksa nama perangkat Anda ( /dev/mdXdan /dev/sdaX) sebelum melakukan apa pun. cat /proc/mdstatakan menampilkan informasi yang relevan.

GWu
sumber