Під час балансування диск BTRFS RAID5 не вдався


1

Якщо ви натиснули на посилання на цю тему: Дякую!

У мене є така настройка:

6x 500 Гб HDD-накопичувачі
1x 32 ГБ NVME-SSD (Intel Optane)

Я використовував bcache для налаштування SSD як пристрою кешування, а всі інші шість дисків - це резервні пристрої. Зрештою, що було на місці, я відформатував шість HHD з btrfs в RAID5. Все працює так, як очікувалося останні 7 місяців.

На сьогоднішній день у мене є запасний 6-ти дисковий накопичувач на 2 ТБ, і я хочу замінити старі диски об'ємом 500 ГБ по черзі. Тому я почав з першого, видаливши його з btrfs. Це добре працювало, у мене там проблем не було. Після цього я чисто відокремив порожній диск від bcache, все одно добре, тому я його видалив. Ось командні лінії для цього:

sudo btrfs device delete /dev/bcacheX /media/raid
cat /sys/block/bcacheX/bcache/state
cat /sys/block/bcacheX/bcache/dirty_data
sudo sh -c "echo 1 > /sys/block/bcacheX/bcache/detach"
cat /sys/block/bcacheX/bcache/state

Після цього я встановив один із накопичувачів 2 ТБ, приєднав його до bcache та додав його до рейду. Наступним кроком було збалансування даних на новому диску. Будь ласка, дивіться командні рядки:

sudo make-bcache -B /dev/sdY
sudo sh -c "echo '60a63f7c-2e68-4503-9f25-71b6b00e47b2' > /sys/block/bcacheY/bcache/attach"
sudo sh -c "echo writeback > /sys/block/bcacheY/bcache/cache_mode"
sudo btrfs device add /dev/bcacheY /media/raid
sudo btrfs fi ba start /media/raid/ 

Баланс справно працював, поки до нового диска не було записано ~ 164 Гб, це приблизно 50% даних, які потрібно збалансувати. Раптом на диску з’являються помилки запису. Рейд повільно став непридатним (я працював 3 ВМ RAID під час балансування). Я думаю, що це працювало деякий час завдяки SSD, який займався написанням записів. В якийсь момент врівноваження припинилося, і я зміг лише вбити ВМ. Я перевірив I / Os на дисках і SSD виплюнув постійну 1,2 ГБ / с зчитувану. Я думаю, що bcache якимось чином доставив дані до btrfs, і він там відхилився і знову запитав, але це лише здогадка. У будь-якому разі я закінчив скидання хоста і фізично відключив зламаний диск і поставив новий на місце. Я також створив на ньому резервний пристрій bcache і видав таку команду для заміни несправного диска:

sudo btrfs replace start -r 7 /dev/bcache5 /media/raid

Файлову систему потрібно встановити для читання / запису, щоб ця команда працювала. Зараз він робить свою роботу, але дуже повільно, близько 3,5 Мб / с. На жаль, syslog повідомляє про багато таких повідомлень:

...
scrub_missing_raid56_worker: 62 callbacks suppressed
BTRFS error (device bcache0): failed to rebuild valid logical 4929143865344 for dev (null)
...
BTRFS error (device bcache0): failed to rebuild valid logical 4932249866240 for dev (null)
scrub_missing_raid56_worker: 1 callbacks suppressed
BTRFS error (device bcache0): failed to rebuild valid logical 4933254250496 for dev (null)
....

Якщо я спробую прочитати файл з файлової системи, команда output-output не працює з простою помилкою вводу / виводу, і в syslog відображаються щось подібне до цього:

BTRFS warning (device bcache0): csum failed root 5 ino 1143 off 7274496 csum 0xccccf554 expected csum 0x6340b527 mirror 2

Поки так добре (чи погано). Поки що це зайняло 4,3% заміни. Не було повідомлено про помилки читання чи запису для процедури заміни ("btrfs status status"). Я дозволю його до своєї речі до кінця. До того, як перший диск 2 ТБ не вдався, було записано 164 ГБ даних відповідно до "шоу файлової системи btrfs". Якщо я перевіряю кількість даних, записаних на новий накопичувач, 4,3% представляють близько 82 ГБ (згідно / proc / discstats). Я не знаю, як це інтерпретувати, але все одно.

