Або вам пощастило, що ніколи не було пошкоджених даних, або вам не пощастило ніколи не помітити, що ваші дані були пошкоджені.
Коли ви виконуєте дію, яка повинна записуватись на диск, більшість операційних систем ставлять операцію запису в чергу. Час від часу вони змивають чергу. (Я називаю це чергою тут, але насправді операції можна виконувати поза порядком; операційні системи роблять це тоді, коли це швидше і дає той самий кінцевий результат.) Це може зробити операції запису набагато швидшими, і тому, що система намагається виконувати їх, коли не має нічого кращого робити і тому, що він може інтелектуально їх групувати.
Якщо у вас вимкнеться підключення пристрою до того, як все буде написано, ви можете пропустити останні дані. Гірше, якщо ОС виконує операції не в порядку, ви можете перевести свій пристрій у невідповідний стан і втратити більше, ніж останні дані.
Деякі операційні системи переходять у більш консервативний (але повільніший) режим для знімних пристроїв, щоб зменшити ризики, пов’язані з відключенням пристрою до того, як його відключити.
ДОБАВЛЕНО :
Виконання операцій поза порядком іноді не є лише питанням швидкості. Дешеві флеш-носії (що не здійснюють перерозподіл сектору на апаратному рівні) мають обмеження в кількості разів, коли ви можете писати в будь-якому секторі. Якщо ви наївно записуєте всі зміни у міру їх виникнення, це може знищити сектори, які містять таблицю розподілу файлів у файловій системі (V) FAT (найпоширеніший випадок для змінних дисків) або журнал у типовій сучасній файловій системі. (Див., Наприклад, це обговорення у sync
списку розсилки Linux Kernel .) Тут, не оновлюючи FAT або журнал кожного разу, коли файл записується, - це не лише великий приріст продуктивності, він також корисний для життя обладнання.
До недавнього часу Linux лише робив вибір між sync
(записувати всі зміни, коли вони відбуваються) та async
(пишіть, коли це зручно). Останні версії вводять flush
опцію для файлових систем FAT, яка знаходиться десь посередині (змийте всі відкладені записи, як тільки диск стане неактивним); він включений за замовчуванням в Ubuntu 10.04.
З іншого боку, відключення знімного диска гарантує, що жодна програма не має відкритого файлу. Якщо ви не відключите її перед відключенням, ви не помітите, чи не зберегли дані, поки не пізно. Відключення під час відкриття файлу також збільшує ймовірність пошкодження як на рівні файлової системи (ОС може чергувати деякі операції до закриття файлу), так і на рівні програми (наприклад, якщо програма додає файл блокування, він виграє ' не знімати).