> For the complete documentation index, see [llms.txt](https://sh.howtocode.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sh.howtocode.dev/3.0.0.part3intro/3.3.0.storage-media/3.3.1.basic-concept.md).

# লিনাক্সের চোখে স্টোরেজ ডিভাইস

আপনি যদি `ls -l /dev/` কমান্ডটি দেন তাহলে দীর্ঘ ডিভাইসের লিস্ট দেখতে পাবেন। এখানে পাবেন সকলরকম ডিভাইস। ডিভাইসগুলো কম্পিউটার বিভিন্নভাবে ব্যবহার করে। আমাদের বুঝতে নিশ্চয়ই অসুবিধা হয় না যে স্টোরেজ ডিভাইস কম্পিউটার কী কাজে ব্যবহার করে। নিশ্চয়ই তথ্য সংরক্ষণ ও তার থেকে পড়ার জন্য। লিনাক্সে কোনো স্টোরেজ ডিভাইস যুক্ত হলে সে কয়েকটি তথ্য সেটি সম্পর্কে জানতে পারে। ডিভাইসটির নাম, লেবেল, সেটির ফরম্যাট, uuid ইত্যাদি। এগুলো ব্যবহার করে লিনাক্স ডিভাইসটি নিয়ন্ত্রণ করতে পারে।

একটা জিনিস মাথায় রাখা দরকার যে একটা ডিভাইসে একাধিক পার্টিশন থাকলে সেগুলোকেও ডিভাইস হিসেবে দেখায়। আমাদের কাজের সময় আমরা সাধারণত ডিভাইসকে নাম দিয়ে প্রকাশ করি। এই নামটা সিস্টেম দেয়। এই নামকরনের পদ্ধতি খুব সহজ। যেমন আপনার প্রধান হার্ডডিস্ক বা স্টোরেজ ডিভাইস হল sda। এর প্রথম পার্টিশন যেটা উইন্ডোজে হয় সি ড্রাইভ সেটা হবে sda1। এভাবে পরপর পার্টিশনের নাম হবে। এরপর দ্বিতীয় ডিভাইস যুক্ত করলে, তা হতে পারে আরেকটা হার্ডডিস্ক বা পেনড্রাইভ, সেটি হবে sdb এবং তার পার্টিশনগুলো sdb1, sdb2... এভাবে। আবার সিডি/ডিভিডি অর্থাৎ অপটিক্যাল ড্রাইভগুলো sr0, sr1 এভাবে নাম দেওয়া হয়।

এখন প্রশ্ন হচ্ছে, ডিভাইসের তথ্য নিয়ন্ত্রণের জন্য লিনাক্সকে কী করতে হয়? বা কী করলে আসলে আমরা ওই তথ্য ব্যবহার করতে পারি? আমরা ইত্যমধ্যে জেনেছি যে লিনাক্সের ফাইলসিস্টেম শুরু হয় রুট থেকে এবং ক্রমে শাখা-প্রশাখা বিস্তার করে। আমরা স্টোরেজ ডিভাইসের তথ্য নিয়ন্ত্রণ করতে চাইলে তাকে এই ফাইলসিস্টেমের কোথাও জুড়ে দিতে হবে। ঘাবড়াবার কিছু নেই। রোজ রোজ আপনাকে এটি করতে হয় না। আপনি পেনড্রাইভ বা সিডি ঢোকালে লিনাক্স নিজেই এটা করে নেয়। ফাইলসিস্টেমে স্টোরেজ ডিভাইস জুড়ে দেয়ার এই প্রক্রিয়াকে মাউন্ট (mount) করা বলে। এটা কীভাবে কাজ করে তা দেখতে আমরা /etc/fstab ফাইলটিতে চোখ বোলাবো। এটির কাজ হচ্ছে কম্পিউটার চালু হওয়ার সময় কার্নেলকে জানিয়ে দেওয়া কোন কোন ডিভাইস মাউন্ট করতে হবে। বলাবাহুল্য, আমাদের fstab ফাইল সবার একরকম হবে না।

```
me@howtocode-pc:~$ less /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda6 during installation
UUID=5eef4c8c-6f5b-408b-bae6-9de6162611af /               ext4    errors=remount-ro 0       1
# /home was on /dev/sda2 during installation
UUID=e42a0385-8d90-473b-907c-ce458c821739 /home           ext4    defaults        0       2
# swap was on /dev/sda3 during installation
UUID=6fa0c755-8325-4740-9cc9-5e3de831b65d none            swap    sw              0       0
/etc/fstab (END)
```

ফাইলটির যেসব লাইন # দিয়ে শুরু হয়েছে সেগুলি কমেন্ট। অর্থাৎ কম্পিউটার ওগুলো আমলে আনে না। ইউজারের জন্য বিভিন্ন তথ্য দেওয়া থাকে। আমরা এই অংশটুকু বিবেচনায় আনি:

```
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda6 during installation
UUID=5eef4c8c-6f5b-408b-bae6-9de6162611af /               ext4    errors=remount-ro 0       1
```

প্রথম লাইনে fstab টেবিলের কলামগুলোর নাম দেওয়া আছে যেন আমরা সহজে বুঝতে পারি। তারপর আরেকটি কমেন্ট। যেখানে বলা আছে পরবর্তী লাইনে কী করা হচ্ছে। তারপর মূল এন্ট্রিটি। এবার এগুলোর অর্থ জানা যাক:

| কলাম        | মান                                       | অর্থ                                                                                                                         |
| ----------- | ----------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| file system | UUID=5eef4c8c-6f5b-408b-bae6-9de6162611af | ডিভাইসের নাম বা uuid দেওয়া থাকে।                                                                                             |
| mount point | /                                         | ফাইলসিস্টেমের কোনখানে মাউন্ট করবে অর্থাৎ মাউন্ট পয়েন্ট। এখানে ছিল ‘/’ অর্থাৎ এই ড্রাইভটা রুটে মাউন্ট হবে।                    |
| type        | ext4                                      | পার্টিশনের ফরম্যাট, যেমন এটি ext4 পার্টিশন।                                                                                  |
| options     | errors=remount-ro                         | মাউন্টের বিভিন্ন অপশন, থাকতেও পারে, নাও পারে।                                                                                |
| dump        | 0                                         | ডাম্প একটি ব্যাকআপ ইউটিলিটি। এটি চালু না বন্ধ থাকবে তা বলা থাকে।  1 হলে চালু, 0 হলে বন্ধ।                                    |
| pass        | 1                                         | fsck দিয়ে ফাইল চেকের নির্দেশনা। 0 হলে চেক করবে না।  1 দিলে সবার প্রথমে এটি চেক করবে।  2 দেওয়া পার্টিশনগুলো 1 এর পর চেক করবে। |

একইভাবে দেখেছি sda2 পার্টিশনটি /home/ এ মাউন্ট করা হয়েছে। অর্থাৎ /home/ এবং এর ভিতরে থাকা ফোল্ডার ও ফাইলগুলো sda2 পার্টিশনে আছে।

একইভাবে। ফাইল সিস্টেম ঘেকে কোনো ডিভাইস বিযুক্ত করাকে বলে আনমাউন্ট (unmount) করা।

ডিভাইস আনমাউন্ট করা হলেও তাতে কিন্তু পাওয়ার সাপ্লাই থাকে। এপর্যায়ে ডিভাইসের ডাটাতে এক্সেস থাকে না। ফলে তার ম্যানিপুলেশনের সুবিধা তৈরী হয়। একটি ডিভাইসের সকল পার্টিশন আনমাউন্টেড হলে তবেই সেটার পার্টিশন টেবিল নিয়ে নাড়াচাড়া করা যায়।

আনমাউন্ট করা ডিভাইসে পাওয়ার সাপ্লাই বন্ধ করা তা সে ডিভাইসটি খুলে নেন বা ইজেক্ট কমান্ড দিয়েই করেন, তাকে ইজেক্ট করা বলে।
