প্রদত্ত ফাইলের জন্য এলভিএম এক্সট্যান্ট সংখ্যা নির্ধারণ করা হচ্ছে


9

আমি বর্তমানে একটি অ-কাজ সম্পর্কিত হোমওয়ার্ক অনুশীলনে নিযুক্ত আছি। আমার কাছে একটি লজিকাল ভলিউমের উপর একটি এক্সট 4 ফাইল সিস্টেম রয়েছে। আমি বিভিন্ন পারফরম্যান্স টিউনিং কৌশল পরীক্ষা করছি এবং এই ধারণাটি আমার কাছে ঘটেছিল। যেহেতু পিভিভোভ পৃথক এবং এক্সটেন্টের ব্যাপ্তিগুলি স্থানান্তর করতে পারে তাই শারীরিক এক্সটেন্টগুলি কোন নির্দিষ্ট ফাইল রাখে তা ম্যাপ করার কোনও উপায় রয়েছে (তাত্ত্বিকভাবে এটি কোনও ডাটাবেসের জন্য ফাইলগুলি সমর্থন করতে পারে, বা একটি সাধারণভাবে অ্যাক্সেসযুক্ত ফাইল ভাগ হতে পারে) এবং সেগুলিকে একটি বিশেষে স্থানান্তরিত করতে পারে স্টোরেজ ডিভাইস (উদাহরণস্বরূপ আমার একই এলভিএম ভলিউম গ্রুপে নিয়মিত এইচডিডি এবং একটি এসএসডি ড্রাইভ আছে)?

আমি "ফাইলফ্রেগ" ব্যবহার করার কথা ভেবেছিলাম কিন্তু তখন আমার কাছে এটি ঘটেছিল যে আমি সংখ্যাটি প্রয়োজনীয়ভাবে ক্রমানুক্রমিক ক্রমে ব্যবহৃত হবে কিনা তা নিয়ে আমি ১০০% ছিলাম না (সুতরাং ext4-তে কতগুলি সেক্টর একটি ফাইল দেখবে তা জেনে রাখার দরকার নেই) ফাইলটি শারীরিকভাবে কোন পরিমাণ সংখ্যা / ভলিউমের উপর বসে আছে তা আমি নির্ধারণ করি।

কোন ধারনা?

উত্তর:


13

দুটি প্রধান উপাদান hdparm --fibmap fileহ'ল, যা আপনাকে জানায় যে ফাইলটি শারীরিকভাবে এলভিতে অবস্থিত এবং lvs -o +seg_pe_ranges,vg_extent_sizeএটি আপনাকে বলে যে এলভি আপনার শারীরিকভাবে ডিভাইসে কোথায় রয়েছে।

বাকিটা গণিত।

সুতরাং, উদাহরণস্বরূপ:

# hdparm --fibmap linux-3.8.tar.bz2 

linux-3.8.tar.bz2:
 filesystem blocksize 4096, begins at LBA 0; assuming 512 byte sectors.
 byte_offset  begin_LBA    end_LBA    sectors
           0     288776     298511       9736
     4984832     298520     298623        104
     5038080     298640     298695         56
     5066752     298736     298799         64
     5099520     298824     298895         72
     [...]

আমি জানি না কেন এটি এত খণ্ডিত - উইজেটের সাথে ডাউনলোড হয়েছে। এটি একটি ভাল উদাহরণ হতে পারে কারণ আপনি যেমন দেখেন, কমপক্ষে খণ্ডিত ফাইলগুলির জন্য আপনি কোনওভাবে এটিকে স্ক্রিপ্ট না করে মাথা ব্যথা পান। আমি কেবল প্রথম বিভাগটি 288776-298511 (9736 সেক্টর) নেব। এটি 512 বাইট সেক্টর নয়, তবে কোনওভাবেই গণনাটি ভুল।

প্রথমে পরীক্ষা করুন যে এই ডেটাটি আসলেই সঠিক:

