LINUX.ORG.RU

sgdisk не устанавливает выравнивание секторов

 , , , ,


0

2

Ситуация следующая. Мне нужно вот такая разбивка разделов:

[majestio-pc images]# gdisk -l /dev/sdb
GPT fdisk (gdisk) version 1.0.1

Partition table scan:
  MBR: hybrid
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with hybrid MBR; using GPT.
Disk /dev/sdb: 1953519616 sectors, 931.5 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 7D87765F-B034-4F22-84F5-1033CAB3884E
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 1953519582
Partitions will be aligned on 8-sector boundaries
Total free space is 0 sectors (0 bytes)

Number  Start (sector)    End (sector)  Size       Code  Name
   1             162            2047   943.0 KiB   EF00  EFI System
   2            2048        25167872   12.0 GiB    0700  Microsoft basic data
   3              34             161   64.0 KiB    EF02  BIOS boot partition
   4        25167873      1953519582   919.5 GiB   0700  Microsoft basic data

И я ее успешно получаю используя утиль gdisk . Но не хотелось бы интерактивного режима. Пробую использовать sgdisk . Но не получается этой утилитой выставить выравнивание секторов == 1. Вот пример:

[majestio-pc majestio]# sgdisk --zap-all /dev/sdb
GPT data structures destroyed! You may now partition the disk using fdisk or
other utilities.
[majestio-pc majestio]# wipefs /dev/sdb
[majestio-pc majestio]# gdisk -l /dev/sdb
GPT fdisk (gdisk) version 1.0.1

Partition table scan:
  MBR: not present
  BSD: not present
  APM: not present
  GPT: not present

