Intereting Posts
Tmux не масштабируется, чтобы заполнить окно Как я могу запустить keychain таким образом, чтобы только первая подсказка командной строки для ключей при запуске? Есть ли какой-нибудь инструмент, подобный apt-fast для snapcraft? Как изменить алгоритм управления перегрузкой TCP на OpenBSD? Создание 4-х секционных дисков Linux / Windows USB Как создать LiveDVD из установленного CentOS? Установите webdav на Linux с аутентификацией cookie Как очистить кеш DNS на DD-WRT Как запустить несколько «последовательных» процессов под управлением, учитывая доступные процессоры? Узнайте, какие сценарии запускаются bash при запуске ОЗУ и каталоги Flash во встроенной системе на основе Linux Утилиты VMWare останавливаются Работа над dist-upgrade Могу ли я автоматизировать сбор share cifs без сохранения моего пароля в открытом виде? Найти файл с наименьшим 4-значным номером rsync dir-merge, затронутый фильтрами на локальном и удаленном

Признание таблицы разделов GPT, созданной с разным размером логического сектора

У меня есть привод 3 ТБ, который я разбил на разделы с помощью GPT:

$ sudo sgdisk -p /dev/sdg Disk /dev/sdg: 5860533168 sectors, 2.7 TiB Logical sector size: 512 bytes Disk identifier (GUID): 2BC92531-AFE3-407F-AC81-ACB0CDF41295 Partition table holds up to 128 entries First usable sector is 34, last usable sector is 5860533134 Partitions will be aligned on 2048-sector boundaries Total free space is 2932 sectors (1.4 MiB) Number Start (sector) End (sector) Size Code Name 1 2048 10239 4.0 MiB 8300 2 10240 5860532216 2.7 TiB 8300 

Однако, когда я подключаю его через USB-адаптер, он сообщает размер логического сектора 4096, и ядро ​​больше не распознает таблицу разделов (поскольку она ищет GPT в секторе 1, который теперь находится на смещении 4096 вместо 512):

 $ sudo sgdisk -p /dev/sdg Creating new GPT entries. Disk /dev/sdg: 732566646 sectors, 2.7 TiB Logical sector size: 4096 bytes Disk identifier (GUID): 2DE535B3-96B0-4BE0-879C-F0E353341DF7 Partition table holds up to 128 entries First usable sector is 6, last usable sector is 732566640 Partitions will be aligned on 256-sector boundaries Total free space is 732566635 sectors (2.7 TiB) Number Start (sector) End (sector) Size Code Name 

Есть ли способ заставить Linux распознавать GPT со смещением 512? Альтернативно, есть ли способ создать два заголовка GPT, один на 512 и один на 4096, или они будут перекрываться?

EDIT: Я нашел несколько обходных решений, ни один из которых не очень хорош:

  1. Я могу использовать loopback-устройство для разбиения диска:

     $ losetup /dev/loop0 /dev/sdg 

    У устройств Loopback всегда есть размер сектора 512, поэтому это позволяет мне разбить устройство так, как я хочу. Однако ядро ​​не распознает таблицы разделов на устройствах loopback, поэтому мне нужно создать другое устройство loopback и вручную указать размер и смещение раздела:

     $ losetup /dev/loop1 /dev/sdg -o $((10240*512)) --sizelimit $(((5860532216-10240)*512)) 

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

  2. Я могу запустить nbd-server и nbd-client; По умолчанию устройства NBD имеют 512-байтовые сектора, а устройства NBD являются разделяемыми. Однако документация NBD предупреждает о запуске сервера и клиента nbd в той же системе; При тестировании ядро ​​nbd-клиента зависало, и я должен был убить сервер.

  3. Я могу запустить istgt (цель iSCSI для пользовательского пространства), используя ту же настройку. Это представляет другое устройство SCSI для системы с 512-байтовыми секторами. Тем не менее, при тестировании это не удалось и вызвало разуплотнение NULL ядра в коде ext4.

  4. Я еще не исследовал devmapper, но это может сработать.

Я нашел решение: программа под названием kpartx, которая представляет собой программу пользовательского пространства, которая использует devmapper для создания разделов с устройств loopback, что отлично работает:

 $ loop_device=`losetup --show -f /dev/sdg` $ kpartx -a $loop_device $ ls /dev/mapper total 0 crw------- 1 root root 10, 236 Mar 2 17:59 control brw-rw---- 1 root disk 252, 0 Mar 2 18:30 loop0p1 brw-rw---- 1 root disk 252, 1 Mar 2 18:30 loop0p2 $ $ # delete device $ kpartx -d $loop_device $ losetup -d $loop_device 

Это существенно делает то, что я планировал сделать в варианте 1, но гораздо более чисто.