2012-05-09 7 views
6

Я читал partedman page, но не может найти никакой документации по допустимым параметрам. Я пытаюсь разбить USB CompactFlash с определенными размерами разделов (независимо от размера CF). Но я бы хотел убедиться, что мое выравнивание совершенно правильное и оптимальное.Допустимые аргументы для parted

Например, когда я использую следующие команды:

parted -s -a optimal $DEV mkpart primary ext3 1 1600 
parted -s -a optimal $DEV mkpart primary ext3 1600 3200 
parted -s -a optimal $DEV mkpart primary ext3 3200 3600 

Это не ясно, если первый запуск раздела должен быть 1 или 0? Единственный намек, что я понимаю, что он должен начать с 1, а не ноль, когда я бегу:

parted /dev/sdc align-check optimal 1 

Который говорит мне, что выравнивается, когда, начиная с 1, а не выровнены, когда, начиная с 0. Но когда я начните с 1, и я сделаю «печать», начало в 1049 КБ ... это нормально? Когда я удаляю разделы печати, созданные другими инструментами, я вижу, что они начинаются с 32 КБ. Если я использую начало 0, он печатает начало 512 КБ. Что правильно, я не знаю!

Кроме того, я видел множество примеров по всему миру людей, использующих начальное значение для второго и третьего разделов в качестве конечного значения предшествующего ему раздела (то есть: 1600 и 3200 значений). Предположим, мы имеем перекрытие или приращение на 1? Человеческие страницы ничего не говорят об этом. И я видел некоторые веб-страницы, где они говорят, что его ошибка для начала имеет одинаковую ценность последнего конца.

Когда я использую '-a оптимальный', это, похоже, даже не влияет на мой раздел. Не использовать флаг выравнивания, похоже, дает тот же результат. Для чего это цель? Есть что-то, что мне не хватает?

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

Обратите внимание, что я использую расставленные в сценарии автоматической сборки, поэтому я использую флаг «-s».

Если кто-нибудь может просветить меня на этом, я был бы очень благодарен за это ... спасибо заранее!

+0

Этот вопрос будет уместен на сайте суперпользователя StackExchange. – BeowulfNode42

ответ

17

Я думаю, вы сделали пару интересных вопросов прямо здесь, о чем жаль никто не ответил им раньше, поэтому я постараюсь это сделать.


It's not clear if the first partition start should be 1 or 0?

Первый запуск раздел должен быть 1, потому что первые байты диска содержат Master Boot Record и структуру некоторых дисковых лейблов, таких как MS-DOS. Поэтому, если вы используете значение 0 в качестве начала первого раздела, libparted оставит несколько байтов в начале диска, чтобы разрешить это содержимое, разместив начало раздела сразу после первого сектора.


the start is at 1049kB... is this normal?

Это нормально. Для объяснения этого, сначала вы должны знать, что для libparted килобайт не равен 1024 байтам, вместо этого равен 1000 байт.

Кб = килобайт = 1000Bytes
KiB = KibiByte = 1024Bytes

Дополнительная информация:
http://en.wikipedia.org/wiki/Kilobyte
http://www.gnu.org/software/parted/manual/html_node/unit.html

Смещение раздел в КБ (килобайт) и его значение является приближением , если вы измените устройство на байты:

parted /dev/sdf unit b print 

вы увидите реальное значение: 1048576B это 1MiB (1048576B ~ = 1049KB), именно то, что вы хотели.


I see that they start at 32kB

Да, раздел начинается с 32KB, поскольку инструмент вы используете, вероятно, слишком стар, и вы используете диск с 512-байт размером сектора. Фактическим начальным смещением раздела, вероятно, будет 32256, что соответствует сектору 63. Несколько лет назад инструменты разбиения помещают начало первого раздела в 63-й сектор, чтобы выровнять его со старой геометрией CHS. Это слишком долго объяснять, но я рекомендую вам прочитать эти ссылки для получения более подробной информации:

https://superuser.com/questions/352572/why-does-the-partition-start-on-sector-2048-instead-of-63 http://lwn.net/Articles/377895/


If I use a start of 0, it prints a start of 512kB

Я думаю, он печатает старт на 512 байт, а не КБ , Я ошибаюсь?
На вашем диске секторов с 512 байтами первый сектор заканчивается на сдвиге 511, так, как я уже говорил выше, первый раздел начинается после первого сектора.


Are we suppose to have an overlap or increment by 1?

I Изменение единицы в байтах, вы увидите фактическое размещение перегородок и может проверить, что они не перекрывают друг друга.


What purpose is this for? Is there something I'm missing?

Это происходит потому, что, по умолчанию, раздвинул работы с МиБ. При вводе:

parted -s -a optimal $DEV mkpart primary ext3 1 1600 

Ты просишь расставались создать перегородку между смещениями, соответствующими MiB # 1 и # 1600. Смещения, совпадающие с MiB, всегда выровнены для максимальной производительности, поэтому нет необходимости указывать -a optimal. Если вы измените единицы в байтах вы можете создать внеблоковый раздел:

parted $DEV unit b mkpart primary 1000000 160MB 
parted $DEV align-check optimal 1 

Это показали ошибку: The resulting partition is not properly aligned for best performance.

Итак, попробуйте сделать то же самое с -a none вариант:

parted -a none $DEV unit b mkpart primary 1000000 160MB 

Теперь нет ошибки, это цель этой опции.


I really wish parted would be a lot more intelligent and not require a start, but rather could deduce it itself.

Я думаю, что эта функция будет реализована любым инструментом, который использует libparted, но я думаю, что не стоит в библиотеке ... но кто знает? возможно, какой-то разработчик libparted слушает ... вы пытались отправить отчет об ошибке? [email protected]