লিনাক্সে বিশদ বিল্প ফাইল সম্পর্কিত তথ্য


11

আমার কাছে একটি স্পার ফাইল রয়েছে, যাতে কেবল কয়েকটি ব্লক বরাদ্দ করা হয়:

~% du -h --apparent-size example
100K    example
~% du -h example
52K     example

ফাইলটির কোন ব্লকটি আসলে বরাদ্দ করা হয়েছে তা জানতে চাই। কোনও সিস্টেম কল বা কার্নেল ইন্টারফেস রয়েছে যা বরাদ্দ, বা ফাইলের গর্তগুলির একটি তালিকা পেতে ব্যবহার করা যেতে পারে?

কেবলমাত্র দীর্ঘ পর্যায়ে শূন্যগুলির জন্য পরীক্ষা করা (জিএনইউ সিপি, আরএসএনসি, ইত্যাদি ব্যবহার করা পদ্ধতি) সঠিকভাবে কাজ করে না:

~% cp example example1  
~% du -h example1 
32K     example1

এটি শূন্যের অন্যান্য ক্রমগুলি সনাক্ত করেছিল যা আসলে বরাদ্দ করা হয়েছিল।

উত্তর:


7

এসও তেমন প্রশ্ন রয়েছেবর্তমানে গৃহীত উত্তর দ্বারা @ephemient একটি ব্যবহার পরামর্শ ioctlনামক fiemapযা নথিভুক্ত করা linux/Documentation/filesystems/fiemap.txt। এই ফাইলটি থেকে উদ্ধৃতি দেওয়া হচ্ছে:

ফাইম্যাপ আইওটিটিএল ইউজস্পেসের ফাইল ফাইলের ম্যাপিংগুলি পাওয়ার জন্য একটি কার্যকর পদ্ধতি। ব্লক-বাই-ব্লক ম্যাপিংয়ের পরিবর্তে (যেমন বিএম্যাপ), ফাইম্যাপ এক্সটেন্টগুলির একটি তালিকা প্রদান করে।

এর মতো শব্দগুলি হ'ল আপনি যে ধরণের তথ্য সন্ধান করছেন। ফাইল সিস্টেমে সমর্থন আবার alচ্ছিক:

ফাইম্যাপ সমর্থন করতে ইচ্ছুক ফাইল সিস্টেমগুলি ->fiemap তাদের inode_operationsকাঠামোর উপর একটি কলব্যাক প্রয়োগ করতে হবে ।

ম্যান পৃষ্ঠা অনুসারে সোলারিস থেকে আপনার উল্লিখিত যুক্তি SEEK_DATASEEK_HOLEযুক্তিগুলির জন্য সমর্থন লিনাক্স ৩.১ এ যুক্ত হয়েছিল , সুতরাং আপনি এটিও ব্যবহার করতে পারেন। উপস্থিতিটি পুরানো বলে মনে হচ্ছে, তাই এটি আপাতত বিভিন্ন লিনাক্স সংস্করণে আরও পোর্টেবল হতে পারে , সোলারিসের একই রকম থাকলে অপারেটিং সিস্টেমগুলিতে আরও পোর্টেবল হতে পারে।lseekfiemap ioctllseek


2
ব্যবহার করে আপনি এই FIEMAP তথ্য পেতে পারেন --fibmapএর hdparmইউটিলিটি। ম্যানুয়াল দেখুন।
টোটার

2

স্পার্সিউটিস নামে অজগর প্রোগ্রামগুলির একটি সংগ্রহ রয়েছে যা ব্যবহার করে SEEK_HOLEএবং SEEK_DATAফাইলটির কোন বিভাগটি গর্ত হিসাবে প্রতিনিধিত্ব করা হয় এবং কোনটি ডেটা are ব্যবহার বেশ সোজা। mksparseকিছু দেওয়া লেআউট অনুসারে একটি স্পার ফাইল তৈরি করতে ব্যবহার করা যেতে পারে।

 $ echo hole,data,hole | mksparse --hole-size 4096 --data-size 4096 example
 $ du -sh example
 4.0K   example

