Единственная ошибка контрольной суммы ZFS на зеркале, кажется мне невероятной

#linux #zfs

Вопрос:

У меня есть пул ZFS со следующей компоновкой и ошибками:

 config:

NAME                                                STATE     READ WRITE CKSUM
tank                                             ONLINE       0     0     0
  mirror-0                                          ONLINE       0     0     0
    wwn-0x5000039ff3d3b114-part2                    ONLINE       0     0     0
    wwn-0x5000039ff4d3b513-part1                    ONLINE       0     0     0
  mirror-1                                          ONLINE       0     0     0
    wwn-0x5000c500a42783bc-part1                    ONLINE       0     0     2
    wwn-0x5000c500a426d50b-part1                    ONLINE       0     0     2

errors: Permanent errors have been detected in the following files:

    tank/foo/bar@veryOldSnapshot;corruptFile.qcow2
 

Таким образом, это выглядит так, как будто на двух разных устройствах одна и та же запись была повреждена одновременно. Данные, о которых идет речь, находятся на этих дисках с 2019 года, и пул очищается каждую неделю. Каковы ваши шансы? ИМХО, это не может быть реальным случаем «биты переворачиваются из-за космического излучения или сбоя жесткого диска», потому что вероятность того, что на обоих дисках повреждены одни и те же блоки и нет другого блока, действительно мала.

Что еще могло быть причиной этого? Я запустил memtestx86 без проблем, и повторная очистка не выявила никаких других ошибок. Однако, поскольку блок используется в длинной цепочке моментальных снимков, даже удаление рассматриваемого снимка просто заставляет проблему перейти к следующему снимку.

Комментарии:

1. Наиболее вероятное объяснение, которое я могу придумать, заключается в том, что либо данные, либо их контрольная сумма были повреждены в оперативной памяти до записи на диск. Таким образом, ZFS обнаруживает повреждение, но не может его исправить, потому что все версии блока повреждены. Но в этом случае можно было бы ожидать, что более ранние скрабы заразятся этим.

2. Другая возможность заключается в том, что вы читали из блока на обоих дисках одновременно, и что-то случилось с обоими дисками одновременно, что привело к тому, что они перепутали данные под заголовком. Это кажется довольно маловероятным, хотя бы потому, что даже очень небольших различий во времени было бы достаточно, чтобы они не были синхронизированы в одном блоке.