Tôi có ổ đĩa 3TB mà tôi đã phân vùng bằng 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
Tuy nhiên, khi tôi kết nối nó qua bộ điều hợp USB, nó báo cáo kích thước khu vực logic là 4096 và hạt nhân không còn nhận ra bảng phân vùng (vì nó đang tìm GPT ở khu vực 1, hiện tại đã được bù 4096 thay vì 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
Có cách nào để buộc Linux nhận ra GPT ở offset 512 không? Ngoài ra, có cách nào để tạo hai tiêu đề GPT, một tại 512 và một tại 4096, hoặc chúng sẽ chồng lấp?
EDIT: Tôi đã tìm thấy một vài cách giải quyết, không có cách nào tốt cả:
Tôi có thể sử dụng một thiết bị loopback để phân vùng đĩa:
$ losetup /dev/loop0 /dev/sdg
Các thiết bị loopback luôn có kích thước cung từ 512, vì vậy điều này cho phép tôi phân vùng thiết bị theo cách tôi muốn. Tuy nhiên, kernel không nhận ra các bảng phân vùng trên các thiết bị loopback, vì vậy tôi phải tạo một thiết bị loopback khác và chỉ định thủ công kích thước phân vùng và offset:
$ losetup /dev/loop1 /dev/sdg -o $((10240*512)) --sizelimit $(((5860532216-10240)*512))
Tôi có thể viết một kịch bản để tự động hóa điều này, nhưng thật tuyệt khi có thể tự động làm nó.
Tôi có thể chạy nbd-server và nbd-client; Các thiết bị NBD có các cung 512 byte theo mặc định và các thiết bị NBD có thể phân vùng được. Tuy nhiên, tài liệu NBD cảnh báo không chạy máy chủ nbd và máy khách trên cùng một hệ thống; Khi kiểm tra, máy khách nbd trong kernel bị treo và tôi phải giết máy chủ.
Tôi có thể chạy istgt (mục tiêu iSCSI không gian người dùng), sử dụng cùng một thiết lập. Điều này trình bày một thiết bị SCSI khác cho hệ thống với các cung từ 512 byte. Tuy nhiên, khi kiểm tra, điều này đã thất bại và gây ra sự thiếu sót của con trỏ NULL trong mã ext4.
Tôi chưa điều tra devmapper, nhưng nó có thể hoạt động.