বিভিন্ন লজিক্যাল সেক্টরের আকারের সাথে তৈরি জিপিটি পার্টিশন টেবিলটি সনাক্ত করা


9

আমার একটি 3 টিবি ড্রাইভ রয়েছে যা আমি জিপিটি ব্যবহার করে বিভক্ত করেছি:

$ 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

যাইহোক, আমি যখন এটি ইউএসবি অ্যাডাপ্টারের মাধ্যমে সংযুক্ত করি তখন এটি 4096 এর লজিক্যাল সেক্টরের আকারের প্রতিবেদন করে এবং কার্নেলটি আর পার্টিশন টেবিলকে স্বীকৃতি দেয় না (যেহেতু এটি সেক্টর 1 তে জিপিটি খুঁজছে, এখন 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 অফসেটে জিপিটি সনাক্ত করতে লিনাক্সকে বাধ্য করার কোনও উপায় আছে কি? বিকল্পভাবে, দুটি জিপিটি শিরোলেখ তৈরি করার কোনও উপায় আছে, একটি 512 এ এবং একটি 4096 এ, অথবা তারা ওভারল্যাপ করবে?

সম্পাদনা: আমি কয়েকটি কাজের ক্ষেত্র পেয়েছি, এর মধ্যে কোনওটিই খুব ভাল নয়:

  1. আমি ডিস্কটি বিভক্ত করতে একটি লুপব্যাক ডিভাইস ব্যবহার করতে পারি:

    $ losetup /dev/loop0 /dev/sdg
    

    লুপব্যাক ডিভাইসগুলির সর্বদা একটি সেক্টর আকার 512 থাকে, সুতরাং এটি আমার কীভাবে ডিভাইসটি বিভাগ করতে দেয়। তবে, কার্নেল লুপব্যাক ডিভাইসে পার্টিশন টেবিলগুলি সনাক্ত করতে পারে না, সুতরাং আমাকে অন্য একটি লুপব্যাক ডিভাইস তৈরি করতে হবে এবং নিজেই পার্টিশনের আকার এবং অফসেট উল্লেখ করতে হবে:

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

    এটিকে স্বয়ংক্রিয় করতে আমি একটি স্ক্রিপ্ট লিখতে পারি তবে এটি স্বয়ংক্রিয়ভাবে করতে পেরে ভাল লাগবে।

  2. আমি এনবিডি-সার্ভার এবং এনবিডি-ক্লায়েন্ট চালাতে পারি; এনবিডি ডিভাইসগুলির ডিফল্টরূপে 512-বাইট সেক্টর রয়েছে এবং এনবিডি ডিভাইসগুলি বিভাজনযোগ্য able তবে, এনবিডি ডকুমেন্টেশন একই সিস্টেমে এনবিডি সার্ভার এবং ক্লায়েন্ট চালানোর বিরুদ্ধে সতর্ক করেছে; পরীক্ষা করার সময়, ইন-কার্নেল এনবিডি ক্লায়েন্টটি স্তব্ধ হয়ে যায় এবং আমাকে সার্ভারটি মেরে ফেলতে হয়েছিল।

  3. আমি একই সেটআপটি ব্যবহার করে আইএসটিজিটি (ব্যবহারকারী-স্থান আইএসসিএসআই লক্ষ্য) চালাতে পারি। এটি 512-বাইট সেক্টর সহ সিস্টেমে আরও একটি এসসিএসআই ডিভাইস উপস্থাপন করে। যাইহোক, পরীক্ষার সময়, এটি ব্যর্থ হয়েছে এবং ext4 কোডে একটি কার্নেল NULL পয়েন্টার অবনতি ঘটায়।

  4. আমি এখনও ডেম্যাম্পারকে তদন্ত করি নি, তবে এটি কার্যকর হতে পারে।


1
এই ব্লগ পোস্টটি দেখুন: goughlui.com/2013/10/02/…
এফএমপুরফি

উত্তর:


3

আমি একটি সমাধান পেয়েছি: কেপিআরএক্স নামে পরিচিত একটি প্রোগ্রাম যা লুপব্যাক ডিভাইস থেকে পার্টিশন তৈরি করতে ডেভাম্পার ব্যবহার করে এমন একটি ইউজারস্পেস প্রোগ্রাম যা দুর্দান্ত কাজ করে:

$ 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 এ যা করার পরিকল্পনা করছিলাম তা করে তবে আরও অনেক পরিষ্কারভাবে।


2

লিনাক্সে, কার্নেল মডিউলটির max_partপ্যারামিটার loopসেট করা থাকলে লুপ ডিভাইসগুলি বিভাজনযোগ্য। যদি loopবিল্ট-ইন থাকে (মডিউল নয়), আপনি loop.max_part=31তার পরিবর্তে কার্নেল কমান্ড লাইন প্যারামিটারটি পাস করতে পারেন ।

সুতরাং আপনি loopড্রাইভারটিকে পার্টিশনযোগ্য ব্লক ডিভাইসগুলি কনফিগার করার পরে , এটি করা উচিত:

losetup --show -f /dev/sda

প্রতিটি পার্টিশনের জন্য কিছু /dev/loopXp1, /dev/loopXp2... ডিভাইস পেতে ।

যখন আপনি আপনার প্রশ্ন পোস্ট করেছেন তখন কার্নেলের সেই সম্মুখভাগে জিনিসগুলি হিসাবে কিছু বিবর্তন ঘটেছে:

  • ৪.১৪ সাল থেকে লুপ ডিভাইসের ( losetup -b 4096উদাহরণস্বরূপ) 512 ব্যতীত লজিক্যাল ব্লক আকার নির্দিষ্ট করাও সম্ভব । লুপ ডিভাইসটি তৈরির পরে এটির ব্লক আকার পরিবর্তন করাও সম্ভব।

  • ৪.১১ সাল থেকে, এনবিডি ডিভাইসের লজিক্যাল ব্লক আকারটি এনবিডি-ক্লায়েন্ট ( -bবিকল্প) এ পাস করা ব্লক আকারে সেট করা আছে । যেহেতু ডিফল্ট ব্লক আকারটি (এবং ছিল) 1024, এর অর্থ এনবিডি ডিভাইসগুলি এখন 512 এর পরিবর্তে 1024 এর একটি ডিফল্ট লজিক্যাল সেক্টরের আকার পায় (পশ্চাদপটের সামঞ্জস্যের দিক থেকে বেশ খারাপ)।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.