লিনাক্সে আমি কীভাবে একটি ফাইল সিস্টেম ড্রাইভার ড্রাইভার প্রয়োগ করব? [বন্ধ]


15

ধরুন আমি একটি নতুন ফাইল সিস্টেম উদ্ভাবন করেছি এবং এখন আমি এটির জন্য একটি ফাইল সিস্টেম ড্রাইভার তৈরি করতে চাই।

আমি এই ফাইল সিস্টেম ড্রাইভারটিকে কীভাবে বাস্তবায়ন করব, এটি কি কার্নেল মডিউল ব্যবহার করে করা হচ্ছে?

এবং কীভাবে ফাইল সিস্টেম ড্রাইভার হার্ড ডিস্ক অ্যাক্সেস করতে পারে, হার্ডডিস্কটি অ্যাক্সেস করার জন্য ফাইল সিস্টেম ড্রাইভারের কোড থাকা উচিত, বা সমস্ত ফাইল সিস্টেম ড্রাইভার দ্বারা ব্যবহৃত হার্ড ডিস্ক অ্যাক্সেসের জন্য লিনাক্সে কোনও ডিভাইস ড্রাইভার থাকতে পারে?

উত্তর:


24

হ্যাঁ, লিনাক্সের ফাইল সিস্টেমগুলি কার্নেল মডিউল হিসাবে প্রয়োগ করা যেতে পারে। তবে এফইউএসই (ইউএসআরস্পেসে ফাইল সিস্টেম) ইন্টারফেসও রয়েছে, যা নিয়মিত ব্যবহারকারী-স্থান প্রক্রিয়াটিকে ফাইল-সিস্টেম ড্রাইভার হিসাবে কাজ করতে দেয়। আপনি যদি একটি নতুন ফাইল সিস্টেম প্রোটোটাইপ করে থাকেন তবে প্রথমে FUSE ইন্টারফেস ব্যবহার করে এটি প্রয়োগ করা পরীক্ষা এবং উন্নয়নকে আরও সহজ করে তুলতে পারে। আপনি একবার ফুস ফর্মে ফাইল সিস্টেমের ইন্টার্নালগুলি কাজ করার পরে, আপনি এর সম্পাদনা-অপ্টিমাইজ করা কার্নেল মডিউল সংস্করণটি প্রয়োগ করতে শুরু করতে পারেন।

কার্নেল স্পেসের মধ্যে একটি ফাইল সিস্টেম প্রয়োগের জন্য কিছু প্রাথমিক তথ্য এখানে রয়েছে। এটি বরং পুরানো (১৯৯ from সাল থেকে!) তবে আপনার যে ধরণের জিনিসগুলি করতে হবে সেগুলির জন্য কমপক্ষে আপনাকে একটি প্রাথমিক ধারণা দেওয়া উচিত।

আপনি যদি FUSE রুটে যেতে চান, তবে এখানে ফায়সফিউসের ইন্টারফেসের ইউজারস্পেসের রেফারেন্স প্রয়োগকরণ implementation

কার্নেল মডিউল হিসাবে ফাইল সিস্টেম ড্রাইভার

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

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

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

কার্নেলের অন্যান্য ড্রাইভার স্ট্যান্ডার্ড ব্লক ডিভাইস ইন্টারফেস সরবরাহ করবে, সুতরাং ফাইল সিস্টেম ড্রাইভারটিকে হার্ডওয়্যার সমর্থন প্রয়োগ করতে হবে না। মূলত, ফাইল সিস্টেমে ড্রাইভারটি ডিভাইস পয়েন্টারকে দেওয়া কার্নেল-স্তরের ফাংশন ব্যবহার করে ডিস্ক ব্লকগুলি পড়তে বা লিখতে পারে।

ভিএফএস স্তরটি প্রত্যাশা করে যে ফাইলসিস্টেম ড্রাইভারটি ভিএফএস স্তরটিতে বেশ কয়েকটি মানক ফাংশন উপলব্ধ করবে; ভিএফএস স্তরটি ফাইল সিস্টেমের সাথে অর্থবহ কিছু করার জন্য এগুলির কয়েকটি বাধ্যতামূলক, অন্যরা alচ্ছিক এবং আপনি যেমন একটি optionচ্ছিক ফাংশনে একটি পয়েন্টারের পরিবর্তে একটি NUL ফিরিয়ে দিতে পারেন।


1
এটি পুরোপুরি প্রশ্নের উত্তরের উত্তর হিসাবে যদিও বলা হয়েছে যে ব্লক ডিভাইস স্তরটি ফাইল সিস্টেমের স্তরটি তৈরি করার জন্য ব্লক ডিভাইস স্তর সরবরাহ করে তার কার্যকারিতা সম্পর্কেও আপনাকে কিছুটা বলতে হবে।
ক্যাস্পারড

আমি এটিকে "স্ট্যান্ডার্ড ব্লক ডিভাইসে পয়েন্টার দিচ্ছি" বিটের সাহায্যে সাজিয়েছি, তবে ভাল পয়েন্ট; আমি তার উপর প্রসারিত।
টেলকোমে

এই উত্তরটি, বিশেষত কী ক্রমে কী ঘটে যায় তার বর্ণনাটি divineশিক। আমি কি এমন কোনও বই / ওয়েবসাইট পড়তে পারি যেটির বর্ণনা রয়েছে "" কিভাবে লিনাক্স কাজ করে "?
অ্যাডাম বার্নস