sparsemapপ্রোগ্রাম stdout- এ বিন্যাস মুদ্রণ করতে ব্যবহার করা যেতে পারে:

 $ sparsemap example
 HOLE 4096
 DATA 4096
 HOLE 4096

1

এটি ফাইল সিস্টেমের উপর নির্ভর করে। আমি বিশ্বাস করি না যে এগুলি একটি কল, কারণ সম্ভবত অনেক সরঞ্জাম স্পার্স ফাইলগুলি অনুলিপি করা ভালভাবে পরিচালনা করে না। জিএনইউ সরঞ্জাম চেইন শূন্যের বৃহত ব্লকগুলির জন্য অনুসন্ধানগুলি ব্যবহার করে যা তাদের অব্যবহৃত বরাদ্দকৃত ব্লকগুলি সরাতে দেয়। অনেক অনুলিপি সরঞ্জামগুলি বরাদ্দকৃত সমস্ত ব্লক সহ একটি স্পার্স ফাইলকে একটি ফাইলে রূপান্তরিত করে।

আপনাকে সম্ভবত ইনোডটি খুলতে হবে এবং ফলাফলটি বিশ্লেষণ করতে হবে। ইনোড ফর্ম্যাটটি ফাইল সিস্টেম নির্ভর। কিছু ফাইল সিস্টেমের ইনোডে নিজেই আপনার ডেটার অংশ থাকতে পারে।


1
এই তথ্যটি পাওয়ার জন্য কিছু এফএস-অজোনস্টিক উপায় থাকতে হবে। সরাসরি ইনোড থেকে পড়া অবশ্যই কোনও বিকল্প নয়। আমি সোলারিসে যেমন আছে তেমন কিছু SEEK_DATAএবং SEEK_HOLEপ্যারামিটারের সন্ধান করছিলাম lseek(): ওপেনসোলারিসফরম.অর্গ
ম্যান

@ জুলিয়ানো লিনাক্সের সন্ধানের বিকল্পগুলির মধ্যে এই বিকল্পগুলি নেই। সোলারিস খুব কম ফাইল ফাইল সমর্থন করে, তাই এটি সমর্থন করা অপেক্ষাকৃত সহজ। লিনাক্স বিভিন্ন ধরণের ফাইল সিস্টেমগুলিকে সমর্থন করে, যার মধ্যে কয়েকটি স্পার ফাইলগুলি সমর্থন করে না। SEEK_DATA / SEEK_HOLE এর জন্য সমর্থন সমস্ত ফাইল সিস্টেমের কোডে সমর্থন চাপিয়ে দেবে। এই পদ্ধতিগুলি আপনার প্রত্যাশা মতো নাও পারে। সূর্যের দিক থেকে আরও ডেটার জন্য ব্লগস.সুন.com/বোনউইক / সেন্ট্রি / সেক_হোল_আর_সেক_ডেটা দেখুন ।
বিলথোর

1
ফাইল-সিস্টেমগুলিকে lseek () ইন্টারফেসের সাহায্যে কিছু সমর্থন করার দরকার নেই, কার্নেল ফাইল-সিস্টেম মডিউলগুলিকে মডিউল বৈশিষ্ট্যের মাধ্যমে SEEK_DATA / SEEK_HOLE সমর্থন করে এমন উইথলিস্ট করে। এটি নিজেই ম্যানেজ এবং লিঙ্কযুক্ত ব্লগে রয়েছে: "যে ফাইল সিস্টেমগুলি গর্ত সম্পর্কে তথ্য সরবরাহ করে না তাদের জন্য ফাইলটি একটি সম্পূর্ণ ডেটা অঞ্চল হিসাবে প্রতিনিধিত্ব করা হবে।"
জুলিয়ানো

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