मेरे पास एक 3TB ड्राइव है जिसे मैंने 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 के तार्किक क्षेत्र के आकार की रिपोर्ट करता है और कर्नेल अब विभाजन तालिका को नहीं पहचानता है (क्योंकि यह सेक्टर 1 में GPT की तलाश में है, जो अब 512 के बजाय 4096 ऑफसेट पर है):
$ 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
लिनक्स को जीपीटी को 512 पर पहचानने के लिए बाध्य करने का कोई तरीका है? वैकल्पिक रूप से, क्या दो GPT हेडर बनाने का एक तरीका है, एक 512 और 4096 पर एक, या वे ओवरलैप करेंगे?
संपादित करें: मैंने कुछ वर्कअराउंड पाए हैं, जिनमें से कोई भी बहुत अच्छा नहीं है:
मैं डिस्क को विभाजित करने के लिए लूपबैक डिवाइस का उपयोग कर सकता हूं:
$ losetup /dev/loop0 /dev/sdg
लूपबैक उपकरणों में हमेशा 512 का एक सेक्टर आकार होता है, इसलिए यह मुझे डिवाइस को विभाजन करने की अनुमति देता है कि मैं कैसे चाहता हूं। हालाँकि, कर्नेल लूपबैक उपकरणों पर विभाजन तालिकाओं को नहीं पहचानता है, इसलिए मुझे एक और लूपबैक डिवाइस बनाना होगा और मैन्युअल रूप से विभाजन और स्ट्रीक को निर्दिष्ट करना होगा:
$ losetup /dev/loop1 /dev/sdg -o $((10240*512)) --sizelimit $(((5860532216-10240)*512))
मैं इसे स्वचालित करने के लिए एक स्क्रिप्ट लिख सकता हूं, लेकिन यह स्वचालित रूप से करने में सक्षम होना अच्छा होगा।
मैं nbd-server और nbd-client चला सकता हूं; NBD डिवाइसेस में डिफ़ॉल्ट रूप से 512-बाइट सेक्टर होते हैं, और NBD डिवाइसेस विभाजन योग्य होते हैं। हालाँकि, NBD दस्तावेज़ीकरण nbd सर्वर और क्लाइंट को एक ही सिस्टम पर चलाने के खिलाफ चेतावनी देता है; परीक्षण करते समय, इन-कर्नेल एनबीडी क्लाइंट को लटका दिया गया और मुझे सर्वर को मारना पड़ा।
मैं एक ही सेटअप का उपयोग करके istgt (उपयोगकर्ता-स्थान iSCSI लक्ष्य) चला सकता हूं। यह 512-बाइट क्षेत्रों के साथ सिस्टम के लिए एक और SCSI डिवाइस प्रस्तुत करता है। हालाँकि, परीक्षण करते समय, यह विफल हो गया और ext4 कोड में कर्नेल NULL पॉइंटर डिफरेंस का कारण बना।
मैंने अभी तक देवमापर की जांच नहीं की है, लेकिन यह काम कर सकता है।