Чи можливо, що лише один біт перемикається, щоб мій файл показував мені букву "Q" замість "S"


22

У нашому додатку ми використовуємо Hibernate та PostgreSQL для зберігання даних. В одній із наших таблиць баз даних ми маємо колонку дискримінатора, яка пише, наприклад, "TIPPSPIEL". Це фіксований рядок і ним не може керувати жоден користувач.

Раптом у нас був один запис у цій величезній таблиці, де у нас замість "TIPPSPIEL" був "TIPPQPIEL". У нас немає поняття, як це може статися.

Чи можливо будь-яким способом наш жорсткий диск перемикає один біт, тому наша літера "S" більше не кодується як "1010001", але раптом стає "Q" на жорсткому диску одним битом, переключеним так: 1010011?

Я не є експертом з жорсткого диска трохи фізики, але я думаю, що в ОС або на диску є контрольні суми та інші речі, щоб переконатися, що цього не може відбутися

Чи можливо, що один біт перемикається, щоб мій файл показував мені букву "Q" замість "S"?

ОНОВЛЕННЯ: Ми зробили подальший аналіз. Наша рабська база даних отримує свої записи WAL від головного (функція PostgreSQL). Що б там не було: наш підлеглий сервер повинен синхронізуватися. Але раб не синхронізувався щодо цього конкретного ряду. Ми могли бачити, що це сталося кілька днів тому без будь-якої взаємодії користувача з цим записом. Так що ОБОВ'ЯЗКОВО треба трохи обернутися. страшно!


Я вважаю за краще, що це прийшло з несправної пам'яті. У вас ще є журнал, коли цей стовпець був написаний?
ott--

1
Його малоймовірні, але можливі, біти в транзиті будуть перевернуті з високим ступенем регулярності, див. "Бітскватінг"
Сірч

Відповіді:


10

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

Я думаю, що те, що ти бачиш, справді є однобітною помилкою, дивовижно, що ти можеш помітити це чесно, але ти прав, вважаючи, що другий найменш значимий біт був переключений (якщо припустити, що ти використовуєш ASCII все одно).

Що стосується контрольних сум тощо, коли він був записаний на диск, він, ймовірно, буде перевірений як добре - я впевнений, що ця проблема розвинулася згодом через просту магнітну помилку витоку. Але ви маєте рацію, робиться перевірка кодування, вона залежить від виробника, але, мабуть, десь є помилка, яка говорить: "Це виглядає дещо дивно" - але який варіант має ваша мережа вводу-виводу? відмовити вам у цілому блоці? Я припускаю, що це один диск без RAIDed, оскільки вони мають RAIDed-диски, як правило, більше доступних варіантів, коли вони виявляють помилки.

Це дивно, хоча подібна річ, мабуть, траплялася кілька разів на секунду у всьому світі.


1
Ви маєте рацію, це була настройка диска без Raid. як показав мій подальший аналіз, це сталося задовго після написання запису.
січня 1313 року

1
Якщо мої 20 років, як сисадмін, я бачив 3 випадки одного біт-фліпу. Лише одного з них можна було довести 100%. Інші 2 підозрювались у перевернутих бітах, ми не могли сказати напевно. (Біт міг перевернути пам’ять після прочитання файлу. До того моменту, коли ми помітили розбіжність, оригінальний файл уже недоступний або його не торкалися. Я впевнений, що це трапляється частіше, ніж кожен думає, але це рідко помічається і зазвичай не піддається доказуванню, якщо це помічено.
Тонні

1
Помилка зчитування всього блоку - це саме те, що накопичувачі роблять, коли отримують нерегульовану помилку. Неможливо мати лише один бітовий фліп у частині даних про користувачі сектору і не виявити його. Біт, мабуть, був перевернутий під час запису на диск.
psusi

Чи варто це питання зробити канонічним?
Мисливець на оленів

@psusi Не неможливо, оскільки вам просто потрібно достатньо біт-переворотів у секторі, щоб ECC вийшов правильно. Навряд чи, але можливо, і виробники дисків цитують досить високі показники помилок, які вам дійсно варто було б очікувати, щоб їх побачити. Я чув чутки, що люди із ZFS бачать їх (завдяки контрольним
сумам
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.