মাউন্ট - বাইন্ডকে প্রতীকী লিঙ্কের বিকল্প হিসাবে ব্যবহার করা থেকে কোন অসুবিধা আছে কি?


55

Symlinks মত কিভাবে ফাংশন মধ্যে সীমাবদ্ধতা আছে ls, mvএবং cpঅসদৃশ শেল মত কমান্ড প্রবর্তিত কারণ তাদের উপর কাজ করতে পারে cd, এই ফাংশন কিভাবে ব্যবহারকারী যৌক্তিক পথ থেকে সম্মান সঙ্গে ডিরেক্টরি অ্যাক্সেস তথ্য নেই (সাথে সম্পর্কিত দেখতে পোস্টে )। মনে হচ্ছে mount --bindপরিবর্তে বিকল্পটি ব্যবহার করে এটি সাম্বা এবং অন্যান্য ফাইল সার্ভারের সাথে বর্ধিত কার্যকারিতা এবং সামঞ্জস্যতার প্রস্তাব দেয় কারণ মাউন্ট করা ডিরেক্টরিটিতে একটি লিঙ্কের পরিবর্তে দুটি স্বতন্ত্র শারীরিক পাথ থাকবে।

আমি mount --bindবিকল্পটি ব্যবহার করে আমার সমস্ত প্রতীকী লিঙ্কগুলি রেফারেন্সের সাথে প্রতিস্থাপন করতে চাই তবে এর অর্থ হবে fstab এ 150 পয়েন্টের বেশি। এমন কোনও পারফরম্যান্স সমস্যা রয়েছে যা আমার বা অন্য কোনও ত্রুটিগুলি থেকে বিবেচনা করা উচিত যা সম্ভবত বিবেচনা করা উচিত?


আপনি কি হার্ড লিঙ্কগুলি ব্যবহার করে বিবেচনা করেছেন ?
ire_and_curses

1
@ire_and_curses বেশিরভাগ ইউনিক্সের মতো সিস্টেমে কঠোর লিঙ্কগুলি নিষিদ্ধ করা হয়েছে, সঙ্গত কারণেই (এবং একই কারণে, আপনি যে সিস্টেমে পারেন সেখানে কার্যত সেগুলি কখনও ব্যবহার করা উচিত নয়)।
এলিয়াহ কাগন

3
@ire_and_curses: এলিয়াহর বক্তব্য স্পষ্ট করতে আপনি কোনও ডিরেক্টরিতে একটি হার্ড লিঙ্ক তৈরি করতে পারবেন না (যদিও এইচএফএস + এটি এক উপায়ে সমর্থন করে)। এবং হার্ড লিঙ্কগুলির একটি পুনরাবৃত্তি গাছ তৈরি করা উভয় ডিরেক্টরি পাথ সিঙ্কে রাখে না।
বাহামাত

উত্তর:


62

এর সাথে mount --bindডিরেক্টরি বন্টন বিভাগের দুটি (বা আরও) জায়গায় একটি ডিরেক্টরি গাছ উপস্থিত রয়েছে। এটি বিভিন্ন সমস্যা সৃষ্টি করতে পারে। ব্যাকআপ এবং অন্যান্য ফাইলের অনুলিপি সমস্ত অনুলিপি পছন্দ করবে। আপনি ফাইল সিস্টেমটি অনুলিপি করতে চান তা নির্দিষ্ট করে দেওয়া কঠিন হয়ে পড়ে: আপনি বাইন্ড-মাউন্ট করা ফাইলগুলি দু'বার অনুলিপি করবেন। যেসব অনুসন্ধানের find, grep -r, locateইত্যাদি সব কপি, তর্ক হবে, এবং তাই।

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

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

কেবল রুটটি বাঁধাইয়ের মাউন্টগুলি চালিত করতে পারে। এগুলি সাধারণ উপায়ে চালানো যায় না; তারা তাদের অবস্থান এবং পূর্বপুরুষের ডিরেক্টরিগুলি লক করে।

