Почему Mac требует извлечения USB, но Windows и Linux не делают?
Почему Mac требует извлечения USB-диска, а Windows и Linux - нет? Происходит ли umount на mac?... если так, то почему linux не требует umount?... и если да, то какой windows эквивалентен umount?
Также кажется, что Mac предупреждает о "потере данных", как будто он всегда передает данные... почему это так?
Каков худший возможный сценарий отключения флэш-накопителя без его монтирования на Mac, и почему это не происходит в Linux?
Какой наихудший сценарий отключения флэш-накопителя во время копирования файлов (во всех перечисленных операционных системах).
1 ответ
Windows и Linux требуют извлечения, даже если они имеют определенные средства защиты. Они просто не обязательно добросовестны в обучении пользователей. (Т.е. предупреждаю вас об этом). Размонтирование / "извлечение" позволяет ОС гарантировать, что она больше не "передает данные".
Возможно, ваше приложение копирования не вернется, пока все данные не будут записаны на устройство. (Насколько вы доверяете своему пониманию приложения для копирования?) Однако один примерный сценарий состоит в том, что ваш файловый менеджер отображает миниатюры изображений и начинает записывать кэш миниатюр на устройстве, не осознавая этого.
Удаление устройства во время записи повредит файловую систему. Я не знаю, как другие ОС обрабатывают нечисто размонтированные файловые системы FAT на съемных устройствах, но Linux их вообще не обнаруживает. Поэтому следующее монтирование не приведет к восстановлению файловой системы, и файловая система останется поврежденной.
Насколько вероятно, что поврежденный FAT приведет к потере данных с течением времени, я не уверен. Вероятно, есть разумные попытки защититься от этого на хорошо развитых ядрах, таких как Windows и Linux, из-за того, как часто люди делают это. (Аналогичным образом, у linux есть опция монтирования, которая пытается соответствовать поведению съемного FAT в Windows... она выполняет fsync() для close() или что-то в этом роде).
Однако, это хорошая гигиена, чтобы не допустить повреждения ваших файловых систем. Если ничего другого, это означает, что если вы вынуждены отключаться нечистым образом (например, из-за сбоя питания), то вы можете впоследствии проверить файловую систему на наличие повреждений, и вы столкнетесь только с тем, что произошло недавно.
Как в худшем случае? Ваше USB-устройство очень дешевый SSD. Дорогие твердотельные накопители выходят из строя, когда теряют энергию, включая потерю всех данных на устройстве. Спи спокойно и ухаживай. https://www.usenix.org/conference/fast13/understanding-robustness-ssds-under-power-fault
Даже если вам повезет, вы можете потерять данные на целом 2-мегабайтном блоке стирания - когда вы записываете только 512-байтовый файл на этом EB. При использовании флэш-памяти устройство должно стереть все 2 МБ ЭБ, прежде чем оно сможет перезаписать данные. И устройство будет переназначать секторы по нескольким причинам, поэтому 2 МБ потерянных данных могут быть из нескольких мест в любом месте файловой системы. Здесь я приведу пример беды разработчика ядра Pavel Machek, осознав, что файловые системы linux ext (даже с журналированием) не защищают его данные от этого известного режима сбоя. (Жир на самом деле не лучше).
[Здесь я не очень хороший пример, потому что у меня есть ноутбук с SD-картой, я часто позволяю ему разряжаться, и он накапливает ошибки до такой степени, что fsck.vfat не всегда может их исправить. OTOH нет ничего на карте, что у меня нет копии в другом месте:). В прошлом у меня было 3 неожиданных отказа оборудования SD-карты.