Возможно ли, чтобы размер логического блока файловой системы был меньше размера физического сектора?

387
Karim Manaouil

Допустим, у нас есть блочное устройство (например, жесткий диск) с размером сектора 4096 байт, и эмуляция 512 байт недоступна (жесткий диск распознает только блоки размером 4096 байт).

Можно ли отформатировать устройство с файловой системой, которая имеет логический блок 512 байт? Как fs будет использовать дисковые блоки? Я имею в виду, что он просто будет использовать 512 байт из 4096 байт, а остальные будут потрачены впустую (однозначное отображение между секторами диска и блоками fs)? Я предполагаю, что если файловая система знает об этой проблеме, он может сам выполнить какую-то эмуляцию 512 байт (чтение сектора диска, изменение части 512 байт в ОЗУ, а затем запись сектора обратно на диск), хотя будут некоторые издержки или избыточность работать на каждую запись. Я не совсем уверен, имеет ли это смысл! Поправь меня пожалуйста.

0
Это возможно, но очень неэффективно. Так же, как ОС обычно скрывает физический размер блока мультимедиа от пользователя / приложений с помощью буферов, дополнительный драйвер для выполнения 512-байтовой эмуляции может быть наложен поверх основного драйвера диска. * «Я имею в виду, что он будет использовать 512 байтов из 4096 байтов ...» * - Нет, это расточительно и глупо. Итог: Примерно с тем же усилием было бы лучше исправить файловую систему так, чтобы она соответствовала размеру сектора. sawdust 6 лет назад 1

1 ответ на вопрос

0
Karim Manaouil

Такая конфигурация возможна, но она не очень распространена. Все основные файловые системы (NTFS, FAT32, ext4, btrfs ... и т. Д.) Используют блоки по 4 КБ, которые соответствуют наиболее часто используемой конфигурации размера страницы памяти (страницы 4096 байт). Диски до этого десятилетия использовали 512 физических секторов, но все современные жесткие диски (и даже твердотельные накопители) используют 4 КБ физических секторов (из-за проблем с воздушной плотностью), но потому что существует большой унаследованный программный стек, который имеет предположение 512 байт на блочных устройствах (Windows Vista Windows XP, Linux Kernel до версии 2.6 и многие другие пользовательские утилиты и встроенные приложения) производители жестких дисков реализуют так называемую эмуляцию 512 байт, которая предоставляет программному обеспечению (операционная система) размер сектора 512 байт, но использует базовый размер сектора 4096 байт.

XFS может быть настроен на использование блоков по 512 байт, но если вы хотите (я говорю сам с собой !!?) Использовать эту конфигурацию на дисках 4096b, вы должны убедиться, что ваши разделы хорошо выровнены, в противном случае вы будете страдать от производительности ухудшение: если вы записываете блок 512b, диск сначала извлекает весь сектор 4096b во внутреннюю DRAM, модифицирует часть из 512b, а затем записывает его обратно на диск (хотя некоторые методы кэширования могут уменьшить влияние этой проблемы),

Итак, окончательный ответ: да, это возможно, но это может привести к снижению производительности, и обычно это не обычная конфигурация, наблюдаемая в IRL.

даже если диск правильно выровнен, вы все еще страдаете от снижения производительности, потому что чтение-модификация-запись всегда требуется для записи, которая меньше размера блока phuclv 6 лет назад 0