সাধারণভাবে বলতে গেলে, আপনি যদি কোনও কমান্ডের প্রতীকী লিঙ্কটি পাস করেন, কমান্ডটি লিঙ্কে ফাইলগুলি পরিচালনা করে এবং লিঙ্কের লক্ষ্যবস্তু যদি এটি ফাইলের বিষয়বস্তুগুলিতে কাজ করে তবে কাজ করে। এটি ডিরেক্টরিতেও যায়। এটি সাধারণত সঠিক জিনিস। কিছু কমান্ড অপশন উদাহরণস্বরূপ, ভিন্নভাবে সিম্বলিক লিংক চিকিত্সা আছে ls -L, cp -d, rsync -l। আপনি যা যা করার চেষ্টা করছেন তা হ'ল বাঁধা মাউন্টগুলি সঠিক সরঞ্জাম হওয়ার চেয়ে সিমলিংকগুলি সঠিক সরঞ্জাম হ'ল এটি অনেক বেশি সম্ভব।


ধন্যবাদ। আমার ধারণা আমি ব্যাকআপ, অনুলিপি এবং ফাইল অনুসন্ধানগুলিতে প্রভাব বিবেচনা করছিলাম না। আমি সাম্বা smb.conf এ 'ফলো সিমলিংকগুলি = হ্যাঁ' যোগ করে সিমলিংকগুলি অনুসরণ করতে সক্ষম হয়েছি তবে কোনও সাম্বা ব্যবহারকারী কোনও লিখিতযোগ্য ফোল্ডারে 'ln -s / ইত্যাদি' বলতে গেলে 'ln -s / ইত্যাদি' বলতে পারে এমন সুরক্ষার সাথে এটি আপস করে does সিস্টেম ফাইলগুলিতে অ্যাক্সেস। আমি এর আশেপাশে একটি উপায় সন্ধান করার চেষ্টা করছি। আপনি যদি কারও কিছু জানেন তবে আমাকে জানান let
শ্রুত্রিজ्यो

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

14

ছাড়াও কি @Gilles লিখেছিলেন আগে, এটা লক্ষণীয় যে, কিছু ইউটিলিটি মূল্য পারে একটি পৃথক ফাইল সিস্টেম হতে একটি বাঁধাই করা-র উপরে মাউন্ট ডিরেক্টরি বিবেচনা। এটির কার্য সম্পাদন বা কার্যকারিতা সম্পর্কিত প্রভাব থাকতে পারে যদি প্রোগ্রামটি আর ধরে নিতে পারে না যে একই ইনোড নম্বরটি একই ফাইলটিকে বোঝায় (যা এটি না, যদি তারা বিভিন্ন ফাইল সিস্টেমে থাকে), একটি পদক্ষেপ লিঙ্ক-এট- হিসাবে অনুকূলিত করা যায় না টার্গেট-তারপর-লিঙ্ক-উত্স, ইত্যাদি


ধন্যবাদ। আমি ভাবছিলাম কীভাবে ডিএফ এবং ডুয়ের মতো সাধারণ ইউটিলিটিগুলি বাইন্ড মাউন্টগুলির সাথে ফাইল সিস্টেমে ডিরেক্টরি আকারের গণনা পরিচালনা করতে পারে।
শ্রুত্রিজিয়ো

1
কমপক্ষে dfআমার সিস্টেমে জিএনইউ এমনকি বাইন্ড-মাউন্টড ডিরেক্টরিগুলি ডিফল্টরূপে বিবেচনা করে না, তবে যদি বিশেষভাবে জিজ্ঞাসা করা হয়, এটি একই ফাইল সিস্টেমের অন্য মাউন্ট হিসাবে বিবেচিত হয়। (কোনটি, যদি আপনি আমাকে জিজ্ঞাসা করেন, ডিএফ এর উদ্দেশ্য সহ একটি সরঞ্জামের জন্য প্রত্যাশিত আচরণ।)
একটি সিভিএন

6

আপনি যখন এমন কোনও সাপোর্টের উপর নির্ভর করেন যা সর্বদা জায়গায় নাও থাকে (উদাহরণস্বরূপ একটি বাহ্যিক ডিস্ক) এবং আপনি নিশ্চিত হওয়া চাই যে মূল ডিরেক্টরি কাঠামোটি সেখানে রয়েছে তবে সমর্থনটি থাকা সত্ত্বেও আপনি নিশ্চিত করতে চান ব্যর্থ হয় বা সরানো হয়

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


