ทำไมการรีบูตเครื่องทำให้กระจก ZFS ด้านหนึ่งของฉันกลายเป็น UNAVAIL


13

ฉันเพิ่งโอนย้ายพูลหน่วยเก็บข้อมูลขนาดใหญ่ (ZFS บน Linux 0.6.2, Debian Wheezy) จากการกำหนดค่าอุปกรณ์ vdev ไปยังการกำหนดค่ามิเรอร์ vdev แบบสองทาง

การกำหนดค่าพูลก่อนหน้านี้คือ:

    NAME                     STATE     READ WRITE CKSUM
    akita                    ONLINE       0     0     0
      ST4000NM0033-Z1Z1A0LQ  ONLINE       0     0     0

ทุกอย่างเรียบร้อยหลังจากผู้กู้เสร็จสิ้น (ฉันเริ่มต้นการขัดหลังจากผู้กู้เสร็จสิ้นเพียงเพื่อให้ระบบกลับไปใช้ทุกอย่างอีกครั้งและตรวจสอบให้แน่ใจว่าทุกอย่างดี):

  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

อย่างไรก็ตามหลังจากรีบูตเครื่องฉันได้รับอีเมลแจ้งให้ฉันทราบถึงความจริงที่ว่าสระว่ายน้ำไม่ดีและสวยหรู ฉันได้ดูและนี่คือสิ่งที่ฉันเห็น:

   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

คาดว่าจะมีการขัดผิว มีการตั้งค่างาน cron เพื่อเริ่มต้นการขัดระบบแบบเต็มเมื่อรีบูต อย่างไรก็ตามฉันไม่ได้คาดหวังว่า HDD ใหม่จะหลุดออกจากกระจก

ฉันกำหนดนามแฝงที่แม็พกับชื่อ / dev / disk / by-id / wwn- * และในกรณีที่ดิสก์ทั้งสองนี้ได้ให้ ZFS ใช้งานฟรีเพื่อใช้งานดิสก์แบบเต็มรวมถึงการจัดการการแบ่งพาร์ติชัน:

# 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
# 

นี่คือบรรทัดที่เกี่ยวข้องจาก /etc/zfs/vdev_id.conf (ตอนนี้ฉันสังเกตแล้วว่า Z1Z333ZA ใช้อักขระแท็บเพื่อแยกตัวอักษรในขณะที่บรรทัด Z1Z1A0LQ ใช้ช่องว่างเท่านั้น แต่โดยสุจริตฉันไม่เห็นว่ามันจะเกี่ยวข้องกันอย่างไรที่นี่) :

alias ST4000NM0033-Z1Z1A0LQ             /dev/disk/by-id/wwn-0x5000c500645b0fec
alias ST4000NM0033-Z1Z333ZA     /dev/disk/by-id/wwn-0x5000c50065e8414a

เมื่อฉันดู/dev/disk/by-id/wwn-0x5000c50065e8414a*อยู่ที่นั่นตามที่คาดไว้ แต่/dev/disk/by-vdev/ST4000NM0033-Z1Z333ZA*ไม่ได้

การออกsudo udevadm triggerทำให้ symlink แสดงขึ้นใน / dev / disk / by-vdev อย่างไรก็ตาม ZFS ดูเหมือนจะไม่ได้ตระหนักว่าพวกเขาอยู่ที่นั่น (Z1Z333ZA ยังคงแสดงเป็นUNAVAIL) ฉันคาดหวังได้มาก

ฉันพยายามแทนที่อุปกรณ์ที่เกี่ยวข้อง แต่ก็ไม่มีโชค:

# 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'
# 

ตรวจพบดิสก์ทั้งสองระหว่างกระบวนการบู๊ต (เอาต์พุต dmesg แสดงไดรฟ์ที่เกี่ยวข้อง):