І ось нарешті мої запитання: Якщо команда заміни завершиться успішно, що мені робити далі. Скраб? Баланс? Ще одна резервна копія? ;-) Ви бачите щось, що я зробив неправильно в цій процедурі? Чи означають попередження та помилки, повідомлені з btrfs, що дані втрачені? :-(

Ось додаткова інформація ( відредагована ):

$ sudo btrfs fi sh
Total devices 7 FS bytes used 1.56TiB
Label: none  uuid: 9f765025-5354-47e4-afcc-a601b2a52703
devid    0 size 1.82TiB used 164.03GiB path /dev/bcache5
devid    1 size 465.76GiB used 360.03GiB path /dev/bcache4
devid    3 size 465.76GiB used 360.00GiB path /dev/bcache3
devid    4 size 465.76GiB used 359.03GiB path /dev/bcache1
devid    5 size 465.76GiB used 360.00GiB path /dev/bcache0
devid    6 size 465.76GiB used 360.03GiB path /dev/bcache2
*** Some devices missing

$ sudo btrfs dev stats /media/raid/
[/dev/bcache5].write_io_errs    0
[/dev/bcache5].read_io_errs     0
[/dev/bcache5].flush_io_errs    0
[/dev/bcache5].corruption_errs  0
[/dev/bcache5].generation_errs  0
[/dev/bcache4].write_io_errs    0
[/dev/bcache4].read_io_errs     0
[/dev/bcache4].flush_io_errs    0
[/dev/bcache4].corruption_errs  0
[/dev/bcache4].generation_errs  0
[/dev/bcache3].write_io_errs    0
[/dev/bcache3].read_io_errs     0
[/dev/bcache3].flush_io_errs    0
[/dev/bcache3].corruption_errs  0
[/dev/bcache3].generation_errs  0
[/dev/bcache1].write_io_errs    0
[/dev/bcache1].read_io_errs     0
[/dev/bcache1].flush_io_errs    0
[/dev/bcache1].corruption_errs  0
[/dev/bcache1].generation_errs  0
[/dev/bcache0].write_io_errs    0
[/dev/bcache0].read_io_errs     0
[/dev/bcache0].flush_io_errs    0
[/dev/bcache0].corruption_errs  0
[/dev/bcache0].generation_errs  0
[/dev/bcache2].write_io_errs    0
[/dev/bcache2].read_io_errs     0
[/dev/bcache2].flush_io_errs    0
[/dev/bcache2].corruption_errs  0
[/dev/bcache2].generation_errs  0
[devid:7].write_io_errs    9525186
[devid:7].read_io_errs     10136573
[devid:7].flush_io_errs    143
[devid:7].corruption_errs  0
[devid:7].generation_errs  0

$ sudo btrfs fi df /media/raid/
Data, RAID5: total=1.56TiB, used=1.55TiB
System, RAID1: total=64.00MiB, used=128.00KiB
Metadata, RAID1: total=4.00GiB, used=2.48GiB
GlobalReserve, single: total=512.00MiB, used=0.00B

$ uname -a
Linux hostname 4.15.0-36-generic #39-Ubuntu SMP Mon Sep 24 16:19:09 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

$ btrfs --version
btrfs-progs v4.15.1

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.1 LTS"

Дякую ще раз за прочитання та сподіваємось ваші коментарі / відповіді!

EDIT 2

Щойно завершено "Заміна пристрою". Це було поруч із позначкою 9%, я думаю, що цей відсоток відповідає письмовій кількості даних на накопичувачі: 164 Гб від загального розміру 1,82 TiB. Таким чином, 100% означатиме повний 2-ТБ рецелемант. Отже, ось додатковий вихід:

$ btrfs replace status -1 /media/raid/
Started on 30.Oct 08:16:53, finished on 30.Oct 21:05:22, 0 write errs, 0 uncorr. read errs

$ sudo btrfs fi sh
Label: none  uuid: 9f765025-5354-47e4-afcc-a601b2a52703
Total devices 6 FS bytes used 1.56TiB
devid    1 size 465.76GiB used 360.03GiB path /dev/bcache4
devid    3 size 465.76GiB used 360.00GiB path /dev/bcache3
devid    4 size 465.76GiB used 359.03GiB path /dev/bcache1
devid    5 size 465.76GiB used 360.00GiB path /dev/bcache0
devid    6 size 465.76GiB used 360.03GiB path /dev/bcache2
devid    7 size 1.82TiB used 164.03GiB path /dev/bcache5

Читання файлів досі перервано з помилками вводу / виводу, syslog все ще показує:

BTRFS warning (device bcache0): csum failed root 5 ino 1143 off 7274496 csum 0x98f94189 expected csum 0x6340b527 mirror 1
BTRFS warning (device bcache0): csum failed root 5 ino 1143 off 7274496 csum 0xccccf554 expected csum 0x6340b527 mirror 2

Тож я вважаю, що найнешкідливіша дія - це скраб лише для читання, я тільки почав процес. Помилки та попередження заповнюють системний журнал:

$ sudo btrfs scrub start -BdrR /media/raid # -B no backgroud, -d statistics per device, -r read-only, -R raw statistics per device
$ tail -f /var/log/syslog
BTRFS error (device bcache0): bdev /dev/bcache5 errs: wr 0, rd 0, flush 0, corrupt 2848, gen 0
BTRFS warning (device bcache0): checksum error at logical 4590109331456 on dev /dev/bcache5, physical 2954104832, root 5, inode 418, offset 1030803456, length 4096, links 1 (path: VMs/Virtualbox/Windows 10 Imaging VMs/Windows 10 Imaging/Windows 10 Imaging-fixed.vdi)
BTRFS error (device bcache0): bdev /dev/bcache5 errs: wr 0, rd 0, flush 0, corrupt 2849, gen 0
BTRFS warning (device bcache0): checksum error at logical 4590108811264 on dev /dev/bcache5, physical 2953977856, root 5, inode 1533, offset 93051236352, length 4096, links 1 (path: VMs/Virtualbox/vmrbreb/vmrbreb-fixed.vdi)
BTRFS error (device bcache0): bdev /dev/bcache5 errs: wr 0, rd 0, flush 0, corrupt 2850, gen 0
BTRFS warning (device bcache0): checksum error at logical 4590109335552 on dev /dev/bcache5, physical 2954108928, root 5, inode 418, offset 1030807552, length 4096, links 1 (path: VMs/Virtualbox/Windows 10 Imaging VMs/Windows 10 Imaging/Windows 10 Imaging-fixed.vdi)
BTRFS error (device bcache0): bdev /dev/bcache5 errs: wr 0, rd 0, flush 0, corrupt 2851, gen 0
BTRFS warning (device bcache0): checksum error at logical 4590108815360 on dev /dev/bcache5, physical 2953981952, root 5, inode 621, offset 11864412160, length 4096, links 1 (path: VMs/Virtualbox/Win102016_Alter-Firefox/Win102016_Alter-Firefox-disk1.vdi)
BTRFS error (device bcache0): bdev /dev/bcache5 errs: wr 0, rd 0, flush 0, corrupt 2852, gen 0
BTRFS warning (device bcache0): checksum error at logical 4590109339648 on dev /dev/bcache5, physical 2954113024, root 5, inode 418, offset 1030811648, length 4096, links 1 (path: VMs/Virtualbox/Windows 10 Imaging VMs/Windows 10 Imaging/Windows 10 Imaging-fixed.vdi)
BTRFS error (device bcache0): bdev /dev/bcache5 errs: wr 0, rd 0, flush 0, corrupt 2853, gen 0
BTRFS warning (device bcache0): checksum error at logical 4590109343744 on dev /dev/bcache5, physical 2954117120, root 5, inode 418, offset 1030815744, length 4096, links 1 (path: VMs/Virtualbox/Windows 10 Imaging VMs/Windows 10 Imaging

Мої питання досі залишаються: що мені робити далі. Скраб? Баланс? Я зробив щось зовсім не так? Як інтерпретувати помилки та застереження з скрабу лише для читання, чи може btrfs змогти їх виправити?


5
Ваша настройка приховує апаратні помилки за кешем. Це не дуже гарна ідея. Якщо вам дійсно потрібно кешування блоків , слід розмістити його перед масивом RAID. Btrfs в даний час не може цього зробити. Щоб пом'якшити проблеми з поточним налаштуванням, розгляньте можливість переходу до кешування записів.
Даніель Б

Ви не хотіли б згадати, яку * ix OS та версію ви використовуєте? Будь ласка, натисніть на editліворуч, щоб змінити оригінальну публікацію.
K7AAY

Якщо це BTRFS, це або Linux, або ReactOS (так, вони насправді мають драйвер). Якщо припустити, що це Linux з урахуванням контексту, в цьому випадку виводиться з uname -aі btrfs --versionслід також додавати.
Остін Хеммельгарн

Дякуємо за ваші коментарі. Я додав всю запитувану інформацію в останньому блоці публікації. Процес завершується на 13 годинній позначці, 8,7% виконано; 160 GiB написано
Олівер Р.

EDIT 2 - заміна пристрою закінчена - дивіться головну публікацію
Олівер Р.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.