Saya baru-baru ini memigrasikan kumpulan penyimpanan data massal (ZFS Di Linux 0.6.2, Debian Wheezy) dari konfigurasi vdev satu perangkat ke konfigurasi vdev cermin dua arah.
Konfigurasi kolam sebelumnya adalah:
NAME STATE READ WRITE CKSUM
akita ONLINE 0 0 0
ST4000NM0033-Z1Z1A0LQ ONLINE 0 0 0
Semuanya baik-baik saja setelah resilver selesai (saya memulai scrub setelah resilver selesai, hanya agar sistem memeriksa semuanya sekali lagi dan memastikan semuanya baik-baik saja):
pool: akita
state: ONLINE
scan: scrub repaired 0 in 6h26m with 0 errors on Sat May 17 06:16:06 2014
config:
NAME STATE READ WRITE CKSUM
akita ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
ST4000NM0033-Z1Z1A0LQ ONLINE 0 0 0
ST4000NM0033-Z1Z333ZA ONLINE 0 0 0
errors: No known data errors
Namun, setelah mem-boot ulang, saya mendapat email yang memberitahukan saya bahwa kolam itu tidak bagus dan keren. Saya telah melihat dan inilah yang saya lihat:
pool: akita
state: DEGRADED
status: One or more devices could not be used because the label is missing or
invalid. Sufficient replicas exist for the pool to continue
functioning in a degraded state.
action: Replace the device using 'zpool replace'.
see: http://zfsonlinux.org/msg/ZFS-8000-4J
scan: scrub in progress since Sat May 17 14:20:15 2014
316G scanned out of 1,80T at 77,5M/s, 5h36m to go
0 repaired, 17,17% done
config:
NAME STATE READ WRITE CKSUM
akita DEGRADED 0 0 0
mirror-0 DEGRADED 0 0 0
ST4000NM0033-Z1Z1A0LQ ONLINE 0 0 0
ST4000NM0033-Z1Z333ZA UNAVAIL 0 0 0
errors: No known data errors
Lulur diharapkan; ada pengaturan tugas cron untuk memulai scrub sistem penuh saat reboot. Namun, saya jelas tidak mengharapkan HDD baru jatuh dari cermin.
Saya mendefinisikan alias yang memetakan ke nama / dev / disk / by-id / wwn- *, dan dalam kasus kedua disk ini telah memberikan ZFS pemerintahan bebas untuk menggunakan disk penuh, termasuk menangani partisi:
# zpool history akita | grep ST4000NM0033
2013-09-12.18:03:06 zpool create -f -o ashift=12 -o autoreplace=off -m none akita ST4000NM0033-Z1Z1A0LQ
2014-05-15.15:30:59 zpool attach -o ashift=12 -f akita ST4000NM0033-Z1Z1A0LQ ST4000NM0033-Z1Z333ZA
#
Ini adalah baris yang relevan dari /etc/zfs/vdev_id.conf (saya perhatikan sekarang bahwa Z1Z333ZA menggunakan karakter tab untuk pemisahan sedangkan garis Z1Z1A0LQ hanya menggunakan spasi, tapi saya jujur tidak melihat bagaimana itu bisa relevan di sini) :
alias ST4000NM0033-Z1Z1A0LQ /dev/disk/by-id/wwn-0x5000c500645b0fec
alias ST4000NM0033-Z1Z333ZA /dev/disk/by-id/wwn-0x5000c50065e8414a
Ketika saya melihat, /dev/disk/by-id/wwn-0x5000c50065e8414a*
ada di sana seperti yang diharapkan, tetapi /dev/disk/by-vdev/ST4000NM0033-Z1Z333ZA*
tidak ada.
Penerbitan sudo udevadm trigger
menyebabkan symlink muncul di / dev / disk / by-vdev. Namun, ZFS tampaknya tidak hanya menyadari bahwa mereka ada di sana (Z1Z333ZA masih menunjukkan sebagai UNAVAIL
). Sebanyak itu saya kira bisa diharapkan.
Saya mencoba mengganti perangkat yang relevan, tetapi tidak berhasil:
# zpool replace akita ST4000NM0033-Z1Z333ZA
invalid vdev specification
use '-f' to override the following errors:
/dev/disk/by-vdev/ST4000NM0033-Z1Z333ZA-part1 is part of active pool 'akita'
#
Kedua disk terdeteksi selama proses boot (output log dmesg menunjukkan drive yang relevan):
[ 2.936065] ata2: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[ 2.936137] ata4: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[ 2.937446] ata4.00: ATA-9: ST4000NM0033-9ZM170, SN03, max UDMA/133
[ 2.937453] ata4.00: 7814037168 sectors, multi 16: LBA48 NCQ (depth 31/32), AA
[ 2.938516] ata4.00: configured for UDMA/133
[ 2.992080] ata6: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[ 3.104533] ata6.00: ATA-9: ST4000NM0033-9ZM170, SN03, max UDMA/133
[ 3.104540] ata6.00: 7814037168 sectors, multi 16: LBA48 NCQ (depth 31/32), AA
[ 3.105584] ata6.00: configured for UDMA/133
[ 3.105792] scsi 5:0:0:0: Direct-Access ATA ST4000NM0033-9ZM SN03 PQ: 0 ANSI: 5
[ 3.121245] sd 3:0:0:0: [sdb] 7814037168 512-byte logical blocks: (4.00 TB/3.63 TiB)
[ 3.121372] sd 3:0:0:0: [sdb] Write Protect is off
[ 3.121379] sd 3:0:0:0: [sdb] Mode Sense: 00 3a 00 00
[ 3.121426] sd 3:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 3.122070] sd 5:0:0:0: [sdc] 7814037168 512-byte logical blocks: (4.00 TB/3.63 TiB)
[ 3.122176] sd 5:0:0:0: [sdc] Write Protect is off
[ 3.122183] sd 5:0:0:0: [sdc] Mode Sense: 00 3a 00 00
[ 3.122235] sd 5:0:0:0: [sdc] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
Kedua drive terhubung langsung ke motherboard; tidak ada pengendali off-board yang terlibat.
Secara spontan, saya melakukannya:
# zpool online akita ST4000NM0033-Z1Z333ZA
yang tampaknya berhasil; Z1Z333ZA sekarang setidaknya ONLINE
dan resilver. Sekitar satu jam setelah resilver, ia memindai 180G dan resilver 24G dengan 9,77% selesai, yang menunjukkan tidak melakukan resilver penuh tetapi hanya mentransfer delta dataset.
Jujur saya tidak yakin apakah masalah ini terkait dengan ZFS Di Linux atau udev (baunya sedikit seperti udev, tapi mengapa satu drive terdeteksi dengan baik tetapi tidak yang lain), tetapi pertanyaan saya adalah bagaimana saya membuat yakin hal yang sama tidak terjadi lagi pada reboot berikutnya?
Saya akan dengan senang hati memberikan lebih banyak data pada pengaturan jika perlu; beri tahu saya apa yang dibutuhkan.
wwn-*
nama telanjang , kumpulan tampaknya stabil.zpool detach akita ST4000NM0033-Z1Z333ZA
kemudianzpool attach -o ashift=12 -f akita ST4000NM0033-Z1Z1A0LQ wwn-0x5000c50065e8414a
kemudianzpool detach akita ST4000NM0033-Z1Z1A0LQ
kemudianzpool attach akita wwn-0x5000c50065e8414a wwn-0x5000c500645b0fec
, memverifikasi di antara setiap langkah kolam itu stabil. Saya sangat merekomendasikan scrub menyeluruh terlebih dahulu. Anda mungkin bisa loloszpool replace
juga tetapi karena alias menunjuk pada nama wwn dan saya memiliki redundansi plus backup, ini terasa lebih aman. Butuh beberapa hari tapi saya tidak terburu-buru.