4

Мне хорошо известно, что жесткие диски с вращающимся диском имеют встроенный контроллер и встроенный дисковый кэш.

Теперь существует ли «дисковый» кэш на USB-накопителе (4 или 8 ГБ)? Кстати, а как насчет твердотельного накопителя?

(Я предполагаю, что, поскольку твердотельный накопитель медленнее, чем ОЗУ компьютера, к которому он подключен, иметь встроенный дисковый кэш в твердотельном состоянии имеет смысл. Но поскольку USB-накопитель значительно меньше как по объему, так и по физическим размерам относительно твердотельного накопителя, у первого может не быть встроенного дискового кэша.)

Контекст: я пытаюсь выяснить:

  1. если в Linux потребуется /bin/sync , чтобы абсолютно гарантировать отсутствие потери данных, если сбой питания произойдет вскоре после того, как ОС сообщит о завершении операции записи?

  2. если /bin/mount -o sync ... "эффективно" отключит такой встроенный кеш (если он вообще существует)?

  3. и, наконец, как бы ответили на все вышеперечисленные вопросы, если бы ОС была Windows вместо Linux?

2 ответа2

3

Теперь существует ли «дисковый» кэш на USB-накопителе (4 или 8 ГБ)? Кстати, а как насчет твердотельного накопителя?

Нет нет. Флэш-память в этих устройствах намного быстрее, чем вращающиеся жесткие диски с головками привода R/W, поэтому кэш не является экономически эффективным.
Но отсутствие "кеша" на этих устройствах не означает, что нет локальной буферизации.
Все еще будет память для буферизации данных сектора между интерфейсом USB или SATA и флэш-памятью.

если в Linux потребуется /bin /sync, чтобы абсолютно гарантировать отсутствие потери данных, если сбой питания произойдет вскоре после того, как ОС сообщит о завершении операции записи?

sync всегда требуется, чтобы гарантировать, что ОС правильно сбросила все свои буферы на устройство.
Завершение write() (в зависимости от указанной синхронизации) может указывать только на то, что данные пользователя или файла были переданы в системный буфер или что операция записи фактически завершилась. Но помимо данных в файле, должны быть также метаданные файловой системы (таблицы распределения секторов, записи каталога для длины файла, времени модификации и т.д.).

Но одной sync недостаточно, чтобы гарантировать, что все записанные данные действительно были записаны периферийным устройством. Связанный системный вызов для sync - это syncfs , что подразумевает, что они предназначены только для уровня файловой системы, а не на уровне устройства. Существуют операции синхронизации на уровне устройства, а также операции синхронизации на уровне файловой системы. Операции Unmount или eject должны выполнить эти окончательные подтверждения синхронизации перед выпуском устройства.

если /bin /mount -o sync ... "эффективно" отключит такой встроенный кеш (если он вообще существует)?

Нет, эта "синхронизация" на уровне монтирования не должна влиять на оптимизацию уровня устройства. Если кеш периферийного устройства может быть отключен, я ожидаю, что это будет делать ioctl() о котором mount вряд ли будет знать.

и, наконец, как бы ответили на все вышеперечисленные вопросы, если бы ОС была Windows вместо Linux?

Нет существенной разницы.

3

Да, на флэш-накопителях USB есть контроллер и кэш. Нет другого способа сопоставить устройства, которые работают на разных скоростях. Нет другого способа сделать такие вещи, как выравнивание износа и конвейерная обработка.

если в Linux потребуется /bin /sync, чтобы абсолютно гарантировать отсутствие потери данных, если сбой питания произойдет вскоре после того, как ОС сообщит о завершении операции записи?

Да, но это не имеет ничего общего с кешем в устройстве. Это связано с программным кешем, реализованным в ОС.

если /bin /mount -o sync ... "эффективно" отключит такой встроенный кеш (если он вообще существует)?

Нет, это приведет к отключению кэша ОС. Вы не можете отключить встроенный кэш, иначе устройство перестанет работать. Где будут храниться данные, считанные с флэш-памяти, пока ОС не будет готова к этому? Где будут храниться данные, которые ОС написала до завершения флэш-записи?

и, наконец, как бы ответили на все вышеперечисленные вопросы, если бы ОС была Windows вместо Linux?

Тот же ответ. Подобно жестким дискам, другие устройства, которые действуют как жесткие диски, имеют встроенные контроллеры и кэш-память.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .