Ubuntu yang ditingkatkan, semua drive dalam satu zpool ditandai tidak tersedia

8

Saya baru saja memutakhirkan Ubuntu 14.04, dan saya memiliki dua kumpulan ZFS di server. Ada beberapa masalah kecil dengan saya berkelahi dengan driver ZFS dan versi kernel, tapi itu berhasil sekarang. Satu kolam datang online, dan dipasang dengan baik. Yang lainnya tidak. Perbedaan utama antara alat ini adalah satu hanya kumpulan disk (penyimpanan video / musik), dan yang lainnya adalah set raidz (dokumen, dll)

Saya sudah mencoba mengekspor dan mengimpor ulang kumpulan, tetapi tidak berhasil, mencoba mengimpor membuat saya seperti ini:

root@kyou:/home/matt# zpool import -fFX -d /dev/disk/by-id/
   pool: storage
     id: 15855792916570596778
  state: UNAVAIL
 status: One or more devices contains corrupted data.
 action: The pool cannot be imported due to damaged devices or data.
   see: http://zfsonlinux.org/msg/ZFS-8000-5E
 config:

        storage                                      UNAVAIL  insufficient replicas
          raidz1-0                                   UNAVAIL  insufficient replicas
            ata-SAMSUNG_HD103SJ_S246J90B134910       UNAVAIL
            ata-WDC_WD10EARS-00Y5B1_WD-WMAV51422523  UNAVAIL
            ata-WDC_WD10EARS-00Y5B1_WD-WMAV51535969  UNAVAIL

Symlink untuk mereka yang /dev/disk/by-idjuga ada:

root@kyou:/home/matt# ls -l /dev/disk/by-id/ata-SAMSUNG_HD103SJ_S246J90B134910* /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51*
lrwxrwxrwx 1 root root  9 May 27 19:31 /dev/disk/by-id/ata-SAMSUNG_HD103SJ_S246J90B134910 -> ../../sdb
lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-SAMSUNG_HD103SJ_S246J90B134910-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-SAMSUNG_HD103SJ_S246J90B134910-part9 -> ../../sdb9
lrwxrwxrwx 1 root root  9 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51422523 -> ../../sdd
lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51422523-part1 -> ../../sdd1
lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51422523-part9 -> ../../sdd9
lrwxrwxrwx 1 root root  9 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51535969 -> ../../sde
lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51535969-part1 -> ../../sde1
lrwxrwxrwx 1 root root 10 May 27 19:15 /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51535969-part9 -> ../../sde9

Memeriksa berbagai /dev/sd*perangkat yang terdaftar, mereka tampaknya yang benar (drive 3 1TB yang berada dalam array raidz).

Saya sudah menjalankan zdb -ldi setiap drive, membuangnya ke file, dan menjalankan diff. Satu-satunya perbedaan pada 3 adalah bidang panduan (yang saya anggap diharapkan). Ketiga label pada masing-masing label pada dasarnya identik, dan adalah sebagai berikut:

version: 5000
name: 'storage'
state: 0
txg: 4
pool_guid: 15855792916570596778
hostname: 'kyou'
top_guid: 1683909657511667860
guid: 8815283814047599968
vdev_children: 1
vdev_tree:
    type: 'raidz'
    id: 0
    guid: 1683909657511667860
    nparity: 1
    metaslab_array: 33
    metaslab_shift: 34
    ashift: 9
    asize: 3000569954304
    is_log: 0
    create_txg: 4
    children[0]:
        type: 'disk'
        id: 0
        guid: 8815283814047599968
        path: '/dev/disk/by-id/ata-SAMSUNG_HD103SJ_S246J90B134910-part1'
        whole_disk: 1
        create_txg: 4
    children[1]:
        type: 'disk'
        id: 1
        guid: 18036424618735999728
        path: '/dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51422523-part1'
        whole_disk: 1
        create_txg: 4
    children[2]:
        type: 'disk'
        id: 2
        guid: 10307555127976192266
        path: '/dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WMAV51535969-part1'
        whole_disk: 1
        create_txg: 4
features_for_read:

Bodoh, saya tidak punya cadangan baru-baru ini dari kolam ini. Namun, kolam itu baik-baik saja sebelum reboot, dan Linux melihat disk baik-baik saja (Saya punya smartctl berjalan sekarang untuk memeriksa ulang)

