একটি বাঁধাই মাউন্ট কি?


325

"বাইন্ড মাউন্ট" কী? আমি কীভাবে এটি তৈরি করব? এটা কি জন্য ভাল?

আমাকে কোনও কিছুর জন্য একটি বাইন্ড মাউন্ট ব্যবহার করতে বলা হয়েছে, তবে এটি কী বা কীভাবে এটি ব্যবহার করবেন তা আমি বুঝতে পারি না।


2
মাউন্টগুলি এবং সিমলিংকের মধ্যে দরকারী বিকল্প স্পষ্টতা: কোওরা.com/…
চার্লি পার্কার

উত্তর:


564

একটি বাঁধাই মাউন্ট কি?

একটি বাঁধাই মাউন্ট হ'ল ডিরেক্টরি গাছের একটি বিকল্প দৃশ্য। ধ্রুপদীভাবে, মাউন্টিং একটি ডিরেক্টরি গাছ হিসাবে স্টোরেজ ডিভাইসের একটি দৃশ্য তৈরি করে। পরিবর্তে একটি বাইন্ড মাউন্ট একটি বিদ্যমান ডিরেক্টরি ট্রি গ্রহণ করে এবং এটি একটি অন্য বিন্দুতে প্রতিলিপি করে। বাইন্ড মাউন্টে ডিরেক্টরি এবং ফাইলগুলি মূল হিসাবে একই। দুটি দৃষ্টিভঙ্গি একই ডেটা দেখায় বলে একদিকে যে কোনও পরিবর্তন তত্ক্ষণাত অন্যদিকে প্রতিফলিত হয়।

উদাহরণস্বরূপ, লিনাক্স কমান্ড জারি করার পরে

mount --bind /some/where /else/where

ডিরেক্টরি /some/whereএবং /else/whereএকই বিষয়বস্তু আছে।

একটি হার্ড লিঙ্ক বা প্রতীকী লিঙ্কের বিপরীতে, একটি বাইন্ড মাউন্ট ফাইল সিস্টেমে কী সঞ্চিত তা প্রভাবিত করে না। এটি লাইভ সিস্টেমের সম্পত্তি।

আমি কীভাবে একটি বাইন্ড মাউন্ট তৈরি করব?

bindfs

bindfsফাইল-সিস্টেমটি হয় ফিউজ ফাইলসিস্টেম যা ডিরেক্টরি গাছের একটি দৃশ্য তৈরি করে। উদাহরণস্বরূপ, কমান্ড

bindfs /some/where /else/where

তোলে /else/whereমাউন্ট-পয়েন্ট যার অধীনে বিষয়বস্তু /some/whereদৃশ্যমান।

যেহেতু bindfs একটি পৃথক ফাইল সিস্টেম, তাই ফাইলগুলি /some/where/fooএবং /else/where/fooঅ্যাপ্লিকেশনগুলিতে পৃথক ফাইল হিসাবে উপস্থিত হয় (বাইন্ডস ফাইল সিস্টেমের নিজস্ব st_devমান রয়েছে)। একদিকে যে কোনও পরিবর্তন অন্যদিকে "ম্যাজিকালি" প্রতিবিম্বিত হয় তবে ফাইলগুলি একই রকমের বিষয়টি কেবল তখনই স্পষ্ট হয় যখন কেউ জানে যে বাইন্ডফ কীভাবে কাজ করে।

Bindfs এর মাউন্ট পয়েন্টগুলির কোন জ্ঞান নেই, সুতরাং যদি এখানে মাউন্ট পয়েন্ট থাকে তবে এটি নীচে /some/whereকেবল অন্য ডিরেক্টরি হিসাবে প্রদর্শিত হয় /else/where। মাউন্ট বা মাউন্টের মাউন্টের মাউন্ট নীচে সংশ্লিষ্ট ডিরেক্টরি পরিবর্তন হিসাবে /some/whereপ্রদর্শিত হবে /else/where

বাইন্ডফগুলি কিছু ফাইল মেটাডেটা পরিবর্তন করতে পারে: এটি ফাইলগুলির জন্য জাল অনুমতি এবং মালিকানা প্রদর্শন করতে পারে। বিশদগুলির জন্য ম্যানুয়ালটি দেখুন এবং উদাহরণগুলির জন্য নীচে দেখুন।