[    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

ไดรฟ์ทั้งสองเชื่อมต่อโดยตรงกับเมนบอร์ด ไม่มีส่วนควบคุมนอกบอร์ด

ฉันรู้สึกว่า:

# zpool online akita ST4000NM0033-Z1Z333ZA

ซึ่งดูเหมือนจะทำงาน; Z1Z333ZA เป็นอย่างน้อยตอนนี้ONLINEและ resilvering ในเวลาประมาณหนึ่งชั่วโมงในการกู้คืนข้อมูลจะทำการสแกน 180G และกู้คืน 24G ที่ทำได้ 9.77% ซึ่งชี้ไปที่มันไม่ได้ทำการกู้คืนเต็มรูปแบบ แต่เป็นการถ่ายโอนเดลต้าชุดข้อมูลเท่านั้น

ฉันไม่แน่ใจว่าปัญหานี้เกี่ยวข้องกับ ZFS บน Linux หรือ udev โดยตรง (มันมีกลิ่นเหมือน udev แต่ทำไมไดรฟ์หนึ่งถึงตรวจพบได้ดี แต่ไม่ใช่อื่น ๆ ) แต่คำถามของฉันคือฉันจะสร้างได้อย่างไร แน่ใจว่าสิ่งเดียวกันไม่เกิดขึ้นอีกในการรีบูตครั้งถัดไปหรือไม่

ฉันยินดีที่จะให้ข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่าหากจำเป็น เพียงแจ้งให้เราทราบสิ่งที่จำเป็น

คำตอบ:


10

นี่เป็นปัญหาที่ udev ที่น่าจะเป็นที่เฉพาะเจาะจงเพื่อ Debian และ Ubuntu สายพันธุ์ ZFS ของฉันส่วนใหญ่ทำงานกับ CentOS / RHEL

หัวข้อที่คล้ายกันในรายการสนทนา ZFS ได้กล่าวถึงเรื่องนี้

โปรดดู: รายการ
scsi และ ata สำหรับฮาร์ดไดรฟ์เดียวกันภายใต้ / dev / disk / by-id
และ
ZFS บน Linux / Ubuntu: ช่วยนำเข้า zpool หลังจาก Ubuntu อัปเกรดจาก 13.04 เป็น 13.10, ID อุปกรณ์มีการเปลี่ยนแปลง

ฉันไม่แน่ใจว่าแนวทางการกำหนดอุปกรณ์สระว่ายน้ำมากที่สุดสำหรับระบบ Debian / Ubuntu คืออะไร สำหรับ RHEL ฉันต้องการใช้อุปกรณ์ WWN บนอุปกรณ์พูลทั่วไป แต่ในบางครั้งชื่ออุปกรณ์ / ซีเรียลก็มีประโยชน์เช่นกัน แต่ udev ควรจะสามารถเก็บทั้งหมดนี้ในการตรวจสอบ

# zpool status
  pool: vol1
 state: ONLINE
  scan: scrub repaired 0 in 0h32m with 0 errors on Sun Feb 16 17:34:42 2014
config:

        NAME                        STATE     READ WRITE CKSUM
        vol1                        ONLINE       0     0     0
          mirror-0                  ONLINE       0     0     0
            wwn-0x500000e014609480  ONLINE       0     0     0
            wwn-0x500000e0146097d0  ONLINE       0     0     0
          mirror-1                  ONLINE       0     0     0
            wwn-0x500000e0146090c0  ONLINE       0     0     0
            wwn-0x500000e01460fd60  ONLINE       0     0     0

1
หลังจากโอนย้ายไปยังwwn-*ชื่อที่ไม่ได้ใช้แล้วพูลจะมีความเสถียร
CVN

1
@ MichaelKjörlingคุณช่วยบอกรายละเอียดวิธีโยกย้ายไปยังชื่อ wwn- * ได้ไหม?
codecowboy

1
@codecowboy ไม่มีอะไรแฟนซีเลย zpool detach akita ST4000NM0033-Z1Z333ZAจากzpool attach -o ashift=12 -f akita ST4000NM0033-Z1Z1A0LQ wwn-0x5000c50065e8414aนั้นzpool detach akita ST4000NM0033-Z1Z1A0LQจึงทำการzpool attach akita wwn-0x5000c50065e8414a wwn-0x5000c500645b0fecตรวจสอบระหว่างแต่ละขั้นตอนว่าสระนั้นมีเสถียรภาพ ฉันขอแนะนำให้ขัดอย่างละเอียดก่อน คุณอาจจะไปด้วยzpool replaceเช่นกัน แต่เนื่องจากนามแฝงชี้ไปที่ชื่อ wwn และฉันมีความซ้ำซ้อนและสำรองข้อมูลสิ่งนี้จึงปลอดภัยยิ่งขึ้น ใช้เวลาสองสามวัน แต่ฉันไม่รีบร้อน
CVn
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.