У меня Raspberry Pi 2B с четырьмя недавно приобретенными USB-накопителями на 256 ГБ. Я настроил 4 диска в качестве тома RAID10 (данные и метаданные) btrfs. Я пытался скопировать очень большой (~ 35 ГБ) файл с другого компьютера на этот том с помощью rsync. В первый раз, когда я сделал это, он потратил 2 часа на копирование и информация о прогрессе rsync показала 100%, но затем произошла ошибка из-за «файловой системы только для чтения».

Немного поиска показало, что dmesg выдавал ошибки о том, что том был принудительно доступен только для чтения из-за ошибки errno -5:

[58463.350227] BTRFS: error (device sdd) in btrfs_commit_transaction:2071: errno=-5 IO failure (Error while writing out transaction)
[58463.352106] BTRFS info (device sdd): forced readonly
[58463.352120] BTRFS warning (device sdd): Skipping commit of aborted transaction.

Так что я подумал, а не одно ли это:

# btrfs device stats /dev/sda
[/dev/sda].write_io_errs   3339
[/dev/sda].read_io_errs    0
[/dev/sda].flush_io_errs   0
[/dev/sda].corruption_errs 0
[/dev/sda].generation_errs 0
# btrfs device stats /dev/sdb
[/dev/sdb].write_io_errs   3469
[/dev/sdb].read_io_errs    0
[/dev/sdb].flush_io_errs   0
[/dev/sdb].corruption_errs 0
[/dev/sdb].generation_errs 0
# btrfs device stats /dev/sdc
[/dev/sdc].write_io_errs   3601
[/dev/sdc].read_io_errs    2
[/dev/sdc].flush_io_errs   0
[/dev/sdc].corruption_errs 0
[/dev/sdc].generation_errs 0
# btrfs device stats /dev/sdd
[/dev/sdd].write_io_errs   4335
[/dev/sdd].read_io_errs    3
[/dev/sdd].flush_io_errs   0
[/dev/sdd].corruption_errs 0
[/dev/sdd].generation_errs 0

Кажется, это довольно много ошибок ввода-вывода, но цифры одинаковы для всех 4 дисков. Это то, что я должен ожидать от USB-флешек? Каждый раз, когда я копирую этот файл, он быстро вызывает чтение моего BTRfs, и я не уверен, как это исправить.

1 ответ1

0

Скорее всего, это потому, что это USB-накопитель. USB, как известно, ненадежен в Linux для любого долгосрочного использования, а встроенный концентратор и контроллер USB на Pi не особенно хороши, что только усугубляет ситуацию. Высокая ошибка записи подтверждает этот вывод: устройство по какой-то причине отключает шину USB, но BTRFS никогда не видит, что это произошло (потому что слой блоков не передает эту информацию должным образом), поэтому он просто продолжает пытаться записать в файл и получать ошибки записи обратно.

Важно отметить, что это может (и в конечном итоге приведет) к потенциально невосстановимому повреждению файловой системы.

Что касается его исправления, начните с размонтирования тома BTRFS (принудительно, если нужно), а затем по очереди отсоединяйте и заново подключайте каждую флешку. После этого файловая система должна быть смонтирована и запущена без проблем (до тех пор, пока та же проблема не возникнет снова).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .