LINUX.ORG.RU

libparted - почему оптимальный алигмент может быть равен ~15гиг?

 


0

2

В libparted, (я пользуюсь оберткой python-parted) когда разбиваешь диск на разделы, есть параметр алигмент. Что это такое само по себе - я знаю. Но. Там есть три функции: getConstraint() - возвращает обьект, позволяющий создавать партиции без алигментов.

minimalAlignedConstraint и optimalAlignedConstraint - как я понимаю, минимально рекомендуемые ограничения и оптимальные.

Так вот, если я создаю партиции с параметром optimalAlignedConstraint, то оно почему-то под алигн выделяет 15.69гиг. Не многовато ли? Откуда оно такое большое берется?

Код примера на гитхаб тут https://github.com/rhinstaller/pyparted/blob/master/examples/make_one_primary...

там они делают: disk.addPartition(partition=partition, constraint=device.optimalAlignedConstraint)

если используем device.minimalAlignedConstraint - размер алигн области 62.7мб

если используем device.optimalAlignedConstraint то размер алигн области 15.69гб перед началом партиции и 10 гиг после. Пятнадцадь гигов!!! И кроме того еще десять гигов обрезает с конца. Что это за алигн такой? Это нормально или это баг?

Инфа по винчестеру. Это ноутбучный hdd на 500гиг:

#print('give %s' % device)
give parted.Device instance --
  model: ATA TOSHIBA MQ01ABD0  path: /dev/sdb  type: 1
  sectorSize: 512  physicalSectorSize:  4096
  length: 976773168  openCount: 0  readOnly: False
  externalMode: False  dirty: False  bootDirty: False
  host: 5  did: 0  busy: False
  hardwareGeometry: (60801, 255, 63)  biosGeometry: (60801, 255, 63)

#print("minimumAligment=%s" % device.minimumAlignment )
minimumAligment=parted.Alignment instance --
  offset: 0  grainSize: 8

#print("optimumAligment=%s" % device.optimumAlignment )
optimumAligment=parted.Alignment instance --
  offset: 0  grainSize: 2048

Как видно из инфы, минимальный сектор, который рекомендуется должен быть кратен 8, но лучше чтобы был кратен 2048. Я подозреваю, что тут имеются в виду сектора логические (те что в данном винте по 512байт). Но даже если считать, что это предполагаются физические сектора, то оптимальный алигн должен быть 2048*4096=8метров, но никак не 16 гектар...

Я вообще не разбираюсь, но мб оно смотрит на пластины? Или это слишком низкоуровнево?

anonymous
()

Там всё от балды, даже теста нет никакого встроенного чтобы проверить выравнивание и выбрать лучшее.
Зачем вообще связываешься с этой библиотекой с вирусной лицензией ?

anonymous
()
Ответ на: комментарий от anonymous

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

Алигнить, отбрасывая пластины? Жестко :)

chabapok
() автор топика
Ответ на: комментарий от chabapok

Вобщем, в итоге я не нашел альтернатив libparted и пересобрал ее c исходников и пересобрал pyparted. Стало по-другому - правда тоже хреново, но есть позитивная динамика. Начинает партиции с первого сектора(на любых предустановленных алигнах), что очевидно неправильно.

Хорошая новость в том, что после пересборки ушли странные баги. Раньше я задавал, чтобы партиция начиналась с 16384 сектора, а оно ее почему-то делало начиная с 16065. (Но при этом в gparted это почему-то работало правильно). Теперь как скажешь - так и делает. Это внушает оптимизм.

chabapok
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.