1

আমি বাঁধন মাউন্টটি এমন একটি সিস্টেমে pacman(আর্চলিনাক্স, আরও এটি সম্পর্কে ) কিছু প্যাকেজ ইনস্টল করার ক্ষেত্রে সমস্যাটি সমাধান করার চেষ্টা করেছি যেখানে /var(পাশাপাশি /homeএবং /usr/local) সিমলিংক ছিল (ফাইল সিস্টেমের মধ্যে: এসএসডি থেকে এসটিএ)।

এটি প্রথমে দুর্দান্ত লাগছিল, কিন্তু গিলস যেমন উল্লেখ করেছেন, locateসর্বদা একটি ফাইলের জন্য একাধিক ফলাফল দিয়েছে, PRUNE_BIND_MOUNTS = "yes"লাইনটি সত্ত্বেও /etc/updatedb.conf

$ locate \*/findutils-4.4.2 | xargs ls -ldiog
33816600 drwxr-xr-x 12 4096 Dec  3 00:05 /SHARED/LOCALS/Manjaro/src/findutils-4.4.2
33816600 drwxr-xr-x 12 4096 Dec  3 00:05 /usr/local/src/findutils-4.4.2

আরও কিছুটা খনন করে, আমি দেখতে পেলাম যে আরও জটিল বাঁধাই মাউন্টগুলি সঠিকভাবে ছাঁটাই করা যেতে পারে:

$ sudo mount --bind /SHARED/LOCALS/common/ /usr/local/common
$ findmnt | fgrep -n sdb
34:├─/SHARED/LOCALS                  /dev/sdb5           ext4           rw,relatime,data=ordered
35:│ └─/SHARED/LOCALS/Manjaro/common /dev/sdb5[/common]  ext4            rw,relatime,data=ordered
36:├─/usr/local                      /dev/sdb5[/Manjaro] ext4            rw,relatime,data=ordered
37:│ └─/usr/local/common             /dev/sdb5[/common]  ext4            rw,relatime,data=ordered
38:├─/SHARED/HOMES                   /dev/sdb4           ext4            rw,relatime,data=ordered
39:├─/home                           /dev/sdb4[/Manjaro] ext4            rw,relatime,data=ordered
40:├─/SHARED/VARS                    /dev/sdb3           ext4            rw,relatime,data=ordered
41:├─/var                            /dev/sdb3[/Manjaro] ext4            rw,relatime,data=ordered
42:└─/opt                            /dev/sdb5[/opt]     ext4            rw,relatime,data=ordered

$ sudo updatedb --debug-pruning 2>&1 >/dev/null | grep bind
prune_bind_mounts\000
Rebuilding bind_mount_paths:
Matching bind_mount_paths:
Skipping `/SHARED/LOCALS/Manjaro/common': bind mount
Skipping `/usr/local/common': bind mount

$ locate \*/mmedia
/SHARED/LOCALS/common/mmedia

PRUNE_BIND_MOUNT বিকল্প না থাকলে আমি 3 টি ফলাফল পেয়ে যেতাম:

$ sudo sed -i '1 s/yes/no/' /etc/updatedb.conf 
$ sudo updatedb --debug-pruning 2>&1 >/dev/null | grep bind
prune_bind_mounts\000
$ locate \*/mmedia
/SHARED/LOCALS/Manjaro/common/mmedia
/SHARED/LOCALS/common/mmedia
/usr/local/common/mmedia
$ sudo sed -i '1 s/no/yes/' /etc/updatedb.conf 

বাঁধা মাউন্টগুলির সাথে আর একটি সমস্যা:

অবশ্যই, এক ম্যানুয়ালি প্রদানকারীর সাথে যুক্ত হন মাউন্ট (mounpoint বা লক্ষ্য) যোগ করতে পারেন PRUNEPATHSমধ্যে /etc/updatedb.conf

এছাড়াও, mountpointএবং প্রস্তাবিতstat ফাইল সিস্টেম ট্র্যাভারসাল উন্নত করতে বিভিন্ন কমান্ড বা ফাংশন সরঞ্জামগুলিতে ব্যবহার করা যেতে পারে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.