একটি bindfs ফাইল সিস্টেম একটি নন-রুট ব্যবহারকারী হিসাবে মাউন্ট করা যেতে পারে, আপনি কেবল FUSE ফাইল সিস্টেমগুলি মাউন্ট করার অধিকার প্রয়োজন। আপনার বিতরণের উপর নির্ভর করে এর জন্য fuseগোষ্ঠীতে থাকা প্রয়োজন বা সমস্ত ব্যবহারকারীর জন্য মঞ্জুরিপ্রাপ্ত হতে পারে। FUSE ফাইল সিস্টেমটি আনমাউন্ট fusermount -uকরার জন্য umount, উদাহরণস্বরূপ পরিবর্তে ব্যবহার করুন

fusermount -u /else/where

nullfs

ফ্রিবিএসডি nullfsফাইল সিস্টেম সরবরাহ করে যা একটি ফাইল সিস্টেমের একটি বিকল্প দৃষ্টিভঙ্গি তৈরি করে। নিম্নলিখিত দুটি কমান্ড সমতুল্য:

mount -t nullfs /some/where /else/where
mount_nullfs /some/where /else/where

কমান্ড জারি করার পরে, /else/whereএকটি মাউন্ট পয়েন্ট হয়ে যায় যেখানে এর সামগ্রীগুলি /some/whereদৃশ্যমান হয়।

যেহেতু নালফগুলি একটি পৃথক ফাইল সিস্টেম, তাই ফাইলগুলি /some/where/fooএবং /else/where/fooঅ্যাপ্লিকেশনগুলিতে পৃথক ফাইল হিসাবে প্রদর্শিত হয় (নালফস ফাইল সিস্টেমের নিজস্ব st_devমান রয়েছে)। একদিকে যে কোনও পরিবর্তন অন্যদিকে "ম্যাজিকালি" প্রতিবিম্বিত হয়, তবে ফাইলগুলি একই রকমের বিষয়টি কেবল তখনই স্পষ্ট হয় যখন কেউ জানে যে নালফ কীভাবে কাজ করে।

FUSE bindfs এর বিপরীতে, যা ডিরেক্টরি গাছের স্তরে কাজ করে, ফ্রিবিএসডি'র নালফগুলি কার্নেলের আরও গভীরভাবে কাজ করে, তাই মাউন্ট পয়েন্টগুলি /else/whereদৃশ্যমান হয় না: কেবল সেই গাছ যা একই মাউন্ট পয়েন্টের অংশ হিসাবে /some/whereনীচে প্রতিফলিত হয় /else/where

নালফস ফাইল সিস্টেমটি অন্যান্য বিএসডি ভেরিয়েন্টের (ওএস এক্স, ওপেনবিএসডি, নেটবিএসডি) অধীনে ব্যবহারযোগ্য হতে পারে তবে এটি ডিফল্ট সিস্টেমের অংশ হিসাবে সংকলিত হয় না।

লিনাক্স বাইন্ড মাউন্ট

লিনাক্সের অধীনে, বাইন্ড মাউন্টগুলি কার্নেল বৈশিষ্ট্য হিসাবে উপলব্ধ। কমান্ড লাইন অপশন বা মাউন্ট বিকল্পটি mountপাস করে আপনি --bindকমান্ড দিয়ে একটি তৈরি করতে পারেন bind। নিম্নলিখিত দুটি কমান্ড সমতুল্য:

mount --bind /some/where /else/where
mount -o bind /some/where /else/where

এখানে, "ডিভাইস" /some/whereকোনও ডিস্ক বিভাজন যেমন কোনও অন ডিস্ক ফাইল সিস্টেমের ক্ষেত্রে নয়, তবে একটি বিদ্যমান ডিরেক্টরি রয়েছে। মাউন্ট পয়েন্টটি /else/whereঅবশ্যই যথারীতি একটি বিদ্যমান ডিরেক্টরি হতে হবে। নোট করুন যে কোনও ফাইল সিস্টেমের ধরণটি কোনওভাবেই নির্দিষ্ট করা হয়নি: বাইন্ড মাউন্ট তৈরি করা কোনও ফাইল সিস্টেম ড্রাইভারের সাথে জড়িত নয়, এটি মূল মাউন্ট থেকে কার্নেল ডেটা স্ট্রাকচার অনুলিপি করে।

