Если вы нажали на ссылку на эту тему: Спасибо!
У меня есть следующие настройки:
6x 500 ГБ жестких дисков
1x 32 ГБ NVME-SSD (Intel Optane)
Я использовал bcache для настройки SSD в качестве устройства кэширования, а все остальные шесть дисков являются резервными. После всего этого я отформатировал шесть жестких дисков с помощью 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% данных, которые будут сбалансированы. Внезапно появляются ошибки записи на диск. Raid постепенно стал непригодным для использования (во время балансировки у меня было 3 виртуальных машины RAID). Я думаю, что это работало в течение некоторого времени из-за SSD, совершающего записи. В какой-то момент балансировка прекратилась, и я смог убить только виртуальные машины. Я проверил операции ввода-вывода на дисках, и SSD выкладывал постоянные 1,2 ГБ / с чтения. Я думаю, что bcache каким-то образом доставил данные в btrfs, и его там отклонили и запросили снова, но это всего лишь предположение. В любом случае, я перезагружал хост и физически отключил сломанный диск и установил новый. Я также создал на нем устройство резервного копирования bcache и выполнил следующую команду для замены неисправного диска:
sudo btrfs replace start -r 7 /dev/bcache5 /media/raid
Файловая система должна быть смонтирована для чтения / записи, чтобы эта команда работала. Сейчас он делает свою работу, но очень медленно, около 3,5 МБ / с. К сожалению, системный журнал сообщает о многих из этих сообщений:
...
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 завершается неудачно с простой ошибкой ввода-вывода, а в системном журнале отображаются записи, подобные этой:
BTRFS warning (device bcache0): csum failed root 5 ino 1143 off 7274496 csum 0xccccf554 expected csum 0x6340b527 mirror 2
Пока все хорошо (или плохо). Пока что на замену у 4,3% ушло около 6 часов. Не было ошибок чтения или записи для процедуры замены ("btrfs replace status"). Я отпущу это до конца. До выхода из строя первого диска объемом 2 ТБ было записано 164 ГБ данных в соответствии с "шоу файловой системы btrfs". Если я проверю объем данных, записанных на новый диск, то 4,3% представляют около 82 ГБ (согласно /proc /diskstats). Я не знаю, как это интерпретировать, но все равно.
А теперь, наконец, мои вопросы: если команда замены завершается успешно, что мне делать дальше. Скраб? Баланс? Еще одна резервная копия? ;-) Видите ли вы что-нибудь, что я сделал неправильно в этой процедуре? Означают ли предупреждения и ошибки, о которых сообщают 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"
Еще раз спасибо за чтение и, надеюсь, ваши комментарии / ответы!
РЕДАКТИРОВАТЬ 2
«Замена устройства» только что завершена. Это было рядом с отметкой 9%, я думаю, что этот процент совпадает с записанным объемом данных на диске: 164 ГиБ из общего размера 1,82 ТиБ. Таким образом, 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 их исправить?