Проблема с поиском оптимального выравнивания нескольких разделов на внешнем жестком диске Advanced Format 931,5 ГиБ в Linux

651
gluonman

РЕЗЮМЕ

У меня есть ноутбук Dell Inspiron 17-5767 с внутренним диском объемом 1 ТБ. Я позволил исходной версии Windows 10 сохранить и доминировать над собой (это моя игровая ОС). Кроме того, у меня есть два внешних диска, с которых я делаю и буду загружать мою текущую и будущую ОС Linux. Моя текущая настройка выглядит следующим образом:

  1. Порт USB 3.0 № 0: расширение Seagate + 931,5 ГБ (1000204885504 байт). Внешний жесткий диск распознается как / dev / sdb
    • в настоящее время размещается один полноразмерный пустой раздел ext4, но изо всех сил пытался заменить его оптимальной выровненной схемой разбиения из 12 разделов (точка борьбы заключается в выравнивании)
  2. Порт USB 3.0 № 1: 238,5 ГБ (256060514304 байта) Samsung SSD 840 Pro распознается как / dev / sdc
    • был разделен с помощью установщика Fedora LiveCD (с опцией «custom») и содержит оба дистрибутива Fedora LXDE и Lubuntu linux в одном LVM, содержащем общее пространство подкачки, общее пространство пользователя, отдельные корни и отдельные внешние загрузочные разделы ( внешний здесь, я имею в виду не в LVM, а в своих отдельных основных разделах в другом месте на том же диске)
    • Этот диск имеет как физический, так и логический размер блока 512, и оптимально выровнен, в соответствии с утилитой parted 'align-check opt x', и fdisk также доволен выравниванием (нет жалоб на выравнивание ни от одной утилиты)
  3. UEFI BIOS пытается загрузиться с USB до внутреннего, поэтому я получаю всплывающее окно со всеми моими доступными опциями

ЦЕЛЬ

Я пытаюсь воспроизвести что-то похожее на то, что у меня происходит с / dev / sdc на диске / dev / sdb, но с 5 дистрибутивами Linux. Этот аспект моего проекта я рассмотрел, так как я опытный мультизагрузчик. Но другая часть моей цели состоит в том, чтобы разделение на / dev / sdb было оптимально выровнено, как в случае с / dev / sdc, и здесь я столкнулся с проблемой.

СРЕДА

В настоящее время я работаю с моей относительно свежей и обновленной установкой Fedora LXDE, и результаты, которые я получаю, полностью повторяются в моей относительно свежей и обновленной установке Lubuntu.

ОТЧЕТНЫЕ ПАРАМЕТРЫ ДИСКА

[root@frank ~]# cat /sys/class/block/sdb/queue/physical_block_size  4096 [root@frank ~]# cat /sys/class/block/sdb/queue/logical_block_size  512 [root@frank ~]# cat /sys/class/block/sdb/queue/minimum_io_size  4096 [root@frank ~]# cat /sys/class/block/sdb/queue/optimal_io_size  33553920 [root@frank ~]# cat /sys/class/block/sdb/alignment_offset  0 [root@frank ~]# fdisk -l /dev/sdb Disk /dev/sdb: 931.5 GiB, 1000204885504 bytes, 1953525167 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 33553920 bytes Disklabel type: gpt Disk identifier: 9428D9DB-746C-40CA-B189-060F92A10E3C  Device Start End Sectors Size Type /dev/sdb1 65535 1953467279 1953401745 931.5G Linux filesystem  Partition 1 does not start on physical sector boundary. [root@frank ~]# 

ПРОБЛЕМА

Таким образом, на основе отчетов о размере физического блока получается, что диск имеет размер 4 КБ (расширенный формат), а не 512b, как у другого диска, хотя для целей обратной совместимости он использует логический размер сектора 512 КБ. Я могу сказать, что утилита parted GNU принимает размер блока 512, потому что при вычислении оптимального интервала ввода-вывода

(optimal_io_size + alignment_offset) / physical_block_size = optimal_sector_interval 

он получает значение 65535, то есть, где он автоматически запускает первый раздел, и единственный способ, чтобы вспомогательная утилита проверки выравнивания прошла выравнивание раздела как оптимальное, - это если он начинается с кратного 65535. Единственный способ, которым parted Результат имеет смысл, если вы считаете, что он обрабатывает phys_io_size как 512 вместо 4096

(33553920 + 0) / 512 = 65535. 

Однако по понятным причинам parted не может использовать размер блока 4096, потому что тогда уравнение сработает для

(33553920 + 0) / 4096 = 8191.875. 

Этот ответ удовлетворил бы учителя старшей школы по алгебре, но, очевидно, не имеет смысла как интервал сектора, для которого можно было бы ожидать дискретное значение (то есть целое число!). В любом случае, поскольку я хочу создать 12 разделов, некоторые из которых имеют размер не более 256 МБ, это невозможно сделать в GNU Parted с использованием процентов, а вкратце я смог выполнить только проверки выравнивания для оптимального выравнивания придерживаясь 'unit s' и выполняя модульную арифметику самостоятельно, чтобы убедиться, что мои разделы начинаются с интервалами 65535, я захотел, чтобы расставался раздел. Основываясь на моих исследованиях, я не думал, что было так важно, чтобы мои разделы также заканчивались с такими интервалами, и, следовательно, у меня остались промежутки (очевидно, не более 65535) между большинством моих разделов.

И снова parted подумал, что мой результат был оптимально выровнен, рассматривая размер физического блока как 512 вместо 4096. Но затем, после выхода из parted и запуска 'fdisk -l / dev / sdb', я получил в выводе следующее:

Partition 1 does not start on physical sector boundary. Partition 2 does not start on physical sector boundary. Partition 3 does not start on physical sector boundary. Partition 4 does not start on physical sector boundary. Partition 5 does not start on physical sector boundary. Partition 6 does not start on physical sector boundary. Partition 7 does not start on physical sector boundary. Partition 8 does not start on physical sector boundary. Partition 9 does not start on physical sector boundary. Partition 10 does not start on physical sector boundary. Partition 11 does not start on physical sector boundary. Partition 12 does not start on physical sector boundary. 

Итак, что любит расстаться, fdisk нет. Затем я попытался использовать gParted, чтобы переделать мою схему разбиения, позволив ей использовать размер 1 МБ, и он начал первый раздел в 2048 с, как вы видели на моем другом диске (/ dev / sdc). Тогда fdisk был доволен и перестал жаловаться на выравнивание секторов, но после этого GNU parted не прошел тесты проверки выравнивания для оптимального режима, хотя он прошел бы для минимального режима.

Однако я обнаружил, что в обоих случаях mkswap (который я использовал для создания тома подкачки в LVM, который я поместил в / dev / sdb11) дал мне следующее предупреждение:

[root@frank ~]# mkswap /dev/strange_quark_experimental/swap mkswap: warning: /dev/strange_quark_experimental/swap is misaligned 

Таким образом, mkswap находит, что мой том подкачки не выровнен, независимо от того, считает ли parted, что диск оптимально выровнен или выровнен по минимуму, и mkswap также обнаружит, что мой том подкачки не выровнен, независимо от того, радует fdisk выравнивание или нет.

ТЕОРИЙ

Все это оставляет у меня впечатление, что мне, возможно, придется игнорировать предупреждения, по крайней мере, от одной утилиты создания отчетов или разбиения диска, но я не уверен, какая именно. Также возможно, что все отчеты с самого начала ненадежны, так как USB-совместимый корпус, содержащий жесткий диск, может неверно сообщать хотя бы один из параметров сектора. Например, может быть, это на самом деле не диск AF? Или возможно это оптимальный размер IO, о котором сообщают неправильно. Или может оба? И, поверьте мне, я также рассмотрел возможность того, что это случай PEBKAC, так как я мог бы просто неправильно понять что-то о том, как выровнять разделы на диске 4k. Я не уверен.

Что бы ни происходило, я буду рад двигаться вперед с моими фактическими установками Linux, как только я верю, что мои разделы оптимально выровнены и mkswap, или, по крайней мере, утилиты, которым я действительно должен доверять больше всего, перестанут жаловаться на выравнивание.

ПОМОГИТЕ

Пожалуйста, помогите мне понять, почему я не могу разойтись и другие дисковые утилиты, чтобы договориться о чем-то большем, чем минимальное выравнивание (достигается только при разбиении на разделы с помощью gParted или gdisk), и, пожалуйста, посоветуйте мне, действительно ли я должен слишком беспокоиться о преимуществах оптимального выравнивания по сравнению с минимальным выравниванием в моем случае, поскольку я не буду тратить впустую дополнительное время, если есть слишком незначительная разница в производительности или исправности диска. В противном случае я бы хотел в полной мере воспользоваться преимуществами расширенного формата моего диска.

1
На диске AF с размером физического сектора 4096 байт разделы должны начинаться с этим размером. Т.е. начальный 512-байтовый номер сектора должен быть кратным восьми. Это так просто. Johan Myréen 6 лет назад 0
Правильно, и, как я указал, когда используется кратное 8, как начальная точка 2048 с (как, например, то, что я получил с помощью gParted), утилита parted видит диск не оптимально выровненным, а выровненным только минимально, и mkswap жалуется что мой объем подкачки в LVM смещен, независимо от того, придерживаюсь ли я 2048-ых или соответствую странному требованию parted для интервала 65535-ых для оптимального выравнивания. Просто посмотрите на параметры сектора, которые нарисовала система. Как я могу даже поверить, что эти параметры в первую очередь правильно сообщаются? gluonman 6 лет назад 0
Мой внутренний диск - диск AF одинакового размера. Единственное отличие состоит в том, что он не имеет странного оптимального размера ввода-вывода, который гарантирует интервал между секторами за пределами дискретного пространства. Оптимальный размер ввода-вывода такой же, как и минимальный размер ввода-вывода 4096, и он начинается с 2048 с, и parted считает, что его разделы оптимально выровнены. Следовательно, мне интересно, единственная причина, по которой мои утилиты жалуются на смещения, и что parted хочет, чтобы я использовал 65535, заключается в том, что оптимальный размер ввода-вывода - неправильное число. Я думаю, что это моя лучшая гипотеза. Но я просто хочу быть уверен, что я действительно оптимизирован. gluonman 6 лет назад 0
«Оптимальный размер ввода-вывода» - это всего лишь некоторый намек, и 65535 определенно не оптимальны для использования в качестве числа 512-байтовых секторов для запуска раздела. Руководство GParted гласит: «Используйте выравнивание MiB для современных операционных систем». Johan Myréen 6 лет назад 0
Хорошо. В моей голове стало ясно, что parted - это просто неправильно в том, что он считает оптимальным (как на моей Fedora, так и на моем Lubuntu), потому что «подсказка» оптимального размера ввода-вывода, исходящая от этого конкретного диска, сбрасывает его. Вы бы согласились? Я имею в виду, я знал, что цифры были странными, но я доверял разлуке в течение многих лет, и, честно говоря, это первый раз, когда я видел, как это вызывает проблемы с выравниванием. Так что я должен, вероятно, просто пойти дальше и придерживаться интервалов 2048 с и игнорировать жалобы расстались (и mkswap, в этом отношении), верно? gluonman 6 лет назад 0
Должен ли я также беспокоиться о том, где заканчиваются мои разделы? Нужно ли заканчиваться значением x, где x mod 2048 = 0? Или это прекрасно, если между некоторыми разделами есть небольшой разрыв? gluonman 6 лет назад 0
Полагаю, что конечное выравнивание не имеет большого значения, но файловая система может выровняться по своему вкусу, так что вы можете потерять еще больше дискового пространства. Это, конечно, зависит от файловой системы. Johan Myréen 6 лет назад 0
Хорошо. Итак, чтобы прийти к выводу, согласитесь ли вы со следующим подходом с моей стороны? Я использую интервал 2048 с, и parted будет жаловаться, что он минимальный, но не оптимальный (ему нужно 65535), но я собираюсь игнорировать эти жалобы, потому что оптимальный размер ввода-вывода - дерьмовый намек. fdisk будет счастлив, но mkswap выдаст предупреждение, но я тоже проигнорирую это. И хотя я, вероятно, в порядке, не беспокоясь об окончаниях разделов, я буду устранять большинство возможных будущих проблем, следя за тем, чтобы мои разделы заканчивались в секторе, округленном до 2048, аналогично начальной точке. Это работает? gluonman 6 лет назад 0
Выглядит хорошо для меня. Но почему бы mkswap жаловаться? Johan Myréen 6 лет назад 0
Я, честно говоря, понятия не имею, кроме как догадываться, что он жалуется, потому что он запутался в параметрах сектора по той же причине, что и parted. Потому что оптимальный размер ввода-вывода - плохая подсказка, как вы упоминали ранее. Но это все еще касается продвижения вперед без абсолютного подтверждения. Мне все еще кажется, что я просто догадываюсь, что parted и mkswap вычисляют неправильно из-за плохой подсказки. Но вы помогли направить мои подозрения. gluonman 6 лет назад 0

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