Saya memiliki drive 3TB yang telah saya partisi menggunakan 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
Namun, ketika saya menghubungkannya melalui adaptor USB, ia melaporkan ukuran sektor logis 4096 dan kernel tidak lagi mengenali tabel partisi (karena mencari GPT di sektor 1, yang sekarang di offset 4096 bukannya 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
Apakah ada cara untuk memaksa Linux untuk mengenali GPT pada offset 512? Atau, apakah ada cara untuk membuat dua header GPT, satu di 512 dan satu di 4096, atau akankah mereka tumpang tindih?
EDIT: Saya telah menemukan beberapa solusi, tidak ada yang sangat baik:
Saya bisa menggunakan perangkat loopback untuk mempartisi disk:
$ losetup /dev/loop0 /dev/sdg
Perangkat Loopback selalu memiliki ukuran sektor 512, jadi ini memungkinkan saya untuk mempartisi perangkat seperti yang saya inginkan. Namun, kernel tidak mengenali tabel partisi pada perangkat loopback, jadi saya harus membuat perangkat loopback lain dan secara manual menentukan ukuran partisi dan mengimbangi:
$ losetup /dev/loop1 /dev/sdg -o $((10240*512)) --sizelimit $(((5860532216-10240)*512))
Saya dapat menulis skrip untuk mengotomatiskan ini, tetapi alangkah baiknya untuk dapat melakukannya secara otomatis.
Saya dapat menjalankan nbd-server dan nbd-client; Perangkat NBD memiliki sektor 512-byte secara default, dan perangkat NBD dapat dipartisi. Namun, dokumentasi NBD memperingatkan agar tidak menjalankan server nbd dan klien pada sistem yang sama; Saat pengujian, klien nbd di-kernel digantung dan saya harus membunuh server.
Saya dapat menjalankan istgt (ruang pengguna target iSCSI), menggunakan pengaturan yang sama. Ini menyajikan perangkat SCSI lain ke sistem dengan sektor 512-byte. Namun, ketika pengujian, ini gagal dan menyebabkan dereference pointer NULL kernel dalam kode ext4.
Saya belum menyelidiki devmapper, tetapi mungkin berhasil.