কম্পিউটারের ভেতরে কীভাবে তথ্য সংরক্ষিত ও স্থানান্তরিত হয়, সে বিষয়ে কথা বলার সময় আমরা সাধারণত শুধু হার্ড ড্রাইভ বা র্যামের কথাই ভাবি। কিন্তু এর গভীরে একটি সম্পূর্ণ সিস্টেম রয়েছে। স্তর, ক্যাশ, ফাইল সিস্টেম এবং পার্টিশন সহ স্টোরেজ আর্কিটেকচার এর ওপর নির্ভর করে আমরা কত দ্রুত ও নিরাপদে ডেটা নিয়ে কাজ করতে পারি। আপনি যদি সিস্টেম নিয়ে গবেষণা করেন, দল পরিচালনা করেন, অথবা কেবল একটি ফাইল সংরক্ষণ করলে বা ডিস্ক নষ্ট হয়ে গেলে কী ঘটে তা জানতে চান, তবে এই গঠনতন্ত্র বোঝা অত্যন্ত গুরুত্বপূর্ণ।
এই নিবন্ধ জুড়ে আমরা ধাপে ধাপে আলোচনা করব, সিপিইউ থেকে সেকেন্ডারি স্টোরেজ পর্যন্ত স্টোরেজ কীভাবে সাজানো হয়এই কোর্সে যা যা শেখানো হবে: ক্যাশ মেমরির ভূমিকা, উইন্ডোজে ফাইল সিস্টেম ক্যাশ কীভাবে কাজ করে, ফাইল কী, ডিরেক্টরি কীভাবে সাজানো হয়, বিভিন্ন ধরনের ফাইল সিস্টেম (FAT, NTFS, ext, APFS, ইত্যাদি), এবং MBR ব্যবহার করে কীভাবে হার্ড ড্রাইভ পার্টিশন করতে হয়। সবকিছুই শেখানো হবে ব্যবহারিক পদ্ধতি এবং বাস্তব-জগতের উদাহরণের মাধ্যমে।
কম্পিউটার সিস্টেমে স্টোরেজের সাধারণ গঠন
যেকোনো আধুনিক কম্পিউটারে আমরা মেমরির বিভিন্ন স্তর দেখতে পাই, যার প্রতিটিতে থাকে বিভিন্ন গতি, ক্ষমতা এবং কার্যকারিতাউপর থেকে নিচে, আমরা সেগুলোকে এইভাবে সাজাতে পারি:
- রেকর্ডস প্রসেসর
- ক্যাশে (L1, L2, L3) সিপিইউ-এর সাথে সমন্বিত বা কাছাকাছি।
- প্রধান স্মৃতি (র্যাম)।
- গৌণ স্মৃতি (হার্ড ড্রাইভ, এসএসডি, ইত্যাদি)।
- সহায়ক স্মৃতি (ইউএসবি, এক্সটার্নাল হার্ড ড্রাইভ, অপটিক্যাল ড্রাইভ, ইত্যাদি)।
রেজিস্টার হলো এক প্রকার অত্যন্ত দ্রুতগতির মেমরি যা প্রতিটি রেজিস্টারে কেবল একটি বা কয়েকটি ডেটা ধারণ করতে পারে। এগুলো অভ্যন্তরীণ প্রসেসর ভেরিয়েবল হিসেবে কাজ করেউদাহরণস্বরূপ, প্রোগ্রাম কাউন্টার (PC) পরবর্তী যে নির্দেশনাটি কার্যকর করা হবে তার ঠিকানা সংরক্ষণ করে এবং প্রতিটি ধাপের সাথে পরিবর্তিত হয়। এগুলিকে নাম (PC, RI, AX, ইত্যাদি) দ্বারা চিহ্নিত করা হয়, এগুলি উদ্বায়ী এবং সেমিকন্ডাক্টর প্রযুক্তির উপর ভিত্তি করে তৈরি।
প্রধান মেমরি (RAM) গঠিত হয় শব্দ নামক সমান আকারের কোষ (আর্কিটেকচারের উপর নির্ভর করে ৩২, ৬৪ বা ১২৮ বিট)। একটি মেমোরি সেল অ্যাক্সেস করার জন্য এর অ্যাড্রেস ব্যবহার করা হয়, যা অ্যাড্রেস বাসের মাধ্যমে প্রেরিত হয়। রেজিস্টারের মতো র্যামও উদ্বায়ী: বিদ্যুৎ সংযোগ বিচ্ছিন্ন হলে এর ভেতরের ডেটা হারিয়ে যায়। তা সত্ত্বেও, রেজিস্টারের চেয়ে এর ধারণক্ষমতা অনেক বেশি এবং রানটাইমে এখানেই প্রোগ্রাম এক্সিকিউট করা হয় ও ডেটা লোড করা হয়।
ক্যাশ মেমরি এবং ক্যাশ করা ডেটা: অ্যাক্সেসের গতি বৃদ্ধি
সিপিইউ এবং প্রধান মেমরির মাঝে ক্যাশ মেমরি থাকে, যা ডিজাইন করা হয়েছে সবচেয়ে বেশি ব্যবহৃত ডেটা প্রসেসরের কাছাকাছি নিয়ে আসুন এবং ল্যাটেন্সি কমায়। এটিও সেমিকন্ডাক্টর প্রযুক্তি ব্যবহার করে এবং সেলে বিভক্ত থাকে, কিন্তু এটি র্যামের চেয়ে দ্রুততর এবং যথেষ্ট বেশি ব্যয়বহুল, তাই এর ধারণক্ষমতা কম।
ক্যাশিংয়ের পেছনের ধারণা সবসময় একই থাকে, আমরা যে বিষয়েই কথা বলি না কেন। সিপিইউ ক্যাশে, ডিস্ক ক্যাশে, অথবা ব্রাউজার ক্যাশেইতিমধ্যে দেখা তথ্য সাময়িকভাবে সংরক্ষণ করা, যাতে পুনরায় প্রয়োজন হলে মূল উৎসের (ডিস্ক, নেটওয়ার্ক, ইত্যাদি) চেয়ে দ্রুততর কোনো স্থান থেকে তা পুনরুদ্ধার করা যায়।
এর ধারণা ক্যাশে ডেটা এটি অ্যাপ্লিকেশন, সার্ভার এবং ওয়েব ব্রাউজার স্তরেও প্রযোজ্য। উদাহরণস্বরূপ, আপনি যখন প্রথমবার কোনো পৃষ্ঠা ভিজিট করেন, তখন একটি ব্রাউজার ছবি, স্ক্রিপ্ট, CSS এবং HTML ফাইল ক্যাশ করে রাখে। এর ফলে, আপনি যখন সেই সাইটে ফিরে আসেন, তখন এটিকে সবকিছু আবার ডাউনলোড করতে হয় না; পরিবর্তে, এটি স্থানীয় ডেটা পুনরায় ব্যবহার করে এবং শুধুমাত্র পরিবর্তিত অংশগুলোর জন্য অনুরোধ করে, যা লোডিং সময়কে উল্লেখযোগ্যভাবে উন্নত করে।
এই অস্থায়ী সঞ্চয় ব্যবস্থাটি অন্যান্য উপাদানগুলিতেও ব্যবহৃত হয়: ডিএনএস সার্ভার ডোমেইন নামের রেকর্ড ক্যাশে করে সমাধান দ্রুততর করার জন্য, সিডিএন (কন্টেন্ট ডেলিভারি নেটওয়ার্ক) বিশ্বজুড়ে ছড়িয়ে থাকা নোডগুলিতে স্ট্যাটিক কন্টেন্ট প্রতিলিপি ও ক্যাশ করে রাখে, যা শেষ ব্যবহারকারীদের কাছে লেটেন্সি কমিয়ে আনে।
সেকেন্ডারি মেমরি: ব্লক এবং সেক্টর স্টোরেজ
প্রধান মেমরি দ্রুত কিন্তু এতে দুটি সমস্যা আছে: এটি অস্থিতিশীল এবং এর পর্যাপ্ত ধারণক্ষমতা নেই। আমাদের ব্যবহৃত সমস্ত তথ্য (ডকুমেন্ট, ডেটাবেস, ভিডিও, ব্যাকআপ ইত্যাদি) সংরক্ষণ করার জন্য। এই কারণেই আমাদের সেকেন্ডারি এবং সহায়ক স্টোরেজ প্রয়োজন: হার্ড ড্রাইভ, এসএসডি এবং ইউএফএস-এর মতো মানইউএসবি ড্রাইভ, অপটিক্যাল ডিস্ক ইত্যাদি। এগুলো দীর্ঘস্থায়ী, প্রতি ইউনিট স্টোরেজের খরচ কম এবং এগুলোর ধারণক্ষমতা অনেক বেশি।
এই ডিভাইসগুলো র্যামের মতো ছোট ছোট কোষে সংগঠিত নয়, বরং সেক্টর নামক ভৌত ব্লকঐতিহ্যগতভাবে, সাধারণ সেক্টরের আকার ৫১২ বাইট হয়ে থাকে। রিড এবং রাইট অপারেশনগুলো অন্তত সেক্টর স্তরেই সম্পাদিত হয়: আপনি একটি সেক্টরের চেয়ে কম পরিমাণ ডেটা রিড বা রাইট করতে পারবেন না, কিংবা একটি সেক্টরের ভগ্নাংশকেও অ্যাড্রেস করতে পারবেন না।
ডিস্কের ধারণক্ষমতা বৃদ্ধির সাথে সাথে, স্থান আরও ভালোভাবে ব্যবস্থাপনার জন্য একাধিক সেক্টরকে একত্রিত করার প্রয়োজন দেখা দেয়। এভাবেই সেক্টরের উদ্ভব ঘটে। ক্লাস্টার বা বরাদ্দ ইউনিটএগুলো হলো সেক্টরের সমষ্টি, যা ফাইল সিস্টেম ফাইল বরাদ্দের ক্ষুদ্রতম একক হিসেবে ব্যবহার করে। এটি ব্যবস্থাপনাকে সহজ করে, কিন্তু এর ফলে স্থানের অপচয় হয়, যা আমরা পরে দেখতে পাব।
ফাইল এবং ফাইল সিস্টেম: ডিস্ক সম্পর্কিত যুক্তি
স্টোরেজ ডিভাইসগুলোর সুবিধা নেওয়ার জন্য অপারেটিং সিস্টেমের একটি লজিক্যাল লেয়ার প্রয়োজন, যা সংজ্ঞায়িত করে তথ্য কীভাবে সংরক্ষণ, সংগঠিত এবং নিয়ন্ত্রণ করা হয় ঐ ভৌত ব্লকগুলোর মধ্যে। সেই স্তরটিই হলো ফাইল সিস্টেম।
যৌক্তিক দৃষ্টিকোণ থেকে, ফাইল সিস্টেম দুটি মৌলিক ধারণার উপর নির্ভর করে: সংরক্ষণাগার এবং ফোল্ডার বা ডিরেক্টরিফাইল হলো কোনো বাহ্যিক মাধ্যমে সংরক্ষিত বাইটের একটি অনুক্রম, যাকে একটি যৌক্তিক একক হিসেবে বিবেচনা করা হয়: যেমন একটি পিডিএফ ডকুমেন্ট, একটি ছবি, একটি ভিডিও, একটি ডেটাবেস ইত্যাদি। প্রতিটি ফাইলের একটি নাম এবং সাধারণত একটি এক্সটেনশন থাকে, যা এর বিষয়বস্তুর ধরন শনাক্ত করতে সাহায্য করে (উদাহরণস্বরূপ, .png, .txt, .pdf)।
একটি ফোল্ডার বা ডিরেক্টরি হলো সহজভাবে একটি উপায় গ্রুপ ফাইল এবং অন্যান্য ডিরেক্টরি ব্যবহারকারী বা সিস্টেমের মানদণ্ড অনুযায়ী সংগঠনকে সহজতর করার জন্য। অভ্যন্তরীণভাবে, ফাইল সিস্টেমের নিজস্ব ক্ষেত্রে, একটি ডিরেক্টরি হলো একটি বিশেষ ফাইল যা তার মধ্যে থাকা উপাদান এবং সেগুলোর গঠন সম্পর্কে তথ্য সংরক্ষণ করে।
ফাইল সিস্টেম গুরুত্বপূর্ণ কাজগুলো পরিচালনা করে যেমন ফাইলগুলিতে সেক্টর এবং ক্লাস্টার বরাদ্দ করুনকোন ফাইল কোন ব্লকের অন্তর্গত, তার নিয়ন্ত্রণ বজায় রাখা, ফাইল তৈরি, নাম পরিবর্তন, পরিবর্তন এবং মুছে ফেলার সুবিধা দেওয়া, শ্রেণিবদ্ধ ডিরেক্টরি কাঠামো বজায় রাখা, কোন সেক্টরগুলো খালি এবং কোনগুলো ব্যবহৃত হচ্ছে তা নিয়ন্ত্রণ করা, এবং অনুমতি ও ডেটা অ্যাক্সেস নিরাপত্তা পরিচালনা করা।
সাধারণত প্রতিটি অপারেটিং সিস্টেম পরিবারের নিজস্ব ফাইল সিস্টেম থাকে, যদিও নির্দিষ্ট টুলের মাধ্যমে ক্রমবর্ধমান আন্তঃসামঞ্জস্যতা বা সমর্থন রয়েছে, যার মধ্যে বিভিন্ন উপায়ও অন্তর্ভুক্ত। ক্লাউড স্টোরেজ পরিষেবাগুলিতে অ্যাক্সেস করুন. যোগাযোগ লাইন বা বিশেষ ডিভাইস থেকে প্রাপ্ত ডেটা এগুলোকে ফাইল হিসেবেও প্রকাশ করা যেতে পারে, যদিও এগুলো আসলে গতিশীলভাবে তৈরি হয় (উদাহরণস্বরূপ, GNU/Linux-এর /dev-এ থাকা ডিভাইসগুলো)।
ফাইল সিস্টেমে অ্যাট্রিবিউট, পারমিশন এবং ACL
কে কী অ্যাক্সেস করতে পারবে তা অপারেটিং সিস্টেমের নিয়ন্ত্রণ করার জন্য, প্রতিটি রিসোর্সের (ফাইল, ডিরেক্টরি, প্রিন্টার, নেটওয়ার্ক রিসোর্স, ইত্যাদি) সাধারণত থাকে অ্যাক্সেস কন্ট্রোল লিস্ট (ACL) এর সাথে যুক্তএই তালিকাটি দেখায় কোন কোন ব্যবহারকারী বা গোষ্ঠী এটি অ্যাক্সেস করতে পারবে এবং কী কী অনুমতি নিয়ে: যেমন পড়া, লেখা, সম্পাদন করা, ইত্যাদি।
অনুমতি ছাড়াও, একটি ফাইলে থাকতে পারে এমন বৈশিষ্ট্য যা এর প্রকৃতি বা এর বিশেষ পরিচর্যা বর্ণনা করে সিস্টেমের দৃষ্টিকোণ থেকে: সিস্টেম ফাইল, লুকানো, শুধুমাত্র পঠনযোগ্য, এনক্রিপ্টেড, ডিরেক্টরি, অস্থায়ী, ইত্যাদি। এই বৈশিষ্ট্যগুলো নির্ধারণ করে যে ফাইলটি ব্যবহারকারীর কাছে কীভাবে প্রদর্শিত হবে এবং কোন অপারেশনগুলোর অনুমতি দেওয়া হবে।
রুট, নাম এবং ওয়াইল্ডকার্ড
প্রায় সকল আধুনিক ফাইল সিস্টেম ডেটাকে স্তরবিন্যাসগতভাবে সাজিয়ে থাকে। ডিরেক্টরি গাছকোনো ফাইল বা ডিরেক্টরিকে স্বতন্ত্রভাবে খুঁজে বের করার জন্য এর পাথ ব্যবহার করা হয়, যা ট্রি-এর মধ্যে অনুসরণ করার পথটি বর্ণনা করে: এটি হলো বিশেষ অক্ষর দ্বারা পৃথক করা ডিরেক্টরিগুলোর একটি ক্রম, যার শেষ উপাদানটি হলো স্বয়ং ফাইল বা ফোল্ডারটি।
ইউনিক্স-সদৃশ সিস্টেমগুলিতে (যেমন গ্নু/লিনাক্স, যার মূলে রয়েছে ম্যাকওএস), অ্যাবসোলিউট পাথ শুরু হয় একটি ফরওয়ার্ড স্ল্যাশ (/) যা রুট ডিরেক্টরিকে বোঝায়উদাহরণ: /home/Alicia/Documents/report.odt। মাইক্রোসফট সিস্টেমে, ড্রাইভ লেটারের আগে একটি কোলন (:) এবং ব্যাকস্ল্যাশ বসে: C:\Users\Alicia\Documents\report.odt।
আমরা আপেক্ষিক পথও ব্যবহার করতে পারি, যা শুরু হয় বর্তমান ব্যবহারকারী ডিরেক্টরিউদাহরণস্বরূপ, ../../Jacinto/Documentos/memoria.odt নির্দেশ করে “দুই স্তর উপরে গিয়ে তারপর নিচে Jacinto/Documentos/memoria.odt-এ যাও”। ইউনিক্সে পাথের জন্য বিশেষ ওয়াইল্ডকার্ড রয়েছে: . (বর্তমান ডিরেক্টরি), .. (প্যারেন্ট ডিরেক্টরি), এবং ~ (ব্যবহারকারীর হোম ডিরেক্টরি)।
অপারেটিং সিস্টেমগুলো এক বা একাধিক ফাইলের পুরো নাম না জেনেই সেগুলোকে নির্দেশ করার জন্য ওয়াইল্ডকার্ড ক্যারেক্টার প্রদান করে। তারকাচিহ্ন (*) যেকোনো অক্ষরের সংমিশ্রণকে বোঝায়।এমনকি অক্ষরের অনুপস্থিতিও; প্রশ্নবোধক চিহ্ন (?) একটি একক অক্ষরকে বোঝায়। উদাহরণস্বরূপ, *image*.png ফাইলটি My_image.png, image.png, image1.png, এবং image21.png-এর সাথে মিলতে পারে, কিন্তু image??.png শুধুমাত্র .png যুক্ত ছয়-অক্ষরের নামের সাথেই মিলবে, যেমন image21.png।
র্যামের ফাইল থেকে ডিস্কের ফাইলে
যখন আপনি কোনো অ্যাপ্লিকেশন থেকে একটি ফাইল তৈরি করেন, তখন ডেটা প্রাথমিকভাবে শুধুমাত্র প্রধান মেমরিতে থাকে। যদি আপনি নোটপ্যাড খোলেন, আপনার নাম টাইপ করেন এবং এখনও সেভ না করে থাকেন, তাহলে তথ্যটি থাকে... মেমরি প্রসেস নোটপ্যাড.এক্সইডিস্কে সেই কন্টেন্টের সাথে সম্পর্কিত কোনো ফাইল নেই।
আপনি “Save”-এ ক্লিক করে একটি পাথ বেছে নেওয়ার সাথে সাথেই, অপারেটিং সিস্টেম ফাইল সিস্টেমে একটি ফাইল তৈরি করে এবং স্টোরেজ ডিভাইসের এক বা একাধিক ক্লাস্টার বরাদ্দ করে সেই তথ্য সংরক্ষণ করার জন্য। তারপর থেকে, সিস্টেমকে অবশ্যই সর্বদা জানতে হবে যে সেই ফাইলের জন্য কোন ব্লকগুলি সংরক্ষিত করা হয়েছে এবং সেগুলি কোন ক্রমে পড়া উচিত।
একটি কৌতূহলোদ্দীপক বিষয় হলো: প্রায়শই ফাইলের যৌক্তিক আকার (ডেটার বাইটে) আসল আকারের চেয়ে অনেক ছোট হয়। এটি যে প্রকৃত ডিস্ক স্পেস দখল করেউদাহরণস্বরূপ, ASCII-তে 'Javier' শব্দটি সম্বলিত একটি টেক্সট ফাইল ৬ বাইট জায়গা নেয়, কিন্তু যে সিস্টেমে ক্লাস্টার সাইজ ৪ KiB, সেখানে ফাইলটি ডিস্কে ৪০৯৬ বাইট জায়গা নেবে, কারণ ক্লাস্টার হলো ক্ষুদ্রতম বরাদ্দযোগ্য একক (যদি আপনি এই আচরণটি নিয়ে চিন্তিত হন, তবে দেখুন)। অভ্যন্তরীণ স্টোরেজ পূর্ণ দেখা গেলে কী করবেন).
উইন্ডোজে সিস্টেম ফাইল ক্যাশে
উইন্ডোজে, অপারেটিং সিস্টেম একটি বাস্তবায়ন করে সিস্টেম ফাইল ক্যাশে যা ইনপুট/আউটপুট (I/O) অপারেশন এবং ফিজিক্যাল ডিস্কের মধ্যে মধ্যস্থতাকারী হিসেবে কাজ করে। ডিফল্টরূপে, যখন কোনো প্রোগ্রাম একটি ফাইল থেকে পড়ে বা তাতে লেখে, তখন এটি আসলে ক্যাশ ম্যানেজার দ্বারা পরিচালিত মেমরির একটি অঞ্চলে পড়ে বা লেখে।
যখন কোনো রিড অপারেশন সম্পন্ন করা হয়, তখন ডেটা প্রথমে ডিস্ক থেকে সিস্টেম মেমরির একটি ফাইল ক্যাশ হিসেবে সংরক্ষিত অঞ্চলে লোড করা হয়। সেখান থেকে, ইউজার-মোড প্রসেসগুলো সেই ডেটা তাদের নিজস্ব অ্যাড্রেস স্পেসে কপি করে। যদি ফাইলের একই অংশ পরে আবার পড়া হয়সিস্টেমটি ডিস্কে পুনরায় অ্যাক্সেস না করেই সরাসরি ক্যাশে থেকে এটি পরিবেশন করতে পারে, যা পারফরম্যান্সকে ব্যাপকভাবে বাড়িয়ে দেয়।
রাইট অপারেশনের ক্ষেত্রে, ডেটা তাৎক্ষণিকভাবে ডিস্কে লেখার পরিবর্তে প্রাথমিকভাবে সিস্টেমের ফাইল ক্যাশে সংরক্ষিত হয়। এই পদ্ধতিটি পরিচিত রাইট-ব্যাক রিরাইট ক্যাশেক্যাশ ম্যানেজার পর্যায়ক্রমে এই মেমরি খালি করে, পরিবর্তিত ব্লকগুলিকে ফিজিক্যাল ডিস্কে লিখে দেয় এবং ক্যাশে জায়গা খালি করে। এই খালি করার সময় নির্ভর করে ডেটা কতক্ষণ ধরে ক্যাশে আছে এবং কতক্ষণ আগে এটি শেষবার অ্যাক্সেস করা হয়েছিল তার উপর।
ডিস্কে লেখা স্থগিত রাখার এই নীতির কর্মক্ষমতাগত সুবিধা থাকলেও, এর একটি ঝুঁকিও রয়েছে: ক্যাশে পরিষ্কার করার আগে যদি বিদ্যুৎ বিভ্রাট বা আকস্মিক ব্যর্থতা ঘটেযে ডেটা এখনও ডিস্কে লেখা হয়নি, তা হারিয়ে যেতে পারে। পারফরম্যান্স এবং নির্ভরযোগ্যতার মধ্যে ভারসাম্য বজায় রাখতে, উইন্ডোজ প্রতি সেকেন্ডে ডিফার্ড রাইটার (deferred writer) নামক একটি প্রসেস চালু করে, যা ডিস্কে লেখার অপেক্ষায় থাকা পেজগুলোর একটি অংশকে কিউতে জমা করে এবং গতিশীলভাবে লেখার ডেটার পরিমাণ সমন্বয় করে।
এর প্রয়োগ রয়েছে (উদাহরণস্বরূপ, অ্যান্টিভাইরাস সফটওয়্যার বা ডেটাবেস ম্যানেজমেন্ট সিস্টেমতাদের নিশ্চিত করতে হবে যে রাইট করা ডেটা যেন অবিলম্বে ডিস্কে লেখা হয়। এটি করার জন্য, উইন্ডোজ রাইট-থ্রু মোড প্রদান করে: যদি FILE_FLAG_WRITE_THROUGH ফ্ল্যাগযুক্ত কোনো ফাইল খোলা হয়, তাহলে ডেটা ক্যাশে লেখা হয়, কিন্তু ক্যাশ ম্যানেজার কোনো বিলম্ব ছাড়াই তা ডিস্কে পাঠিয়ে দেয়। এছাড়াও, FlushFileBuffers-এর মতো ফিচারগুলো মেটাডেটা এবং পেন্ডিং কন্টেন্টকে জোরপূর্বক ফ্লাশ করার সুযোগ দেয়।
খুব বড় ব্লক সহ কিছু ব্যাপক I/O পরিস্থিতিতে, ক্যাশিং পারফরম্যান্স খারাপ করতে পারে। এই ধরনের ক্ষেত্রে, FILE_FLAG_NO_BUFFERING ফ্ল্যাগ ব্যবহার করে ফাইল খোলা সম্ভব, যাতে রিড এবং রাইট সরাসরি ফিজিক্যাল ডিস্কে যায়।ফাইল ক্যাশে বাইপাস করে (যদিও কিছু মেটাডেটা তখনও ক্যাশে থাকতে পারে)।
ফাইল সিস্টেমের প্রকারভেদ এবং বৈশিষ্ট্য
সর্বাধিক ব্যবহৃত ফাইল সিস্টেমগুলো যে অপারেটিং সিস্টেম পরিবারের জন্য ডিজাইন করা হয়েছে তার সাথে ঘনিষ্ঠভাবে জড়িত, যদিও সামঞ্জস্যতার কারণে অনেকগুলো কার্যত স্ট্যান্ডার্ডে পরিণত হয়েছে। চলুন সবচেয়ে গুরুত্বপূর্ণগুলো দেখে নেওয়া যাক।
মাইক্রোসফট ফ্যামিলি ফাইল সিস্টেম
উইন্ডোজ জগতে আমরা প্রধানত দুটি বৃহৎ পরিবারকে আলাদা করতে পারি: ফ্যাট এবং এনটিএফএসFAT (ফাইল অ্যালোকেশন টেবিল) একটি সরল এবং খুবই পুরোনো নকশা, অপরদিকে NTFS (নিউ টেকনোলজি ফাইল সিস্টেম) আরও আধুনিক, শক্তিশালী এবং বৈশিষ্ট্য-সমৃদ্ধ।
FAT একটি টেবিলের উপর নির্ভর করে, যা প্রতিটি ক্লাস্টারের জন্য নির্দেশ করে যে এটি কোন ফাইলের অন্তর্গত এবং ফাইল চেইনে পরবর্তী ক্লাস্টার কোনটি। এর সবচেয়ে উল্লেখযোগ্য সংস্করণগুলো হলোFAT12 (১৯৮০-এর দশকের গোড়ার দিকে, ৩২ মেগাবাইট পর্যন্ত ভলিউম এবং ৮.৩ নামকরণের রীতি সহ), FAT16 (৩২ কিলোবাইট ক্লাস্টার সহ প্রায় ৯০ গিগাবাইট পর্যন্ত), VFAT (উইন্ডোজ ৩.১১/৯৫-এ ৩২-বিট প্রোটেক্টেড মোড সাপোর্ট এবং দীর্ঘ নামকরণের রীতি সহ), এবং FAT32 (উইন্ডোজ ৯৫ OSR2-তে প্রবর্তিত, যার তাত্ত্বিক ধারণক্ষমতা প্রায় ৮ টেরাবাইট হলেও মাইক্রোসফট এটিকে ছোট আকারে সীমাবদ্ধ করে এবং ফাইলের সর্বোচ্চ আকার ছিল ৪ গিগাবাইট)। পরবর্তীতে আসে exFAT, যা ইউএসবি ড্রাইভ এবং ফ্ল্যাশ ড্রাইভের জন্য অপ্টিমাইজ করা হয়েছিল এবং এতে ফাইলের আকারের সীমাবদ্ধতা কম ছিল।
চর্বির বেশ কিছু অসুবিধা রয়েছে: তাদের গঠন সহজেই খণ্ড-বিখণ্ড হয়ে যায়।এটিতে উন্নত পারমিশন বা জার্নালিং প্রয়োগ করা হয় না, এবং দ্রুত হওয়ার জন্য পুরো FAT টেবিলটি সাধারণত র্যামে লোড করা হয়, যা উল্লেখযোগ্য পরিমাণ মেমরি খরচ করে। খুব বড় ডিস্কের ক্ষেত্রে, যদি টেবিলের কেবল একটি অংশ ক্যাশ করা থাকে, তবে অত্যন্ত খণ্ডিত ফাইল অ্যাক্সেস করার জন্য শুধুমাত্র FAT খণ্ডগুলি পড়ার ক্ষেত্রেই অনেকবার ডিস্ক জাম্পের প্রয়োজন হতে পারে।
অন্যদিকে এনটিএফএস চালু করে কর্মক্ষমতা, নিরাপত্তা এবং নির্ভরযোগ্যতার উন্নতিএটি গ্র্যানুলার পারমিশন, এসিএল (ACL), এনক্রিপশন, কম্প্রেশন, জার্নালিং এবং নির্দিষ্ট কিছু ত্রুটি থেকে স্বয়ংক্রিয় পুনরুদ্ধার সমর্থন করে। এটি এইচপিএফএস (HPFS) (ওএস/২ (OS/2)-এর জন্য তৈরি)-এর উপর ভিত্তি করে নির্মিত এবং বিপুল পরিমাণ ডেটা (সাধারণ বাস্তবায়নে কয়েক দশ টেরাবাইট পর্যন্ত) পরিচালনা করতে পারে। এর বেশ কয়েকটি সংস্করণ প্রকাশিত হয়েছে: এনটি ৩.১ (এনটি ৩.১) (ভি১.০) থেকে শুরু করে উইন্ডোজ ২০০০ এবং এক্সপি-র পর থেকে ব্যবহৃত ৩.এক্স (3.x) সংস্করণগুলো পর্যন্ত।
অ্যাপলে ফাইল সিস্টেম
অ্যাপল কম্পিউটারে বেশ কয়েকটি প্রজন্মের ফাইল সিস্টেম এসেছে, যার প্রতিটিই তৎকালীন প্রযুক্তির সাথে খাপ খাইয়ে নেওয়া হয়েছে। এগুলোর মধ্যে সবচেয়ে প্রতিনিধিত্বমূলক হলো: এমএফএস, এইচএফএস, এইচএফএস+ এবং এপিএফএস.
এমএফএস (ম্যাকিনটোশ ফাইল সিস্টেম) ছিল ১৯৮৪ সালে মূল ম্যাকিনটোশের জন্য প্রথম ফাইল সিস্টেম। এটি ২৫৫ অক্ষর পর্যন্ত ফাইলের নাম ব্যবহারের সুযোগ দিত, যদিও এটি কেবল প্রথম ৬৩টি অক্ষরকে সূচীবদ্ধ করত এবং ২৫৬ মেগাবাইট পর্যন্ত ভলিউম পরিচালনা করতে পারত। ধারণক্ষমতা দ্রুত বৃদ্ধি পাওয়ায়, এটি শীঘ্রই প্রতিস্থাপিত হয়। এইচএফএস (হায়ারার্কিক্যাল ফাইল সিস্টেম), যা ম্যাক ওএস স্ট্যান্ডার্ড নামেও পরিচিত, যেটি একটি সত্যিকারের শ্রেণিবদ্ধ সংগঠন চালু করেছিল এবং ২ টেরাবাইট পর্যন্ত ভলিউম সমর্থন করত (যেখানে প্রতিটি ফাইলের ধারণক্ষমতা ২ গিগাবাইট পর্যন্ত হতে পারত)।
পরবর্তীতে আসে এইচএফএস প্লাস (HFS+), বা ম্যাক ওএস এক্সটেন্ডেড, যার সাথে জার্নালিং, ইউনিকোড নাম এবং ৮ এক্সাবাইট পর্যন্ত ভলিউমের জন্য সমর্থন।এটি বহু বছর ধরে ম্যাক-এর প্রধান ফাইল সিস্টেম হিসেবে ব্যবহৃত হয়ে আসছে। এসএসডি-র আবির্ভাব এবং আধুনিক এনক্রিপশন ও স্ন্যাপশটের প্রয়োজনীয়তার কারণে, অ্যাপল এপিএফএস (অ্যাপল ফাইল সিস্টেম) ডিজাইন করে, যা বিশেষভাবে ফ্ল্যাশ মেমরির জন্য অপ্টিমাইজ করা এবং ম্যাকওএস সিয়েরা ও আইওএস ১০.৩ থেকে সমর্থিত। এপিএফএস স্পেস ম্যানেজমেন্ট, ফাইল ক্লোনিং এবং নিবিড় অপারেশনগুলিতে পারফরম্যান্স উন্নত করে।
GNU/Linux এবং Unix-এর ফাইল সিস্টেম
GNU/Linux বিভিন্ন ধরণের ফাইল সিস্টেম সমর্থন করে, তবে সবচেয়ে প্রচলিত হলো ফাইল সিস্টেম পরিবারগুলি। ext (ext2, ext3, ext4), ReiserFS, XFS এবং ZFS (পরবর্তীটি বাহ্যিক মডিউলের মাধ্যমে)।
ext2 ১৯৯৩ সালে ext-এর একটি উন্নত সংস্করণ হিসেবে চালু করা হয়েছিল, যা ১৬ টেরাবাইট পর্যন্ত ভলিউম, ২ টেরাবাইট পর্যন্ত ফাইল এবং ২৫৬-অক্ষরের ফাইলের নাম সমর্থন করত। ২০০১ সালে প্রকাশিত ext3-তে জার্নালিং যুক্ত করা হয় এবং এটি ব্যালেন্সড বাইনারি ট্রির মতো আরও কার্যকর কাঠামোর উপর নির্ভর করত, তবে একই সাথে ext2-এর সাথে সামঞ্জস্যতা বজায় রেখেছিল। ২০০৬ সালে প্রকাশিত ext4 গতি ও সিপিইউ ব্যবহার উন্নত করে এবং ভলিউম ও ফাইলের সর্বোচ্চ ধারণক্ষমতা ১ এক্সাবাইট থেকে বাড়িয়ে ১৬ টেরাবাইট পর্যন্ত করে।
ReiserFS ছিল লিনাক্স কার্নেল দ্বারা সমর্থিত প্রথম জার্নালিং সিস্টেমগুলোর মধ্যে একটি, যা ছোট ফাইলের ক্ষেত্রে ভালো পারফরম্যান্স দিত। XFS, যা মূলত IRIX থেকে এসেছে এবং লিনাক্সে পোর্ট করা হয়েছে, সেটিও জার্নালিং বাস্তবায়ন করে এবং উচ্চ-পারফরম্যান্স পরিবেশে এর সর্বোচ্চ ভলিউম সাইজ ও পারফরম্যান্সের জন্য উল্লেখযোগ্য, যা ১৬ এক্সাবাইট পর্যন্ত পরিচালনা করতে সক্ষম।
জেডএফএস, যা মূলত সান মাইক্রোসিস্টেমস সোলারিসের জন্য তৈরি করেছিল, একটি সমন্বিত ফাইল সিস্টেম এবং ভলিউম ম্যানেজার পদ্ধতি প্রবর্তন করে। এটি ১৬ এক্সাবাইট পর্যন্ত ফাইল এবং বিশাল আকারের ভলিউম সমর্থন করে।, স্ন্যাপশট, চেকসাম ব্যবহার করে ইন্টিগ্রিটি যাচাইকরণ, সেলফ-টেস্টিং এবং সাইলেন্ট করাপশনের স্বয়ংক্রিয় মেরামতের মতো উন্নত বৈশিষ্ট্য সহ।
ফাইল সিস্টেম কীভাবে ব্লকগুলিকে অ্যাড্রেস করে: ইনোড এবং এক্সটেন্ট
ইউনিক্স-সদৃশ সিস্টেমে, ext2 এবং ext3-এর মতো ফাইল সিস্টেমগুলো একটি কাঠামো ব্যবহার করে যাকে বলা হয় ইনোড প্রতিটি ফাইলকে উপস্থাপন করার জন্য। আইনোড মেটাডেটা (অনুমতি, মালিক, আকার, টাইমস্ট্যাম্প ইত্যাদি) এবং ডেটা ব্লকের দিকে নির্দেশকারী একাধিক পয়েন্টার সংরক্ষণ করে।
ext3-তে প্রতিটি আইনোডে ডেটা ব্লকের ১২টি ডিরেক্ট পয়েন্টার এবং তিনটি ইনডিরেক্ট পয়েন্টার থাকে: একটি সিঙ্গেল, একটি ডাবল ও একটি ট্রিপল। সরাসরি নির্দেশকগুলির সাথে সরাসরি বারোটি ডেটা ব্লক অ্যাক্সেস করা যায়। যদি ব্লকের আকার ৪০৯৬ বাইট হয়, তবে এটি ৪৮ কিলোবাইট ডেটার (১২ × ৪০৯৬) সমতুল্য।
ফাইলের আকার সেই সীমা অতিক্রম করলে, সিম্পল ইনডাইরেক্ট পয়েন্টার কার্যকর হয়, যা এমন একটি বিশেষ ব্লককে নির্দেশ করে যেখানে শুধুমাত্র অন্যান্য ডেটা ব্লকের অ্যাড্রেস থাকে। ৩২-বিট ওয়ার্ড (৪ বাইট) ধরে নিলে, একটি ৪০৯৬-বাইটের ব্লকে ১০২৪টি অ্যাড্রেস থাকতে পারে। এর ফলে অতিরিক্ত ৪ এমআইবি যোগ হয়। (১০২৪ × ৪০৯৬ বাইট)। আরও বড় ফাইলের জন্য ডাবল এবং ট্রিপল ইনডাইরেক্ট পয়েন্টার ব্যবহার করা হয়, যা একাধিক স্তরের অ্যাড্রেস ব্লকগুলিকে শৃঙ্খলিত করে এবং প্রতি ফাইলে ৪ GiB (ডাবল) এবং ৪ TiB (ট্রিপল) পর্যন্ত ধারণক্ষমতায় পৌঁছায়।
১২টি ডিরেক্ট পয়েন্টার, একটি ইনডিরেক্ট পয়েন্টার, ডাবল এবং ট্রিপল পয়েন্টার দ্বারা প্রদত্ত সক্ষমতাগুলোর যোগফল আমাদেরকে দেয় ext3-এ তাত্ত্বিক সর্বোচ্চ ফাইলের আকার: 48 KiB + 4 MiB + 4 GiB + 4 TiB, প্রায়।
ext4-এ এই কাঠামোটি নতুন করে ডিজাইন করা হয়েছে: বড় ডিভাইস (১ EiB পর্যন্ত) সমর্থন করার জন্য পয়েন্টারগুলো ৪৮ বিটের করা হয়েছে এবং এর পরিবর্তে ইনডিরেকশন ব্লক ব্যবহার করা হয়। বিস্তৃতিএকটি এক্সটেন্ট দুটি মান ব্যবহার করে সংলগ্ন ব্লকগুলির একটি পরিসর বর্ণনা করে: প্রারম্ভিক ব্লক এবং ব্লকের সংখ্যা। ext3-এ অ্যাড্রেসের জন্য ব্যবহৃত ৬০ বাইট, ext4-এ একাধিক এক্সটেন্ট এবং একটি হেডার সংরক্ষণের জন্য পুনরায় ব্যবহার করা হয়। যদি একটি ফাইল অত্যন্ত খণ্ডিত হয় এবং আরও এক্সটেন্টের প্রয়োজন হয়, তবে একটি ট্রি (HTree) গঠন করা হয়, যেখানে রুটটি আইনোডে সংরক্ষিত থাকে এবং লিফ নোডগুলিতে অতিরিক্ত এক্সটেন্টগুলি থাকে।
এই পরিধি-ভিত্তিক কাঠামোর লক্ষ্য হলো খণ্ডন হ্রাস করুন এবং কর্মক্ষমতা উন্নত করুনকারণ এটি স্বতন্ত্র ব্লকের দীর্ঘ তালিকার পরিবর্তে বৃহৎ সংলগ্ন পরিসর নিয়ে কাজ করে।
অন্যান্য নির্দিষ্ট এবং ভার্চুয়াল ফাইল সিস্টেম
ডিস্ক এবং নেটওয়ার্ক ফাইল সিস্টেম ছাড়াও, এমন সিস্টেম রয়েছে যা ডিজাইন করা হয়েছে খুব নির্দিষ্ট উদ্দেশ্যে অথবা ভার্চুয়াল মোডে কাজ করার জন্য. কিছু উল্লেখযোগ্য উদাহরণ:
- সোয়াপ: ভার্চুয়াল মেমরির জন্য সংরক্ষিত ডিস্কের একটি এলাকা, যেখানে র্যাম শেষ হয়ে গেলে পেজগুলো অদলবদল করা হয়।
- archfs: ব্যবহারকারী-স্থান ফাইল সিস্টেম (FUSE) যা rdiff-backup রিপোজিটরিগুলো ব্রাউজ করার সুযোগ দেয়।
- cdfs: লিনাক্সের একটি ভার্চুয়াল ফাইল সিস্টেম, যা কমপ্যাক্ট ডিস্ক থেকে স্বতন্ত্র ডেটা বা অডিও ট্র্যাক অ্যাক্সেস করার জন্য ব্যবহৃত হয়।
- udev এবং devfs: GNU/Linux-এ /dev-এর অধীনে থাকা ডিভাইস ফাইলগুলো পরিচালনা করতে ব্যবহৃত হয়।
- ftpfs এবং nntpfs: ইউজার স্পেস সিস্টেম (FUSE) যা FTP বা NNTP দ্বারা অ্যাক্সেসযোগ্য ডেটাকে একটি লোকাল ফাইল সিস্টেমের মতো করে উন্মুক্ত করে।
FUSE (Filesystem in Userspace), যা লিনাক্স কার্নেলের ২.৬.১৪ সংস্করণ থেকে অন্তর্ভুক্ত, অনুমতি দেয় অ-সুবিধাপ্রাপ্ত ব্যবহারকারীরা ফাইল সিস্টেম তৈরি এবং ইনস্টল করে এই প্রোগ্রামগুলো ইউজার স্পেসে চলে, যেখানে একটি কার্নেল মডিউল মধ্যস্থতাকারী হিসেবে কাজ করে। এর ফলে উপলব্ধ ফাইল সিস্টেমের (NTFS, EncFS, ইত্যাদি) বৈচিত্র্য ব্যাপকভাবে বৃদ্ধি পায়, এমনকি ভার্চুয়াল ডিস্কগুলোকেও (যেমন .vdi ফাইল) ফিজিক্যাল ডিস্কের মতোই মাউন্ট করা যায়। এর অসুবিধা হলো, কার্নেল মোড এবং ইউজার মোডের মধ্যে এই ক্রমাগত পরিবর্তনের কারণে পারফরম্যান্সে কিছুটা ঘাটতি দেখা দেয়।
এর গভীরে সবকিছু VFS (ভার্চুয়াল ফাইল সিস্টেম)-এর উপর নির্ভর করে, যা একটি অ্যাবস্ট্রাকশন লেয়ার এবং যা এটি অত্যন্ত ভিন্ন স্থাপত্যের ফাইল সিস্টেমগুলিতে অ্যাক্সেসকে একীভূত করে।যাতে অ্যাপ্লিকেশনগুলো তাদের অন্তর্নিহিত সিস্টেমের নির্দিষ্ট ধরন নির্বিশেষে একটি অভিন্ন ইন্টারফেস দেখতে পায়।
ফাইল সিস্টেমে লেনদেন এবং জার্নালিং
একটি লেনদেন হল একটি অপারেশনগুলির ক্রম যা অবশ্যই অ্যাটমিকভাবে সম্পাদন করতে হবেহয় সমস্ত অপারেশন সফলভাবে সম্পন্ন হয়, অথবা যদি কিছু ব্যর্থ হয়, তবে সিস্টেমটিকে তার মূল অবস্থায় ফিরিয়ে আনতে হবে। এই ধারণাটি ডেটাবেসের ক্ষেত্রে যেমন প্রযোজ্য, তেমনি জার্নালিংয়ের মাধ্যমে ফাইল সিস্টেমের ক্ষেত্রেও প্রযোজ্য।
জার্নালিং বা ডায়েরি লেখা বলতে বোঝায় একটি নির্দিষ্ট বিষয় লিখে রাখা। যে জার্নালে পরিকল্পিত পরিবর্তনগুলো প্রয়োগ করার আগে লিপিবদ্ধ করা হয়। প্রকৃত ফাইল সিস্টেমে। লেখার কাজ চলাকালীন যদি বিদ্যুৎ বিভ্রাট বা অপ্রত্যাশিত কোনো ত্রুটি ঘটে, তবে সিস্টেম পুনরায় চালু হলে জার্নালটি পরীক্ষা করা হয়: অপারেটিং মোডের উপর নির্ভর করে অসম্পূর্ণ লেনদেনগুলো রোলব্যাক বা পুনরায় করা হয়, যা ফাইল সিস্টেমের কাঠামোকে সামঞ্জস্যপূর্ণ রাখে এবং গুরুতর ত্রুটি প্রতিরোধ করে।
পার্টিশন, এমবিআর এবং লজিক্যাল ডিস্ক সংগঠন
হার্ড ড্রাইভ বা এসএসডি খুব কমই একটি অবিভক্ত অখণ্ড ব্লক হিসেবে ব্যবহৃত হয়। স্বাভাবিক কাজটি হলো পার্টিশন তৈরি করা।এগুলো হলো ডিস্কের সংলগ্ন অংশ যা একটি শুরু এবং একটি শেষ সেক্টর দ্বারা সীমাবদ্ধ। প্রতিটি পার্টিশনে ভিন্ন ভিন্ন ফাইল সিস্টেম থাকতে পারে, যার ফলে উদাহরণস্বরূপ, একই ডিস্কে উইন্ডোজ ও লিনাক্স ইনস্টল করা যায়, অথবা সিস্টেম ডেটা এবং ইউজার ডেটা আলাদা রাখা যায়।
অপারেটিং সিস্টেমের দৃষ্টিকোণ থেকে, প্রতিটি পার্টিশনকে এভাবে পরিচালনা করা যেতে পারে একটি স্বাধীন যৌক্তিক এককউইন্ডোজে এর নিজস্ব ড্রাইভ লেটার থাকে (C:, D:, ইত্যাদি); গ্নু/লিনাক্সে এটি নির্দিষ্ট ডিরেক্টরিতে (/home, /var, ইত্যাদি) মাউন্ট করা হয়। এটি নমনীয়তা প্রদান করে এবং ডেটা পার্টিশনে হাত না দিয়েই অপারেটিং সিস্টেম পুনরায় ইনস্টল করার মতো কাজগুলোকে সহজ করে তোলে।
ক্লাসিক MBR পার্টিশনিং স্কিমগুলিতে, পার্টিশন সম্পর্কিত তথ্য সংরক্ষিত থাকে ডিস্কের সেক্টর ০-তে সংরক্ষিত পার্টিশন টেবিলযা সুনির্দিষ্টভাবে এমবিআর (মাস্টার বুট রেকর্ড) নামে পরিচিত। এমবিআর-এ তিনটি প্রধান উপাদান থাকে: একটি ছোট বুট প্রোগ্রাম (বুটলোডার, যা অপারেটিং সিস্টেম বা আরও জটিল কোনো লোডার চালু করার জন্য দায়ী), পার্টিশন টেবিল (সর্বোচ্চ চারটি এন্ট্রি সহ) এবং একটি ১৬-বিটের “ম্যাজিক কোড”, সাধারণত 0x55AA, যা নির্দেশ করে যে এমবিআর-টি বৈধ।
MBR পার্টিশন টেবিল শুধুমাত্র চারটি সমর্থন করে প্রাথমিক পার্টিশনএই সীমাবদ্ধতা কাটিয়ে ওঠার জন্য, দুটি অতিরিক্ত প্রকার সংজ্ঞায়িত করা হয়েছিল: এক্সটেন্ডেড পার্টিশন এবং লজিক্যাল পার্টিশন। একটি এক্সটেন্ডেড পার্টিশন আসলে এক বিশেষ ধরনের প্রাইমারি পার্টিশন যা সরাসরি ডেটা ধারণ করে না, বরং এর অভ্যন্তরে একাধিক যৌক্তিক বিভাজন রয়েছে।সুতরাং, আমরা MBR-এ সর্বাধিক চারটি এন্ট্রি রাখতে পারি (উদাহরণস্বরূপ, তিনটি প্রাইমারি এবং একটি এক্সটেন্ডেড) এবং এক্সটেন্ডেড এন্ট্রিটির মধ্যে আমাদের প্রয়োজন অনুযায়ী যত খুশি লজিক্যাল এন্ট্রি রাখতে পারি।
বাস্তবে, যখন একটি নতুন ডিস্কে ইনিশিয়ালাইজ করা MBR থাকে না, তখন gparted-এর মতো টুলগুলো তা শনাক্ত করে। 0x55AA এর কোনো শনাক্তযোগ্য লেবেল বা জাদুকরী কোড নেই। এবং সতর্কবার্তা প্রদর্শন করে। প্রথম ধাপটি সাধারণত একটি নতুন পার্টিশন টেবিল তৈরি করা (উদাহরণস্বরূপ, MBR-এর জন্য একটি MSDOS টাইপ)। সেখান থেকে প্রাইমারি পার্টিশন তৈরি করা হয়, এবং যদি চারটির বেশি ফাইল সিস্টেমের প্রয়োজন হয়, তবে অতিরিক্ত লজিক্যাল পার্টিশনগুলোকে স্থান দেওয়ার জন্য একটি এক্সটেন্ডেড পার্টিশন তৈরি করা হয়।
পরিকল্পনা করার সময়, প্রতিটি পার্টিশনের আকার ও ধরন কী হবে তা আগে থেকেই ঠিক করে নেওয়া বাঞ্ছনীয়: যেমন, ডেটার জন্য NTFS-এ একটি বড় প্রাইমারি পার্টিশন, লিনাক্সের জন্য ext4-এ আরেকটি, সোয়াপের জন্য একটি FAT32, এবং কয়েকটি লজিক্যাল পার্টিশন সহ একটি এক্সটেন্ডেড পার্টিশন, অথবা আপনার হার্ড ড্রাইভ রূপান্তর করুন অন্যান্য ব্যবহারের জন্য। যদি একটি বর্ধিত সংস্করণ সংরক্ষণ না করে চারটি প্রাথমিক সংস্করণ শেষ হয়ে যায়কাঠামোটি সঠিকভাবে পুনর্গঠন করার জন্য আমাদের কিছু পার্টিশন মুছে ফেলতে হবে।
প্রশাসনিক বা প্রশিক্ষণ পরিবেশে, SystemRescue-এর মতো একটি লাইভ ডিস্ট্রিবিউশন ব্যবহার করে, startx-এর মাধ্যমে গ্রাফিক্যাল মোডে বুট করা এবং gparted-এর মতো টুল ব্যবহার করে বিভিন্ন ফাইল সিস্টেম (NTFS, FAT32, ext3, ext4, ইত্যাদি) সহ পার্টিশন তৈরি, আকার পরিবর্তন ও ফরম্যাট করা একটি সাধারণ রীতি। এই প্রক্রিয়ার সময় একটি MBR কীভাবে ইনিশিয়ালাইজ হয় এবং পার্টিশন টেবিলে পরিবর্তনগুলো কীভাবে প্রতিফলিত হয়, তা-ও পরীক্ষা করে দেখা হয়।
রেজিস্টার, ক্যাশ, প্রধান মেমরি, ডিস্ক, ফাইল সিস্টেম, জার্নালিং এবং পার্টিশনের এই পুরো নেটওয়ার্কটির মানে হলো, যখন আপনি "Save" চাপেন, ডেটা সিপিইউ রেজিস্টার থেকে ফিজিক্যাল ডিস্কের একটি নির্দিষ্ট ব্লকে স্থানান্তরিত হয়। ক্যাশে এবং লজিক্যাল কাঠামোর বিভিন্ন স্তরের মধ্য দিয়ে এটি যায়। এই সমস্ত অংশগুলো কীভাবে একসাথে কাজ করে তা বুঝতে পারলে পারফরম্যান্স সমস্যা, ডিস্ক ত্রুটি, ফাইল করাপশন বার্তা, অথবা ক্লাস্টারের আকার বা প্রতিটি ব্যবহারের জন্য ফাইল সিস্টেম বেছে নেওয়ার মতো ডিজাইন সংক্রান্ত সিদ্ধান্তগুলো আরও ভালোভাবে বোঝা যায়। বিনামূল্যে ক্লাউড স্টোরেজ পরিষেবা প্রয়োজন অনুযায়ী।