Чому перезавантаження призвело до того, що одна сторона мого дзеркала ZFS стала UNAVAIL?


13

Нещодавно я перемістив пул зберігання даних (ZFS On Linux 0.6.2, Debian Wheezy) з конфігурації vdev для одного пристрою на двосторонній дзеркальний конфігурацію vdev.

Попередня конфігурація пулу:

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

Все було добре після завершення resilver (я ініціював скраб після завершення resilver, просто щоб система знову переглянула все і переконалася, що це все добре):

  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 для ініціації повного скрабування системи при перезавантаженні. Однак я точно не очікував, що новий жорсткий диск випаде з дзеркала.

Я визначаю псевдоніми, які вказують на / 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призвела до появи символьних посилань у / 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і перестарелий. Приблизно за годину перебування на resilver він сканується на 180G і повторно поставив 24G з 9,77% зробленим, що вказує на те, що він не робить повний resilver, а лише передає дельту набору даних.

Я, чесно кажучи, не впевнений, що ця проблема пов’язана з ZFS On Linux або udev (це трохи схоже на udev, але чому б один диск виявився просто чудово, а не інший), але моє питання полягає в тому, як мені зробити впевнений, що те ж саме не повториться при наступному перезавантаженні?

Я буду радий надати більше даних про налаштування, якщо необхідно; просто дайте мені знати, що потрібно.

Відповіді:


10

Це проблема udev, яка, здається, є специфічною для варіантів Debian та Ubuntu . Більшість моїх ZFS на Linux працює з CentOS / RHEL.

Подібні теми у списку обговорень ZFS згадували про це.

Дивіться:
записи scsi та ata на той же жорсткий диск під / dev / disk / by-id
та
ZFS на Linux / Ubuntu: допомога імпортувати zpool після оновлення Ubuntu з 13.04 до 13.10, ідентифікатори пристрою змінені

Я не впевнений, який найбільш детермінований підхід пристрою пулу для систем Debian / Ubuntu. Для RHEL я вважаю за краще використовувати пристрої WWN на загальних пристроях пулу. Але в інших випадках також корисна назва / серійний пристрій. Але удев повинен мати можливість все це перевірити.

# 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.