mount --bindঅ-ডিরেক্টরিতে অ-ডিরেক্টরিতে মাউন্ট করা সমর্থন করে: /some/whereএকটি নিয়মিত ফাইল হতে পারে (এক্ষেত্রেও নিয়মিত ফাইল হওয়া /else/whereদরকার)।

একটি লিনাক্স বাইন্ড মাউন্ট মূল থেকে মূলত পৃথক পৃথক। কমান্ড df -T /else/whereএকই ডিভাইস এবং একই ফাইল সিস্টেমের ধরণটি দেখায় df -T /some/where। ফাইলগুলি /some/where/fooএবং /else/where/fooপার্থক্যহীন, যেন সেগুলি হার্ড লিঙ্ক। এটি আনমাউন্ট করা সম্ভব /some/where, যার ক্ষেত্রে /else/whereমাউন্ট থাকে।

পুরানো কার্নেলগুলি দিয়ে (আমি ঠিক কখন জানি না, আমি প্রায় 3.x অবধি মনে করি), বাইন্ড মাউন্টগুলি আসল থেকে সত্যই পৃথক হতে পারে। সাম্প্রতিক কার্নেলগুলি পিআইডি / মাউন্টিনফোর মাধ্যমে বাঁধার মাউন্টগুলি ট্র্যাক করে এবং তথ্যটি প্রকাশ করে, যা findmntবাইন্ড মাউন্টকে যেমন নির্দেশ করতে দেয়

আপনি আবদ্ধ করতে পারেন মাউন্ট এন্ট্রি /etc/fstab। আপনার পছন্দসই অন্যান্য বিকল্পগুলির সাথে বিকল্পগুলিতে কেবল bind(বা rbindইত্যাদি) অন্তর্ভুক্ত করুন। "ডিভাইস" হ'ল বিদ্যমান গাছ। ফাইল সিস্টেম কলামে এটি থাকতে পারে noneবা bind(এটি উপেক্ষা করা হবে, তবে একটি ফাইল সিস্টেমের নাম ব্যবহার বিভ্রান্তিকর হবে)। উদাহরণ স্বরূপ:

/some/where /readonly/view none bind,ro

যদি মাউন্ট পয়েন্টগুলি নীচে থাকে তবে /some/whereতাদের বিষয়বস্তুগুলি নীচে দৃশ্যমান নয় /else/where। পরিবর্তে bind, আপনি ব্যবহার করতে পারেন rbind, নীচে মাউন্ট পয়েন্ট প্রতিলিপি /some/where। উদাহরণস্বরূপ, যদি /some/where/mntমাউন্ট পয়েন্ট হয়

mount --rbind /some/where /else/where

সমতুল্য

mount --bind /some/where /else/where
mount --bind /some/where/mnt /else/where/mnt

তদ্ব্যতীত , লিনাক্স মাউন্টগুলিকে ভাগ করে নেওয়া , ক্রীতদাস , প্রাইভেট বা অনিবন্ধযোগ্য হিসাবে ঘোষিত করার অনুমতি দেয় । এটি যে মাউন্ট অপারেশনটি একটি বাঁধাইয়ের মাউন্টের নীচে প্রতিফলিত হয় যা মাউন্ট পয়েন্টটিকে প্রতিলিপি দেয় তা প্রভাবিত করে। আরও বিশদের জন্য, কার্নেল ডকুমেন্টেশন দেখুন

লিনাক্স মাউন্টগুলি সরানোর একটি উপায়ও সরবরাহ করে: যেখানে --bindঅনুলিপিগুলি --moveএকটি মাউন্ট পয়েন্টকে সরায়।

দুটি বাইন্ড-মাউন্টড ডিরেক্টরিতে বিভিন্ন মাউন্ট অপশন থাকা সম্ভব। একটি গণ্ডগোল রয়েছে, তবে: বাঁধাই মাউন্ট তৈরি করা এবং মাউন্ট অপশনগুলি নির্ধারণ করা পারমাণবিকভাবে করা যায় না, তাদের দুটি ক্রমাগত ক্রিয়াকলাপ হতে হবে। (পুরানো কার্নেলগুলি এটির অনুমতি দেয় নি)) উদাহরণস্বরূপ, নিম্নলিখিত কমান্ডগুলি কেবল পঠনযোগ্য দৃশ্য তৈরি করে, তবে সময়ের একটি ছোট উইন্ডো থাকে যার সময় /else/whereপঠন-লিখন হয়:

mount --bind /some/where /else/where
mount -o remount,ro,bind /else/where

আমি কাজ করতে বাঁধা মাউন্ট পেতে পারি না!

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

ব্যবহারের ক্ষেত্রে

কেবল পঠনযোগ্য দর্শন

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

বাইন্ডফ সহ:

bindfs -r /some/where /mnt/readonly

লিনাক্স সহ, সহজ উপায়:

mount --bind /some/where /mnt/readonly
mount -o remount,ro,bind /mnt/readonly

এটি /mnt/readonlyপড়ার-লেখার সময়কালের একটি স্বল্প বিরতি ছেড়ে দেয় । এটি যদি সুরক্ষা উদ্বেগের বিষয় থাকে তবে প্রথমে একটি ডিরেক্টরিতে বিন্দু মাউন্ট তৈরি করুন যা কেবলমাত্র রুট অ্যাক্সেস করতে পারে, কেবল এটি কেবল পঠনযোগ্য করে তুলুন, তারপরে এটিকে সর্বজনীন মাউন্ট পয়েন্টে সরান। নীচের স্নিপেটে নোট করুন যে এটি গুরুত্বপূর্ণ /root/private(মাউন্ট পয়েন্টের উপরে ডিরেক্টরিটি) ব্যক্তিগত; /root/private/mntউপরের মূল অনুমতিগুলি অপ্রাসঙ্গিক কারণ এগুলি মাউন্ট পয়েন্টের আড়ালে লুকানো রয়েছে।

mkdir -p /root/private/mnt
chmod 700 /root/private
mount --bind /some/where /root/private/mnt
mount -o remount,ro,bind /root/private/mnt
mount --move /root/private/mnt /mnt/readonly

রিম্যাপিং ব্যবহারকারী এবং গোষ্ঠী

ফাইল সিস্টেম ব্যবহারকারী এবং গোষ্ঠীগুলিকে তাদের সংখ্যাযুক্ত আইডি দ্বারা রেকর্ড করে। কখনও কখনও আপনি একাধিক সিস্টেমের সাথে সমাপ্ত হন যা একই ব্যক্তিকে বিভিন্ন ব্যবহারকারী আইডি দেয়। এটি নেটওয়ার্ক অ্যাক্সেস নিয়ে কোনও সমস্যা নয় তবে আপনি যখন ডিস্কে একটি সিস্টেম থেকে অন্য সিস্টেমে ডেটা নিয়ে যান তখন এটি ব্যবহারকারী আইডিগুলিকে অর্থহীন করে তোলে। মনে করুন যে অ্যালিসের ইউজার আইডি 1000 এবং ববটির ইউজার আইডি 1001 রয়েছে এমন কোনও সিস্টেমে আপনি একটি মাল্টি-ইউজার ফাইল সিস্টেম (যেমন ext4, বিটিআরএফএস, জেডএফএস, ইউএফএস,…) দিয়ে একটি ডিস্ক তৈরি করেছেন এবং আপনি সেই ডিস্কটি অ্যাক্সেসযোগ্য করতে চান একটি সিস্টেম যেখানে অ্যালিসের ব্যবহারকারী আইডি 1001 এবং ববটির ব্যবহারকারী ID 1000 রয়েছে you আপনি যদি ডিস্কটি সরাসরি মাউন্ট করেন তবে অ্যালিসের ফাইলগুলি ববের মালিকানাধীন প্রদর্শিত হবে (কারণ ব্যবহারকারী আইডি 1001) এবং ববের ফাইলগুলি এলিসের মালিকানাধীন প্রদর্শিত হবে (কারণ ব্যবহারকারীর আইডি 1000)।

ব্যবহারকারীর আইডি পুনরায় তৈরি করতে আপনি বাইন্ডফ ব্যবহার করতে পারেন। প্রথমে একটি ব্যক্তিগত ডিরেক্টরিতে ডিস্ক পার্টিশনটি মাউন্ট করুন, যেখানে কেবলমাত্র রুট এটি অ্যাক্সেস করতে পারে। তারপরে ইউজার আইডি এবং গ্রুপ আইডি রিম্যাপিং সহ অ্যালিস এবং বব এর ব্যবহারকারী আইডি এবং গোষ্ঠী আইডি সজ্জিত করে একটি সর্বজনীন এলাকায় একটি বিন্দু দর্শন তৈরি করুন।