Jadi, dalam ringkasan:

  • Saya memutakhirkan Ubuntu, dan kehilangan akses ke salah satu dari dua zpool saya.
  • Perbedaan antara kolam adalah yang muncul adalah JBOD, yang lain takut.
  • Semua drive di zpool unmountable ditandai UNAVAIL, tanpa catatan untuk data yang rusak
  • Kolam keduanya dibuat dengan disk yang dirujuk dari /dev/disk/by-id/.
  • Symlinks dari /dev/disk/by-idke berbagai /dev/sdperangkat tampaknya benar
  • zdb dapat membaca label dari drive.
  • Pool telah dicoba untuk diekspor / diimpor, dan tidak dapat mengimpor lagi.

Apakah ada semacam sihir hitam yang dapat saya gunakan melalui zpool / zfs untuk membawa disk ini kembali ke array yang masuk akal? Bisakah saya menjalankan zpool create zraid ...tanpa kehilangan data saya? Apakah data saya hilang?

Matt Sieker
sumber

Jawaban:

5

Setelah banyak dan lebih banyak Googling pada pesan kesalahan khusus ini saya dapatkan:

root@kyou:/home/matt# zpool import -f storage
cannot import 'storage': one or more devices are already in use

(Termasuk di sini untuk indeks keturunan dan pencarian) Saya menemukan ini:

https://groups.google.com/a/zfsonlinux.org/forum/#!topic/zfs-discuss/VVEwd1VFDmc

Itu menggunakan partisi yang sama dan menambahkannya ke mdraid selama boot sebelum ZFS dimuat.

Saya ingat melihat beberapa baris mdadm dmesgdan cukup yakin:

root@kyou:/home/matt# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md126 : active raid5 sdd[2] sdb[0] sde[1]
      1953524992 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]

Drive ini, pada suatu waktu, bagian dari array raid5 perangkat lunak. Untuk beberapa alasan, selama peningkatan, memutuskan untuk memindai ulang drive, dan menemukan bahwa drive pernah menjadi bagian dari array md, dan memutuskan untuk membuatnya kembali. Ini diverifikasi dengan:

root@kyou:/storage# mdadm --examine /dev/sd[a-z]

Ketiga drive itu menunjukkan banyak informasi. Untuk saat ini, menghentikan array:

root@kyou:/home/matt# mdadm --stop /dev/md126
mdadm: stopped /dev/md126

Dan menjalankan kembali impor:

root@kyou:/home/matt# zpool import -f storage

telah membawa array kembali online.

Sekarang saya membuat snapshot dari kolam itu untuk cadangan, dan menjalankannya mdadm --zero-superblock.

Matt Sieker
sumber
4

Ubuntu tampaknya memiliki beberapa masalah udev yang tidak kita lihat di sisi Red Hat / CentOS. Saya akan merekomendasikan menggunakan nama perangkat berbasis WWN jika Anda bisa, karena mereka tampaknya kurang rentan terhadap ini.

Pernahkah Anda melihat: Mengapa mem-boot ulang menyebabkan satu sisi cermin ZFS saya menjadi UNAVAIL?

putih
sumber
2
Saya telah melihat itu, dan membaca utas yang ditautkan dalam satu, tampaknya masalahnya adalah udev tidak membuat symlink untuk semua partisi pada perangkat. Saya baru saja memeriksa ketiga drive. Masing-masing memiliki nomor partisi 1 dan 9, dan mereka memiliki symlink /dev/disk/by-iduntuk drive tersebut, dan semua symlink untuk satu perangkat menunjuk ke /dev/sd*drive yang sama . Dan hal terdekat yang dapat saya temukan untuk solusi (gunakan ganti zpool), saya tidak bisa lakukan karena saya tidak bisa mengimpor ulang pool.
Matt Sieker
2

Saya mengalami masalah yang hampir pasti ini mencoba untuk mengupgrade ke kernel seri 3.13 di Debian Wheezy. Anda benar dalam komentar Anda; itu adalah bug udev. Sayangnya saya tidak pernah memilahnya, tetapi perlu mengeksplorasi kernel lain, terutama seri 3.11, untuk kompatibilitas dengan ZOL versi 0.6.2. Cukup gunakan kernel lama hingga 0.6.3 keluar.

Joshua Boniface
sumber
Sangat tidak dapat diterima bahwa udev akan mematahkan cara ini. Saya tidak menggunakan Ubuntu, tetapi hal-hal seperti ini membuatnya tampak sangat kasar dibandingkan dengan penawaran RHEL.
ewwhite