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