mkdir -p /root/private/alice_disk /media/alice_disk
chmod 700 /root/private
mount /dev/sdb1 /root/private/alice_disk
bindfs --map=1000/1001:1001/1000:@1000/1001:@1001/1000 /root/private/alice_disk /media/alice_disk

নন-বুট করা সিস্টেমের ব্যবহারকারীর হোম ফোল্ডারে কোনও ব্যক্তি কীভাবে অনুমতি সহ ফাইলগুলি অ্যাক্সেস করতে পারে দেখুন দেখুন ? এবং মাউন্ট --bind অন্য ব্যবহারকারী হিসাবে নিজেকে অন্য উদাহরণ হিসাবে

জেল বা পাত্রে মাউন্ট করা

সিস্টেমের ডিরেক্টরি গাছের একটি সাবট্রিতে একটি ক্রুট জেল বা ধারক একটি প্রক্রিয়া চালায়। এটি সীমাবদ্ধ অ্যাক্সেস সহ একটি প্রোগ্রাম চালনাতে দরকারী হতে পারে, যেমন কেবল নিজস্ব ফাইল এবং এটি যে ফাইলগুলি সরবরাহ করে সেগুলিতে অ্যাক্সেস সহ একটি নেটওয়ার্ক সার্ভার চালান, তবে একই কম্পিউটারে সঞ্চিত অন্যান্য ডেটা নয়)। ক্রুটের একটি সীমাবদ্ধতা হ'ল প্রোগ্রামটি একটি সাবট্রির মধ্যে সীমাবদ্ধ: এটি স্বাধীন সাবট্রিতে অ্যাক্সেস করতে পারে না। বাঁধাই মাউন্টগুলি সেই মূল গাছটিতে অন্যান্য সাবট্রিজগুলি গ্রাফ্ট করার অনুমতি দেয়। এটি তাদের লিনাক্সের অধীনে ধারকগুলির ব্যবহারিক ব্যবহারের জন্য মৌলিক করে তোলে।

উদাহরণস্বরূপ, ধরুন যে কোনও মেশিন একটি পরিষেবা চালায় /usr/sbin/somethingdযা কেবলমাত্র এর অধীনে ডেটা অ্যাক্সেস করা উচিত /var/lib/something। ক্ষুদ্রতম ডিরেক্টরি ট্রিটিতে এই দুটি ফাইল রয়েছে root কীভাবে পরিষেবাটি সীমাবদ্ধ থাকবে? একটি সম্ভাবনা হ'ল পরিষেবাটির /usr/sbin/somethingdঅধীনে থাকা সমস্ত ফাইলের (কমপক্ষে এবং বেশ কয়েকটি ভাগ করে নেওয়া লাইব্রেরি) হার্ড লিঙ্ক তৈরি করা /var/lib/something। তবে এটি জটিল (জটিল লিঙ্কগুলি যখনই কোনও ফাইল আপগ্রেড করা হয় তখন আপডেট করা প্রয়োজন), এবং যদি বিভিন্ন ফাইল সিস্টেমে থাকে /var/lib/somethingএবং কাজ করে না /usr। আরও ভাল সমাধান হ'ল একটি অ্যাডহক রুট তৈরি করা এবং মাউন্টগুলি ব্যবহার করে এটি পপুলেট করুন:

mkdir /run/something
cd /run/something
mkdir -p etc/something lib usr/lib usr/sbin var/lib/something
mount --bind /etc/something etc/something
mount --bind /lib lib
mount --bind /usr/lib usr/lib
mount --bind /usr/sbin usr/sbin
mount --bind /var/lib/something var/lib/something
mount -o remount,ro,bind etc/something
mount -o remount,ro,bind lib
mount -o remount,ro,bind usr/lib
mount -o remount,ro,bind usr/sbin
chroot . /usr/sbin/somethingd &

লিনাক্সের মাউন্ট নেমস্পেসগুলি ক্রুটকে সাধারণীকরণ করে। বাইন্ড মাউন্টগুলি হ'ল নামস্থান কীভাবে নমনীয় উপায়ে পপুলেশন করা যায়। উদাহরণস্বরূপ একই ফাইলনামের জন্য একটি প্রক্রিয়া তৈরি করা দেখুন aking