Creating new GPT entries.
Disk /dev/sdb: 1953519616 sectors, 931.5 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 7BDEF847-4289-495D-AF3A-B0D8344B1D79
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 1953519582
Partitions will be aligned on 2048-sector boundaries
Total free space is 1953519549 sectors (931.5 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
[majestio-pc majestio]# sgdisk --set-alignment=1 /dev/sdb
Creating new GPT entries.
[majestio-pc majestio]# sgdisk --new=1:162:2047 --typecode=1:EF00 /dev/sdb
Creating new GPT entries.
Information: Moved requested sector from 162 to 2048 in
order to align on 2048-sector boundaries.
Could not create partition 1 from 162 to 2047
Could not change partition 1's type code to EF00!
Error encountered; not saving changes.

Information: Moved requested sector from 162 to 2048 in order to align on 2048-sector boundaries!

И как это пониматьвашу, что я не так делаю?

PS. # sgdisk --new=1:162:2047 --typecode=1:EF00 --set-alignment=1 /dev/sdb также не отрабатывает как хотелось бы.

А если и --set-alignment=1 воткнуть туда же? просто у тебя он в другой команде и я сомневаюсь что он имеет эффект за пределами того вызова sgdisk в котором этот флаг указан

Xenius ★★★★★ ()
Последнее исправление: Xenius (всего исправлений: 1)
Ответ на: комментарий от Xenius

А если и --set-alignment=1 воткнуть туда же? просто у тебя он в другой команде и я сомневаюсь что он имеет эффект за пределами того вызова sgdisk в котором этот флаг указан

Пробовал. В «PS» отписал ниже - не помогает :(

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

И partprobe , partprobe /dev/sdb пробовал после каждой команды - результат нулевой.

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

Вобщем, ничего не получается с sgdisk'ом. Пока использую «костыль»:

sed -e 's/\s*\([\+0-9a-zA-Z ]*\).*/\1/' << EOF | gdisk /dev/sdb
         x # меню дополнительных команд
         l # задаем выравнивание разделов
         1 # равное = 1
         m # выход в основное меню
         n # создание нового раздела
         1 # номер раздела
       162 # начальный сектор первого раздела
      2047 # конечный сектор первого раздела
      EF00 # тип первого раздела EFI System
         n # создание нового раздела
         2 # номер раздела
      2048 # начальный сектор второго раздела
1677723648 # конечный сектор второго раздела
      0700 # тип второго раздела Microsoft basic data
         n # создание нового раздела
         3 # номер раздела
1677723649 # начальный сектор третьего раздела
1679228096 # конечный сектор третьего раздела
      A503 # тип третьего раздела FreeBSD UFS
         n # создание нового раздела
         4 # номер раздела
1679228097 # начальный сектор четвертого раздела
1953519582 # конечный сектор четвертого раздела
      0700 # тип четвертого раздела Microsoft basic data
         n # создание нового раздела
         5 # номер раздела
        34 # начальный сектор пятого раздела
       161 # конечный сектор пятого раздела
      EF02 # тип пятого раздела BIOS boot partition
         r # изменение типа MBR
         h # ------------------
       2 4 # указание "видимых" разделов
         n # отказ перезаписи типа раздела
        07 # запись сигнатуры 2 раздела MBR
         n # отказ установки признака bootable
        07 # запись сигнатуры 4 раздела MBR
         n # отказ установки признака bootable
         n # отказ защиты нераспределенного пространства
         m # выход в основное меню
         w # запись таблицы разбиения
         y # подтверждение
EOF

Им создаю требуемую в данный момент разбивку.

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

Я может что-то не так понимаю... Но, я сейчас делаю подобное вот так:

sgdisk -n 0:0:-1024M -t 0:a504 -c 0:«ZoL_part_of_raid» /dev/sdd

То есть:

  • -n - говорю создай раздел.
  • 0: - посмотри автоматом какой там должен быть номер.
  • :0 - посмотри автоматом какой там должен быть начальный сектор.
  • :-1024M - используй все свободное пространство, за минусом свободного 1 гб. — Вот тут сомневаюсь, будет ли выравнен раздел по конечному значению. Но вроде, должен быть.
  • -t 0:a504 - поставь тип раздела: zfs на вновь создаваемом разделе
  • -c 0:«ZoL_part_of_raid» - дай человеко читаемое примечание новому разделу.
  • То есть, везде где стоят: 0, означает делай автоматом.

Вот результат:

# gdisk /dev/sdd -l
GPT fdisk (gdisk) version 1.0.1

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.
Disk /dev/sdd: 83886080 sectors, 40.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 81590833-BF7C-43BB-95B8-D49EBFAD6909
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 83886046
Partitions will be aligned on 2048-sector boundaries
Total free space is 2099166 sectors (1025.0 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048        81788894   39.0 GiB    A504  ZoL_part_of_raid
DALDON ★★★★★ ()
Ответ на: комментарий от DALDON

Я может что-то не так понимаю

Да.
ТС хочет выравнивание на 1, а не на 2048 (то есть, отключить выравнивание), чтобы получить, в том числе:


Number Start (sector) End (sector) Size Code Name
1 162 2047 943.0 KiB EF00 EFI System
...
3 34 161 64.0 KiB EF02 BIOS boot partition

Но sgdisk с этим не хочет согласиться и принудительно выравнивает раздел на 2048.

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

Ок. Только не очень понимаю зачем ему такое выравнивание... Я вот наоборот очкую что мне не выравняет раздел как нужно... А тут обратная ситуация.

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

не очень понимаю зачем ему такое выравнивание

Сэкономить пустующее место до 2048 сектора, разместив там разделы, запись на которые не производится практически никогда, а чтение — только при загрузке системы:
EF02 BIOS boot partition — тут будет жить GRUB
EF00 EFI System — это ESP с ядром и конфигом GRUB

bormant ★★★★★ ()

Slackware 14.2 x86_64

# sgdisk -V
GPT fdisk (sgdisk) version 1.0.0

# sgdisk -Z /dev/sdb
GPT data structures destroyed! You may now partition the disk using fdisk or
other utilities.

# sgdisk -a1 -n1:162:2047 -t1:EF00 -n3:34:161 -t3:EF02 /dev/sdb
Creating new GPT entries.
The operation has completed successfully.

# gdisk -l /dev/sdb
GPT fdisk (gdisk) version 1.0.0

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.
Disk /dev/sdb: 16777216 sectors, 8.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): B354973B-92D8-4B3F-8352-893997742A97
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 16777182
Partitions will be aligned on 2-sector boundaries
Total free space is 16775135 sectors (8.0 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1             162            2047   943.0 KiB   EF00  
   3              34             161   64.0 KiB    EF02  

Вроде как всё логично.

bormant ★★★★★ ()

Сделайте так:

# sgdisk /dev/sdb -Z -g -a1 \
  -n1:162:2047 -t1:EF00 \
  -n2:2048:25167872 -t2:0700 \
  -n3:34:161 -t3:EF02 \
  -n4:25167873:1953519582 -t4:0700

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