আপনি লিনাক্স কার্নেল ইন্টারনাল বা লিনাক্স ডিভাইস ড্রাইভার, তৃতীয় সংস্করণে আগ্রহী হতে পারেন । এবং অবশ্যই, আসল উত্স কোড পড়ার বিকল্প রয়েছে।
টেলকোমে

5

হ্যাঁ কার্নেল ড্রাইভার একটি ফাইল-সিস্টেম পরিচালনা করতে পারেন।

উপহাস করার সর্বোত্তম সমাধান, একটি ফাইল-সিস্টেমের প্রোটোটাইপ FUSE ব্যবহার করা use এবং আপনি এটি কার্নেল ড্রাইভারে রূপান্তরিত করার বিষয়ে ভাবতে পারেন পরে।

উইকিপিডিয়া => https://en.wikedia.org/wiki/Filesystem_in_Userpace

উত্স => https://github.com/libfuse/libfuse

একটি টিউটোরিয়াল => https://developer.ibm.com/articles/l-fuse/


0

হ্যাঁ এটি সাধারণত কার্নেল ড্রাইভার ব্যবহার করে করা হবে যা হয় কার্নেল মডিউল হিসাবে লোড করা বা কার্নেলের মধ্যে সংকলিত হতে পারে।

অনুরূপ ফাইল সিস্টেম ড্রাইভার এবং তারা এখানে কীভাবে কাজ করে তা পরীক্ষা করে দেখতে পারেন ।

এই ড্রাইভারগুলি সম্ভবত স্টোরেজ ডিভাইসগুলিকে বাইটের ব্লক হিসাবে অ্যাক্সেস করতে অভ্যন্তরীণ কার্নেল ফাংশন ব্যবহার করে তবে আপনি ব্লক ডিভাইস এবং অক্ষর ডিভাইস ফোল্ডারগুলির দ্বারা চালিত ব্লক ডিভাইসগুলিও ব্যবহার করতে পারেন ।


0

আপনি ফিউজ ব্যবহার করতে পারেন, একটি ব্যবহারকারী-ল্যান্ড ফাইল-সিস্টেম তৈরি করতে, বা কার্নেল মডিউল লিখতে পারেন। ফিউজ ব্যবহার করা আরও সহজ, কারণ আপনার কাছে ভাষা পছন্দ রয়েছে এবং কার্নেলটি ক্রাশ হবে না (এবং তাই পুরো সিস্টেমটি)।

কার্নেল মডিউলগুলি দ্রুততর হতে পারে, তবে অপ্টিমাইজেশনের প্রথম নিয়মটি হল: আপনি কার্যকরী কোড পরীক্ষা না করা পর্যন্ত এটি করবেন না। দ্বিতীয়টি এর মতো: যতক্ষণ না আপনার কাছে প্রমাণ হয় যে এটি খুব ধীর। এবং তৃতীয়: এটি দ্রুত / আরও ছোট করে তোলে এমন প্রমাণ না থাকলে এটিকে রাখবেন না।

এবং হ্যাঁ কার্নেলের হার্ডওয়্যারটির জন্য ইতিমধ্যে ড্রাইভার রয়েছে, আপনি সেগুলি পুনরায় প্রয়োগ করবেন না।


পারফরম্যান্স ব্যতীত FUSE- তে বড় ধরনের ডাউনসাইড রয়েছে: এটি আপনার রুট ফাইল সিস্টেমের জন্য ব্যবহার করা শক্ত। (সম্ভবত কোনও আরআরডি দিয়ে সম্ভব, তবে বুট করার পরে ফুস বাইনারি মুক্ত করা যায়নি কারণ এটি এখনও রামডিস্ক থেকে চালানো হবে))
পিটার কর্ডেস

1
@ পিটারকর্ডস এটি মুক্ত করা যায়নি , তবে এর অর্থ এই নয় যে এটি লিঙ্কমুক্ত করা যাবে না। যদি এখনও এটির কোনও রেফারেন্স থাকে তবে আপনি থ্রিমারফগুলি রেখে গেছেন এবং অন্তর্নিহিত বাইনারিটি মুছে ফেলেছেন তা নির্বিশেষে এটিকে স্মৃতিতে রাখা হবে।
বন

@ ফরোস্ট: ঠিক আছে, সুতরাং আপনি আরআরডিটি আনমাউন্ট করতে পারবেন না পরে pivot_root, কারণ এখনও ইনগ্রামে ব্যস্ত ইনোড রয়েছে।
পিটার কর্ডস

একটি প্রাথমিক /initথেকে শুরু হওয়া একটি সাধারণ পিভট_রোটের /initপরে বাস্তব রুট এফএসে নিয়ন্ত্রণ স্থানান্তর করতে (আমার মনে হয়) সম্পাদন করবে /init। রুট এফএসের অ্যাক্সেস কার্নেলের প্রতিক্রিয়া FUSE প্রক্রিয়ার উপর নির্ভর করে তবে একটি FUSE বাইনারি নিজেকে এক্সিকিউটেডের সাথে প্রতিস্থাপন করতে পারে না। ওয়েল হতে পারে প্রথমে পেজক্যাচটি প্রাইম করে, তবে এটি নির্ভরযোগ্য মনে হয় না।
পিটার কর্ডস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.