অন্যরকম বিতরণ চলছে

ক্রুটগুলির আরেকটি ব্যবহার হ'ল একটি ডিরেক্টরিতে একটি ভিন্ন বিতরণ ইনস্টল করা এবং এটি থেকে প্রোগ্রামগুলি চালানো, এমনকি যখন তাদের হার্ড-কোডেড পাথগুলিতে ফাইলগুলির প্রয়োজন হয় যা বেস সিস্টেমে উপস্থিত থাকে না বা পৃথক সামগ্রী থাকে। উদাহরণস্বরূপ, 64৪-বিট সিস্টেমে একটি 32-বিট বিতরণ ইনস্টল করা যা মিশ্র প্যাকেজগুলি সমর্থন করে না, সামঞ্জস্যতা পরীক্ষা করতে কোনও বিতরণ বা অন্যান্য বিতরণের পুরানো প্রকাশ ইনস্টল করতে, পরীক্ষার জন্য নতুন রিলিজ ইনস্টল করতে স্থিতিশীল বেস সিস্টেম বজায় রাখার সময় সর্বশেষতম বৈশিষ্ট্য ইত্যাদি দেখুন 64৪-বিট দেবিয়ান / উবুন্টুতে আমি কীভাবে 32-বিট প্রোগ্রাম চালাব? দেবিয়ান / উবুন্টুতে উদাহরণের জন্য।

মনে করুন যে আপনার ডিস্ট্রিবিউশনের সর্বশেষ প্যাকেজগুলির একটি ডিরেক্টরি ডিরেক্টরিতে আছে /f/unstableসেখানে আপনি সেই ডিরেক্টরিটিতে স্যুইচ করে প্রোগ্রাম পরিচালনা করেন chroot /f/unstable। এই ইনস্টলেশনগুলি থেকে হোম ডিরেক্টরিগুলি উপলভ্য করতে, তাদের chroot এ বাঁধুন:

mount --bind /home /f/unstable/home

প্রোগ্রামটি শ্রুত স্বয়ংক্রিয়ভাবে এটি করে।

একটি মাউন্ট পয়েন্ট পিছনে লুকানো ফাইল অ্যাক্সেস

আপনি যখন কোনও ডিরেক্টরিতে একটি ফাইল সিস্টেম মাউন্ট করেন, তখন এটি ডিরেক্টরিটির পিছনে কী লুকায় ides ডিরেক্টরিটি আনমাউন্ট না হওয়া পর্যন্ত সেই ডিরেক্টরিতে থাকা ফাইলগুলি অ্যাক্সেসযোগ্য হয়ে যায়। যেহেতু বিএসডি নালফস এবং লিনাক্স বাইন্ড মাউন্টগুলি মাউন্ট পরিকাঠামোর চেয়ে নিম্ন স্তরে কাজ করে, একটি নালফ মাউন্ট বা একটি ফাইল সিস্টেমের একটি বাইন্ড মাউন্ট সেই ডিরেক্টরিগুলি উন্মোচন করে যা মূল সাবমেরেন্টের আড়ালে লুকানো ছিল।

উদাহরণস্বরূপ, ধরুন যে আপনি একটি tmpfs ফাইল সিস্টেম মাউন্ট করেছেন /tmp/tmpTmpfs ফাইল সিস্টেমটি তৈরি করার সময় যদি এখানে ফাইল থাকত তবে এই ফাইলগুলি এখনও অবধি কার্যকরভাবে অ্যাক্সেসযোগ্য তবে ডিস্কের স্থান গ্রহণ করতে পারে। চালান

mount --bind / /mnt

(লিনাক্স) বা

mount -t nullfs / /mnt

(ফ্রিবিএসডি) এ মূল ফাইল সিস্টেমের একটি ভিউ তৈরি করতে /mnt/mnt/tmpমূল ফাইল সিস্টেম থেকে ডিরেক্টরিটি হ'ল ডিরেক্টরি ।

এনএফএস বিভিন্ন পথে রফতানি করে