# dd if=linux-3.8.tar.bz2 bs=512 skip=0 count=9736 | md5sum
9736+0 records in
9736+0 records out
4984832 bytes (5.0 MB) copied, 0.0506548 s, 98.4 MB/s
7ac1bb05a8c95d10b97982b07aceafa3  -

# dd if=/dev/lvm/src bs=512 skip=288776 count=9736 | md5sum
9736+0 records in
9736+0 records out
4984832 bytes (5.0 MB) copied, 0.123292 s, 40.4 MB/s
7ac1bb05a8c95d10b97982b07aceafa3  -

হুই.এইটির অনুরূপ তাই আমরা সঠিক জায়গায় LV-src পড়ছি। এখন উত্স-এলভি কোথায় অবস্থিত?

# lvs -o +seg_pe_ranges,vg_extent_size
  LV          VG   Attr      LSize   Pool Origin Data%  Move Log Copy%  Convert PE Ranges             Ext   

[...]
 src         lvm  -wi-ao---   4.00g                                            /dev/dm-1:5920-6047   32.00m
[...]

এখন এটি বিরক্তিকর, এই এলভি খণ্ডিত নয়। এখানে মাথা ব্যথা নেই। যাই হোক।

এটি বলছে যে এসআরসি / ডিভ / ডিএম -১ চালু এবং পিই 5920 থেকে শুরু হয়ে পিই 6047 এ শেষ হবে And

সুতরাং আসুন আমরা / dev / dm-1 থেকে সরাসরি একই জিনিসটি পড়তে পারি কিনা তা দেখতে দিন। গণিত অনুসারে, এটি একটি সামান্য বিলিয়ারঘ যেহেতু আমরা আগে 512 বাইট ব্লকসাইজ ব্যবহার করেছি ...: - / তবে আমি অলস তাই আমি কেবল এমআইবি গণনা করব এবং তারপরে 512 দিয়ে ভাগ করব! হা! :-D

# dd if=/dev/dm-1 bs=512 skip=$((1024*1024/512 * 32 * 5920 + 288776)) count=9736 | md5sum
9736+0 records in
9736+0 records out
4984832 bytes (5.0 MB) copied, 0.0884709 s, 56.3 MB/s
3858a4cd75b1cf6f52ae2d403b94a685  -

বু বু. এটি আমরা যা খুঁজছি তা নয়। কি ভুল ছিল? আহ! LVM মেটাডেটা এবং ক্রেপ সংরক্ষণের জন্য পিভি শুরুতে LVM দ্বারা দখল করা অফসেটটি আমরা যুক্ত করতে ভুলে গেছি। সাধারণত এটি মাইবি-সারিবদ্ধ হয়, সুতরাং কেবল অন্য একটি এমআইবি যুক্ত করুন:

# dd if=/dev/dm-1 bs=512 skip=$((1024*1024/512 * 32 * 5920 + 288776 + 1024*1024/512)) count=9736 | md5sum
9736+0 records in
9736+0 records out
4984832 bytes (5.0 MB) copied, 0.0107592 s, 463 MB/s
7ac1bb05a8c95d10b97982b07aceafa3  -

ওখানে তোমার আছে।


3
কোনও দিন তারা আপনার সম্মানের জন্য মূর্তি তৈরি করবে।
ব্র্যাচলে


প্রকৃতপক্ষে, স্ট্রাইক করুন, দেখে মনে হচ্ছে আমার গুগল-ফুতে আমার উন্নতি করা দরকার । এটি এসএসডি এবং এলভিএম সম্পর্কিত একটি নতুন আরএইচএল বাগ। আমি এটি বোঝাতে এই ফাইলটি এসএসডি-তে ইতিমধ্যে রয়েছে। হা
ব্র্যাচলে

এলভিতে ফাইলের অবস্থান নির্ধারণ করার জন্য কি অন্য কোনও ইউটিলিটি রয়েছে যা তারা এটি ঠিক না করে?
ব্র্যাচলে

আপনি ইতিমধ্যে এটি উল্লেখ করেছেন - filefrag। অন্যথায় গুগল যদি অন্য কোনও সরঞ্জাম fibmap বা fiemap করে।
frostschutz
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.