Либо вам повезло, что у вас никогда не было поврежденных данных, либо вам не повезло, что вы никогда не заметили, что ваши данные были повреждены.
Когда вы выполняете действие, которое должно записывать на диск, большинство операционных систем помещают операцию записи в очередь. Время от времени они сбрасывают очередь. (Я называю это очередью здесь, но на самом деле операции могут выполняться не по порядку, операционные системы делают это, когда это быстрее и дает тот же конечный результат.) Это может сделать операции записи намного быстрее, потому что система пытается выполнить их, когда у нее нет ничего лучше, и потому, что она может их разумно сгруппировать.
Если вам случится отключить устройство до того, как все будет написано, вы можете пропустить последние данные. Хуже того, если ОС выполняет операции не по порядку, вы можете перевести ваше устройство в несогласованное состояние и потерять больше, чем самые последние данные.
Некоторые операционные системы переходят в более консервативный (но более медленный) режим для съемных устройств, чтобы снизить риски, связанные с отключением устройства перед его отключением.
ДОБАВЛЕНО:
Выполнение операций не по порядку - это иногда не просто вопрос скорости. Недорогие флэш-носители (которые не относятся к перераспределению секторов на аппаратном уровне) имеют ограничение на количество раз, которое вы можете записывать в любой данный сектор. Если вы наивно пишете все изменения по мере их возникновения, это может привести к уничтожению секторов, содержащих таблицу размещения файлов в (V) файловой системе FAT (наиболее распространенный случай для съемных дисков) или в журнале типичной современной файловой системы. (См., Например, это обсуждение sync
в списке рассылки ядра Linux.) Здесь не обновлять FAT или журнал каждый раз, когда файл записывается, это не только большой выигрыш в производительности, но и срок службы оборудования.
До недавнего времени Linux предоставлял только выбор между sync
(записывать все изменения по мере их возникновения) и async
(запись, когда это удобно). В последних версиях введена опция flush
для файловых систем FAT, которая находится где-то посередине (сбросить все отложенные записи, как только диск станет неактивным); он включен по умолчанию в Ubuntu 10.04.
С другой стороны, отключение съемного диска гарантирует, что ни у одного приложения нет открытого файла. Если вы не отключите перед отключением, вы не заметите, если у вас есть несохраненные данные, пока не станет слишком поздно. Размонтирование при открытом файле также увеличивает вероятность повреждения как на уровне файловой системы (некоторые операционные системы могли ставить в очередь некоторые операции до закрытия файла), так и на уровне приложения (например, если приложение помещает файл блокировки, оно выигрывает ' быть удаленным).