কিছু এনএফএস সার্ভার (যেমন এনএফএসভি 4 এর আগে লিনাক্স কার্নেল এনএফএস সার্ভার) সর্বদা প্রকৃত ডিরেক্টরি অবস্থানের বিজ্ঞাপন দেয় যখন তারা কোনও ডিরেক্টরি রফতানি করে। এটি হ'ল, যখন কোনও ক্লায়েন্ট অনুরোধ করে server:/requested/location, সার্ভার লোকেশনতে গাছটিকে পরিবেশন করে /requested/location। কখনও কখনও ক্লায়েন্টদের অনুরোধ করার অনুমতি দেওয়া বাঞ্ছনীয় /request/locationতবে প্রকৃতপক্ষে ফাইলগুলি পরিবেশন করা /actual/location। যদি আপনার এনএফএস সার্ভার কোনও বিকল্প অবস্থান পরিবেশন করা সমর্থন করে না, তবে আপনি প্রত্যাশিত অনুরোধের জন্য একটি বাইন্ড মাউন্ট তৈরি করতে পারেন, যেমন

/requested/location *.localdomain(rw,async)

ইন /etc/exportsএবং নিম্নলিখিতটিতে /etc/fstab:

/actual/location /requested/location bind bind

প্রতীকী লিঙ্কগুলির বিকল্প

কখনও কখনও আপনি কোনও ফাইলকে /some/where/is/my/fileনীচে প্রদর্শিত করতে প্রতীকী লিঙ্ক তৈরি করতে চাইবেন /else/whereতবে যে অ্যাপ্লিকেশনটি ব্যবহার fileকরে তা প্রতীকী লিঙ্কগুলি এবং প্রত্যাখাতকে প্রসারিত করে /some/where/is/my/file। একটি বাইন্ড মাউন্ট এটিকে ঘিরে কাজ করতে পারে: বাঁধাই-মাউন্ট /some/where/is/myকরুন /else/where/is/myএবং তারপরে নীচে নয়, অধীনে realpathথাকবে বলে প্রতিবেদন করবে ।/else/where/is/my/file/else/where/some/where

বাঁধার মাউন্টগুলির পার্শ্ব প্রতিক্রিয়া

পুনরাবৃত্ত ডিরেক্টরি ডিরেক্টরি traversals

আপনি যদি বাইন্ড মাউন্টগুলি ব্যবহার করেন তবে আপনার অ্যাপ্লিকেশনগুলির যত্ন নিতে হবে যা ফাইল সিস্টেম ট্রিটিকে পুনরাবৃত্তভাবে অতিক্রম করে, যেমন ব্যাকআপ এবং সূচীকরণ (যেমন একটি সনাক্ত ডাটাবেস তৈরি করতে )।

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

Traversals যে ফাইলসিস্টেম গণ্ডি থামবে (যেমন find -xdev, rsync -x, du -x, ...) স্বয়ংক্রিয়ভাবে যখন তারা কোনো bindfs সম্মুখীন হন বা nullfs মাউন্ট পয়েন্ট বন্ধ কারণ যে মাউন্ট পয়েন্ট একটি ভিন্ন ফাইল সিস্টেম বার করে দেব। লিনাক্স বাইন্ড মাউন্টগুলির সাহায্যে পরিস্থিতিটি আরও জটিল:

বাইন্ড মাউন্টগুলি ছাড়িয়ে যাওয়া

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

দৃশ্যমান ফাইলগুলি ফিল্টার করুন

  • clamfs - ফাইলগুলি পড়ার পরে একটি ভাইরাস স্ক্যানারের মাধ্যমে ফাইলগুলি চালান
  • ফিল্টারফ - একটি ফাইল সিস্টেমের অংশগুলি লুকান
  • রফস - কেবল পঠনযোগ্য দর্শন। এর মতো bindfs -r, আরও কিছুটা হালকা ওজন।
  • ইউনিয়ন মাউন্ট করে - একক ডিরেক্টরি অধীনে একাধিক ফাইল সিস্টেম (যার নাম শাখা ) উপস্থাপন করে : যদি tree1এতে থাকে fooএবং tree2থাকে barতবে তাদের ইউনিয়ন দৃশ্যে উভয় fooএবং থাকে bar। নতুন ফাইলগুলি একটি নির্দিষ্ট শাখায় বা আরও জটিল বিধি অনুসারে নির্বাচিত একটি শাখায় লিখিত হয়। এই ধারণার বেশ কয়েকটি বাস্তবায়ন রয়েছে যার মধ্যে রয়েছে:

ফাইলের নাম এবং মেটাডেটা সংশোধন করুন

  • ciopfs - কেস-সংবেদনশীল ফাইলের নাম (উইন্ডোজ ফাইল সিস্টেমগুলি মাউন্ট করতে কার্যকর হতে পারে)
  • কনমভিএফস - অক্ষর সেটগুলির মধ্যে ফাইলের নাম রূপান্তর করুন ( উদাহরণস্বরূপ )
  • পিক্সোভল - ইউনিক্স ফাইলের নাম এবং অন্যান্য মেটাডেটা (অনুমতি, মালিকানা,…) ভিএফএটি ( উদাহরণস্বরূপ ) হিসাবে আরও সীমাবদ্ধ ফাইল সিস্টেমে সংরক্ষণ করুন

পরিবর্তিত ফাইল সামগ্রী দেখুন

যেভাবে সামগ্রী সংরক্ষণ করা হয়েছে তা সংশোধন করুন



1
কি করে mount --bind /dir1 /dir1? উত্সের উত্স এবং লক্ষ্য পৃথক যেখানে ক্ষেত্রে এটি কীভাবে আলাদা?
চিহ্নিত করুন

আমি লিনাক্স 5.0 ব্যবহার করে / proc / স্ব / মাউন্টিনফোতে কোনও রেকর্ড দেখতে পাইনি। কার্নেল আমাকে জানায় না এটি বাঁধার মাউন্ট কিনা। এবং একটি প্রক্রিয়া সহজেই ক্রুটকে ভেঙে ফেলতে পারে, বিচ্ছিন্নতা মাউন্ট নেমস্পেসের মাধ্যমে করতে হবে।
19 薯条 德里克

@ 炸鱼 薯条 德里克 আমি লিঙ্কিত প্রশ্নটি unix.stackexchange.com/questions/295525/… ঠিকানা মনে করি /proc/self/mountinfo। ক্রুট হিসাবে, এটি বিচ্ছিন্নতার জন্য ব্যবহার করা যেতে পারে, তবে এটি নিজস্বভাবে নয়। আপনার যদিও মাউন্ট নেমস্পেসের প্রয়োজন হবে না : ফাইল সিস্টেমের নেমস্পেস অংশের জন্য ক্রুট যথেষ্ট। আপনার নিশ্চিত করতে হবে যে ক্রুটের কোনও প্রক্রিয়া ক্রোটের বাইরে কোনও প্রক্রিয়া হিসাবে একই ব্যবহারকারীর মতো চলবে না।
গিলস

@ মার্ক বাইন্ড-নিজেই একটি ডিরেক্টরি মাউন্ট করা খুব কার্যকর নয়। আমার ধারণা আপনি একটি নির্দিষ্ট ডিরেক্টরিতে মাউন্ট করা ফাইল সিস্টেমগুলি লুকানোর জন্য এটি ব্যবহার করতে পারেন তবে আমি এমন কোনও সময় ভাবতে পারি না যখন আমি এটি নির্দিষ্টভাবে করতে চাইতাম।
গিলস

-1

সরল, আপনি যখন বাইন্ড মাউন্ট ব্যবহার করবেন তখন হোস্ট মেশিনের একটি ফাইল বা ডিরেক্টরি একটি ধারক হিসাবে মাউন্ট করা হয় তাই হোস্ট মেশিনে ফাইল ডিরেক্টরিতে যা কিছু পরিবর্তন হয় তা স্বয়ংক্রিয়ভাবে ডিরেক্টরিতে থাকা ধারকের ভিতরে উপস্থিত হয়ে যায়।


এটি একটি বাঁধাই মাউন্ট ব্যবহার করার অন্যতম উপায় তবে পাত্রে আবদ্ধ মাউন্টগুলির পাত্রে কোনও সম্পর্ক নেই। আমি আমার উত্তরে এটি উল্লেখ করেছি, তবে "কন্টেনার" না দিয়ে "জেল" নামে; "ধারক" যুক্ত করা একটি মূল্যবান সম্পাদনা হবে (আমি এটি করব)। এটিও একটি নিখুঁত বিবরণ: বাইরের যে পরিবর্তনগুলি অন্যভাবে রাউন্ডের উল্লেখ না করে ভিতরেও পাওয়া যায় তা উল্লেখ করুন কেন?
গিলস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.