Я использую Linux с 4 жесткими дисками, которые используют сектора 4k. Между моей файловой системой и необработанными устройствами есть несколько уровней: Диски> Linux Raid 5> dm-crypt> LVM.
Каждый ресурс, который я нашел, объяснял, как настроить каждый слой, чтобы гарантировать, что записи поверх этого слоя будут выровнены по границе сектора 4k. Однако я не нашел ничего, что объясняло бы, как проверить, что записи, сделанные на жесткие диски, действительно происходят на границах 4k.
Я не заинтересован в пересмотре моей установки, чтобы использовать логику, чтобы определить, правильно ли она выровнена. Я хочу изучить, что на самом деле происходит, когда на диск производятся записи.
Как я могу зарегистрировать или просмотреть адреса и размер записей, которые делаются на мои жесткие диски, чтобы я мог проверить, что они правильно выровнены?
источник
Напишите блок 4k и посмотрите, сколько данных считывается / записывается
iostat
(столбцы «Blk_read», «Blk_wrtn»). Если данные не выровнены, запись инициирует чтение в первую очередь и более 4 тыс. Записей.Вы должны быть осторожны, чтобы не измерять какие-либо обновления метаданных, или ... или просто заглушить их, делая тысячи записей 4k .... Так что убедитесь, что больше ничего не сканирует диски или не хранит открытые файлы (я думаю,
lsof
что будет достаточно?), затем откройте новый файл, подождите, запуститеiostat
, запишите 4k в файл, синхронизируйте запись (или просто подождите немного?), затем проверьтеiostat
снова.Это, кажется, дает разумный вывод для меня:
Справочная
iostat
страница Note утверждает, что она содержит 512 байтных блоков, и я вижу, что было написано более 80000 дополнительных блоков, и не было прочитано ни одного блока. Если ваше выравнивание отключено, вы увидите аналогичное количество операций чтения (поскольку для записи неверно выровненного 4k требуется чтение двух затронутых блоков, изменение их и запись обратно). Фактически, единственная причина, по которой выравнивание важно, состоит в том, чтобы избегать таких чтений (так что это действительно то, что вы хотите искать: читает ли триггер рабочей нагрузки записи?)источник