“බන්ධන සවිකිරීම” යනු කුමක්ද? මම එකක් සාදා ගන්නේ කෙසේද? එය හොඳ කුමක්ද?
යමක් සඳහා බන්ධන සවිකිරීමක් භාවිතා කරන ලෙස මට පවසා ඇත, නමුත් එය කුමක්දැයි හෝ එය භාවිතා කරන්නේ කෙසේදැයි මට නොතේරේ.
“බන්ධන සවිකිරීම” යනු කුමක්ද? මම එකක් සාදා ගන්නේ කෙසේද? එය හොඳ කුමක්ද?
යමක් සඳහා බන්ධන සවිකිරීමක් භාවිතා කරන ලෙස මට පවසා ඇත, නමුත් එය කුමක්දැයි හෝ එය භාවිතා කරන්නේ කෙසේදැයි මට නොතේරේ.
Answers:
ඒ බැඳීම සවි නාමාවලියක් ගස විකල්ප දැක්ම වේ. සම්භාව්ය වශයෙන්, සවි කිරීම මඟින් ගබඩා උපාංගයක් නාමාවලි ගසක් ලෙස දැක්වේ. බන්ධන සවිකිරීමක් දැනට පවතින නාමාවලි ගසක් ගෙන එය වෙනත් ලක්ෂ්යයක් යටතේ අනුකරණය කරයි. බන්ධන සවිකිරීමේ නාමාවලි සහ ලිපිගොනු මුල් පිටපතට සමාන වේ. දර්ශන දෙක එකම දත්ත පෙන්වන බැවින් එක් පැත්තක ඕනෑම වෙනස් කිරීමක් වහාම අනෙක් පැත්තෙන් පිළිබිඹු වේ.
උදාහරණයක් ලෙස, ලිනක්ස් විධානය නිකුත් කිරීමෙන් පසු
mount --bind /some/where /else/where
නාමාවලි /some/where
සහ /else/where
එකම අන්තර්ගතය ඇත.
දෘ link සබැඳියක් හෝ සංකේතාත්මක සබැඳියක් මෙන් නොව, බන්ධන සවිකිරීම ගොනු පද්ධතියේ ගබඩා කර ඇති දේට බලපාන්නේ නැත. එය සජීවී පද්ධතියේ දේපලකි.
මෙම bindfs
ගොනු පද්ධතිය යනු ෆියුස් නාමාවලියක් ගසක දැක්ම නිර්මාණය වන ගොනු පද්ධතිය. උදාහරණයක් ලෙස, විධානය
bindfs /some/where /else/where
/else/where
එහි අන්තර්ගතය /some/where
දෘශ්යමාන වන සවිකිරීමේ ලක්ෂ්යයක් කරයි .
Bindfs වෙනම ගොනු පද්ධතියක් බැවින්, ගොනු /some/where/foo
සහ /else/where/foo
යෙදුම් වලට විවිධ ගොනු ලෙස පෙනේ (bindfs ගොනු පද්ධතියට එහි st_dev
වටිනාකමක් ඇත). එක් පැත්තක සිදුවන ඕනෑම වෙනසක් “ඉන්ද්රජාලිකව” අනෙක් පැත්තෙන් පිළිබිඹු වේ, නමුත් ලිපිගොනු එක හා සමාන බව පෙනෙන්නේ බින්ඩ්ෆ් ක්රියාත්මක වන ආකාරය යමෙකු දැනගත් විට පමණි.
බින්ඩ්ෆ්ස් හට සවිකිරීමේ ස්ථාන පිළිබඳ දැනුමක් නැත, එබැවින් යටින් සවිකිරීමේ ස්ථානයක් තිබේ නම් /some/where
, එය යටින් ඇති තවත් නාමාවලියක් ලෙස පෙනේ /else/where
. යටින් ගොනු පද්ධතියක් සවි කිරීම හෝ ඉවත් කිරීම අනුරූප නාමාවලියෙහි වෙනසක් ලෙස /some/where
පෙනේ /else/where
.
Bindfs හට සමහර ගොනු පාර-දත්ත වෙනස් කළ හැකිය: එයට ව්යාජ අවසර සහ ගොනු සඳහා හිමිකම පෙන්විය හැකිය. විස්තර සඳහා අත්පොත බලන්න, සහ උදාහරණ සඳහා පහත බලන්න.
Bindfs ගොනු පද්ධතියක් මූල නොවන පරිශීලකයෙකු ලෙස සවි කළ හැකිය, ඔබට අවශ්ය වන්නේ FUSE ගොනු පද්ධති සවි කිරීමට වරප්රසාදය පමණි. ඔබගේ බෙදා හැරීම මත පදනම්ව, මේ සඳහා fuse
කණ්ඩායමේ සිටීම අවශ්ය විය හැකිය හෝ සියලු පරිශීලකයින්ට අවසර දෙනු ලැබේ. FUSE ගොනු පද්ධතියක් ඉවත් කිරීමට, fusermount -u
ඒ වෙනුවට භාවිතා කරන්න umount
, උදා
fusermount -u /else/where
FreeBSD nullfs
ගොනු පද්ධතිය සපයන අතර එය ගොනු පද්ධතියක විකල්ප දර්ශනයක් නිර්මාණය කරයි. පහත දැක්වෙන විධාන දෙක සමාන වේ:
mount -t nullfs /some/where /else/where
mount_nullfs /some/where /else/where
එක් විධානයක් නිකුත් කිරීමෙන් පසු /else/where
, අන්තර්ගතය /some/where
දෘශ්යමාන වන සවිකිරීමේ ස්ථානයක් බවට පත්වේ .
Nullfs වෙනම ගොනු පද්ධතියක් බැවින්, ගොනු /some/where/foo
සහ /else/where/foo
යෙදුම් වලට විවිධ ගොනු ලෙස පෙනේ (nullfs ගොනු පද්ධතියට එහි st_dev
වටිනාකමක් ඇත). එක් පැත්තක ඕනෑම වෙනසක් “ඉන්ද්රජාලිකව” අනෙක් පැත්තෙන් පිළිබිඹු වේ, නමුත් ලිපිගොනු එක හා සමාන බව පෙනෙන්නේ ශුන්යයන් ක්රියාත්මක වන ආකාරය දන්නා විට පමණි.
ඩිරෙක්ටරි ගස මට්ටමින් ක්රියා කරන FUSE bindfs මෙන් නොව, FreeBSD හි ශුන්යයන් කර්නලයේ ගැඹුරින් ක්රියා කරයි, එබැවින් යටින් /else/where
ඇති සවි කිරීම් ලක්ෂ්ය නොපෙනේ: /some/where
යටතේ පිළිබිඹු වන පරිදි එකම සවිකිරීමේ ලක්ෂ්යයේ කොටසක් වන ගස පමණි /else/where
.
Nullfs ගොනු පද්ධතිය වෙනත් BSD ප්රභේද (OS X, OpenBSD, NetBSD) යටතේ භාවිතා කළ හැකි නමුත් එය පෙරනිමි පද්ධතියේ කොටසක් ලෙස සම්පාදනය නොකෙරේ.
ලිනක්ස් යටතේ, කර්නල් අංගයක් ලෙස බන්ධන සවිකිරීම් ලබා ගත හැකිය. විධාන රේඛා විකල්පය හෝ සවිකිරීමේ විකල්පය 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 පමණ වන තෙක් මම හරියටම නොදනිමි), බන්ධන සවිකිරීම් මුල් පිටපතෙන් සැබවින්ම වෙන් කොට හඳුනාගත නොහැකි විය. මෑත කර්නල් මඟින් බන්ධන සවිකිරීම් නිරීක්ෂණය කරන අතර PID / mountinfo හරහා තොරතුරු හෙළි කරයි, එමඟින් 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 සඳහා සහය නොදක්වන්නේ නම්, එකම ප්රති achieve ල ලබා ගැනීම සඳහා සම්භාව්ය උපක්රමයක් නම් NFS සේවාදායකයක් ක්රියාත්මක කිරීම, එය ඔබට නිරාවරණය කිරීමට අවශ්ය ගොනු අපනයනය කිරීම (ප්රවේශ වීමට ඉඩ දීම localhost
) සහ ඒවා එකම යන්ත්රයක සවි කිරීම ය. මතකය සහ ක්රියාකාරීත්වය අනුව මෙය සැලකිය යුතු පොදු කාර්යයක් ඇත, එබැවින් බන්ධන සවිකිරීම් ලබා ගත හැකි තැනට නිශ්චිත වාසියක් ඇත (එය බොහෝ යුනික්ස් ප්රභේදවල ෆියුස් වලට ස්තූතියි).
ආරක්ෂක හේතූන් මත හෝ ඔබ එය අහම්බෙන් වෙනස් නොකරන බවට වග බලා ගැනීම සඳහා ගොනු පද්ධතියක් කියවීමට-පමණක් දර්ශනයක් නිර්මාණය කිරීම ප්රයෝජනවත් විය හැකිය.
Bindfs සමඟ:
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, btrfs, zfs, UFS,…) සමඟ තැටියක් ඔබ සතුව ඇතැයි සිතමු, ඔබට එම තැටියට ප්රවේශ විය හැකිය ඇලිස්ට පරිශීලක හැඳුනුම්පත 1001 සහ බොබ්ට පරිශීලක හැඳුනුම්පත 1000 ඇත. ඔබ තැටිය කෙලින්ම සවිකරන්නේ නම්, ඇලිස්ගේ ලිපිගොනු බොබ් සතු බව පෙනේ (පරිශීලක හැඳුනුම්පත 1001 නිසා) සහ බොබ්ගේ ලිපිගොනු ඇලිස් සතු බව පෙනේ (මන්ද පරිශීලක හැඳුනුම්පත 1000).
පරිශීලක හැඳුනුම්පත් නැවත සකස් කිරීමට ඔබට bindfs භාවිතා කළ හැකිය. මුලින්ම තැටියේ කොටස පුද්ගලික නාමාවලියක සවි කරන්න, එහිදී root ට පමණක් ප්රවේශ විය හැකිය. ඉන්පසු ඇලිස් සහ බොබ්ගේ පරිශීලක හැඳුනුම්පත් සහ කණ්ඩායම් හැඳුනුම්පත් හුවමාරු කරන පරිශීලක හැඳුනුම්පත සහ කණ්ඩායම් හැඳුනුම්පත නැවත සකස් කිරීම සමඟ පොදු ප්රදේශයක බින්ඩ්ෆ් දර්ශනයක් සාදන්න.
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 වෙනත් පරිශීලක සවි තවත් උදාහරණ.
ඒ chroot පසුබිමෙන් සිර හෝ රුවනයකි පද්ධතියේ බහලුම ගසක subtree ක්රියාදාමයක් දිවෙන. සීමිත ප්රවේශයක් සහිත වැඩසටහනක් ක්රියාත්මක කිරීමට මෙය ප්රයෝජනවත් වේ, උදා: තමන්ගේම ලිපිගොනු සහ එය සේවය කරන ලිපිගොනු වලට පමණක් ප්රවේශය ඇති ජාල සේවාදායකයක් ධාවනය කරන්න, නමුත් එකම පරිගණකයේ ගබඩා කර ඇති වෙනත් දත්ත වලට නොවේ). ක්රූට් හි සීමාවක් නම්, වැඩසටහන එක් උප කුලයකට සීමා වී තිබීමයි: එයට ස්වාධීන උප කුලකවලට ප්රවේශ විය නොහැක. බන්ධන සවි කිරීම් මඟින් වෙනත් උප කුලක එම ප්රධාන ගස මත බද්ධ කිරීමට ඉඩ ලබා දේ. මෙය ලිනක්ස් යටතේ බහාලුම් වඩාත් ප්රායෝගිකව භාවිතා කිරීමට මූලික වේ.
උදාහරණයක් ලෙස, යන්ත්රයක් සේවාවක් ක්රියාත්මක කරන්නේ /usr/sbin/somethingd
එය යටතේ ඇති දත්ත වලට පමණක් ප්රවේශ විය යුතු යැයි සිතමු /var/lib/something
. මෙම ලිපිගොනු දෙකම අඩංගු කුඩාම ඩිරෙක්ටරි ගස මුල වේ. සේවාව සීමා කරන්නේ කෙසේද? එක් හැකියාවක් නම්, සේවාවට අවශ්ය සියලුම ලිපිගොනු (අවම වශයෙන් /usr/sbin/somethingd
සහ හවුල් පුස්තකාල කිහිපයක්) යටතේ දෘ link සම්බන්ධතා ඇති කිරීමයි /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 &
ලිනක්ස් හි සවිකරන නාම අවකාශයන් chroots සාමාන්යකරණය කරයි. බන්ධන සවිකිරීම් යනු නම් අවකාශයන් නම්යශීලී ආකාරයකින් ජනගහනය කළ හැකි ආකාරයයි. බලන්න එම ගොනු සඳහා වෙනස් ගොනුව කියවීමට ක්රියාවලියක් කිරීම උදාහරණයක් සඳහා.
Chroots හි තවත් භාවිතයක් නම්, ඩිරෙක්ටරියක් තුළ වෙනත් බෙදාහැරීමක් ස්ථාපනය කර වැඩසටහන් ක්රියාත්මක කිරීම ය. ඒවා දෘඩ කේත කරන ලද මාර්ගවල ලිපිගොනු අවශ්ය වූ විට හෝ මූලික පද්ධතියේ වෙනස් අන්තර්ගතයන් තිබිය යුතුය. උදාහරණයක් ලෙස, මිශ්ර පැකේජ සඳහා සහය නොදක්වන 64-බිට් පද්ධතියක 32-බිට් බෙදාහැරීමක් ස්ථාපනය කිරීම, ගැළපුම පරීක්ෂා කිරීම සඳහා බෙදාහැරීමක පැරණි නිකුතුවක් හෝ වෙනත් බෙදාහැරීම් ස්ථාපනය කිරීම, පරීක්ෂා කිරීම සඳහා නව නිකුතුවක් ස්ථාපනය කිරීම සඳහා මෙය ප්රයෝජනවත් වේ. ස්ථාවර පාදක පද්ධතියක් පවත්වා ගෙන යන අතරතුර නවතම අංග. ආදිය බලන්න බිට් 64 ඩෙබියන් / උබුන්ටු මත බිට් 32 වැඩසටහන් ක්රියාත්මක කරන්නේ කෙසේද? ඩේබියන් / උබුන්ටු පිළිබඳ උදාහරණයක් සඳහා.
ඩිරෙක්ටරිය යටතේ ඔබේ බෙදාහැරීමේ නවතම පැකේජ ස්ථාපනය කර ඇති බව සිතමු, එම ඩිරෙක්ටරියට /f/unstable
මාරුවීමෙන් ඔබ වැඩසටහන් ක්රියාත්මක කරයි chroot /f/unstable
. මෙම ස්ථාපනයන්ගෙන් නිවාස නාමාවලි ලබා ගැනීම සඳහා, ඒවා chroot වෙත සවි කරන්න:
mount --bind /home /f/unstable/home
වැඩසටහන schroot මෙය ස්වයංක්රීයව කරයි.
ඔබ නාමාවලියක් මත ගොනු පද්ධතියක් සවි කරන විට, මෙය නාමාවලිය පිටුපස ඇති දේ සඟවයි. ඩිරෙක්ටරිය ගලවන තුරු එම නාමාවලියෙහි ඇති ගොනු ප්රවේශ විය නොහැක. බීඑස්ඩී නුල්ෆ් සහ ලිනක්ස් බන්ධන සවිකිරීම් සවිකිරීමේ යටිතල ව්යුහයට වඩා පහත් මට්ටමක ක්රියාත්මක වන හෙයින්, ගොනු පද්ධතියක ශුන්ය සවිකිරීමක් හෝ බන්ධන සවිකිරීමක් මුල් පිටුවේ උප පොළවල් පිටුපස සැඟවී ඇති නාමාවලි හෙළි කරයි.
උදාහරණයක් ලෙස, ඔබ සතුව tmpfs ගොනු පද්ධතියක් සවි කර ඇතැයි සිතමු /tmp
. /tmp
Tmpfs ගොනු පද්ධතිය නිර්මාණය කරන විට ලිපිගොනු තිබුනේ නම් , මෙම ලිපිගොනු තවමත් පවතිනු ඇත, effectively ලදායී ලෙස ප්රවේශ විය නොහැකි නමුත් තැටියේ ඉඩ ලබා ගනී. දුවන්න
mount --bind / /mnt
(ලිනක්ස්) හෝ
mount -t nullfs / /mnt
(FreeBSD) හි මූල ගොනු පද්ධතියේ දර්ශනයක් නිර්මාණය කිරීමට /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
. ඒ බැඳීම සවිකිරීමක් මෙය මඟහරවා හැක: බඳින්න-mount /some/where/is/my
කිරීමට /else/where/is/my
, පසුව realpath
වාර්තා කරනු ඇත /else/where/is/my/file
යටතේ විය /else/where
යටතේ නොව, /some/where
.
ඔබ බන්ධන සවිකිරීම් භාවිතා කරන්නේ නම්, උපස්ථ සහ සුචිගත කිරීම වැනි ගොනු පද්ධති ගස පුනරාවර්තනය වන යෙදුම් ගැන ඔබ සැලකිලිමත් විය යුතුය (උදා: ස්ථානගත දත්ත ගබඩාවක් තැනීම සඳහා ).
සාමාන්යයෙන්, බන්ධන සවිකිරීම් පුනරාවර්තන නාමාවලි ගමන් වලින් බැහැර කළ යුතුය, එවිට සෑම නාමාවලි ගසක්ම මුල් ස්ථානයේ එක් වරක් පමණක් ගමන් කරයි. Bindfs සහ nullfs සමඟ, හැකි නම්, මෙම ගොනු පද්ධති වර්ග නොසලකා හැරීමට ට්රැවර්සල් මෙවලම වින්යාස කරන්න. ලිනක්ස් බන්ධන සවිකිරීම් එලෙස හඳුනාගත නොහැක: නව ස්ථානය මුල් පිටපතට සමාන වේ. ලිනක්ස් බන්ධන සවිකිරීම් සමඟ හෝ ගොනු පද්ධති වර්ග නොව මාර්ග පමණක් බැහැර කළ හැකි මෙවලම් සමඟ, බන්ධන සවිකිරීම් සඳහා සවිකිරීමේ ස්ථාන බැහැර කළ යුතුය.
ගොනු පද්ධති මායිම්වල (උදා find -xdev
. rsync -x
,, du -x
…) නැවතුම් ස්ථාන බන්ධන හෝ ශුන්ය සවිකිරීමේ ලක්ෂ්යයක් හමු වූ විට ස්වයංක්රීයව නතර වේ, මන්ද එම සවිකිරීමේ ස්ථානය වෙනස් ගොනු පද්ධතියක් වන බැවිනි. ලිනක්ස් බන්ධන සවිකිරීම් සමඟ තත්වය තරමක් සංකීර්ණ වේ: ගොනු පද්ධති සීමාවක් ඇත්තේ බන්ධන සවිකිරීම වෙනත් ගොනු පද්ධතියක් බද්ධ කරන්නේ නම් මිස එය එකම ගොනු පද්ධතියේ තවත් කොටසක් බද්ධ කරන්නේ නම් නොවේ.
බන්ධන සවිකිරීම් වෙනත් ස්ථානයක ඇති නාමාවලි ගසක දර්ශනයක් සපයයි. ඔවුන් එකම ලිපිගොනු නිරාවරණය කරයි, සමහර විට විවිධ සවිකිරීමේ විකල්පයන් සහ (bindfs සමඟ) විවිධ හිමිකාරිත්වය සහ අවසරයන් ඇත. ඩිරෙක්ටරි ගසක වෙනස් කළ දර්ශනයක් ඉදිරිපත් කරන ගොනු පද්ධති ඕවර්ලේ ගොනු පද්ධති හෝ ගොඩගැසිය හැකි ගොනු පද්ධති ලෙස හැඳින්වේ . වඩාත් දියුණු පරිවර්තනයන් සිදු කරන තවත් බොහෝ ආවරණ ගොනු පද්ධති තිබේ. මෙන්න පොදු ඒවා කිහිපයක්. ඔබ අපේක්ෂිත භාවිත නඩුව මෙහි ආවරණය නොවන්නේ නම්, FUSE ගොනු පද්ධතිවල ගබඩාව පරීක්ෂා කරන්න .
bindfs -r
, තව ටිකක් සැහැල්ලු.වෘත්තීය සමිති සවිකිරීම - වර්තමාන බහු ගොනු පද්ධති (called ශාඛා තනි බහලුම යටතේ): නම් tree1
අඩංගු foo
හා tree2
අඩංගු bar
එවිට ඔවුන්ගේ වෘත්තීය සමිති දැක්ම දෙකම අඩංගු foo
හා bar
. නව ලිපිගොනු විශේෂිත ශාඛාවකට හෝ වඩාත් සංකීර්ණ නීතිරීති අනුව තෝරාගත් ශාඛාවකට ලියා ඇත. මෙම සංකල්පය ක්රියාත්මක කිරීම කිහිපයක් ඇත, ඒවා අතර:
mount --bind /dir1 /dir1
? සවිකිරීමේ ප්රභවය සහ ඉලක්කය වෙනස් වන අවස්ථාවෙන් එය වෙනස් වන්නේ කෙසේද?
/proc/self/mountinfo
. ක්රූට් සම්බන්ධයෙන් ගත් කල, එය හුදකලාව සඳහා භාවිතා කළ හැකි නමුත් එය තනිවම නොවේ. ඔබට නම් අවකාශයන් සවි කිරීමට අවශ්ය නැත : ගොනු පද්ධති නාම අවකාශය සඳහා chroot ප්රමාණවත් වේ. Chroot හි කිසිදු ක්රියාවලියක් chroot වලින් පිටත ක්රියාවලියක් ලෙස එකම පරිශීලකයෙකු ලෙස ක්රියාත්මක නොවන බවට ඔබ සහතික විය යුතුය.
සරලයි, ඔබ බන්ධන සවිකිරීම භාවිතා කරන විට, ධාරක යන්ත්රයේ ගොනුවක් හෝ නාමාවලියක් බහාලුමක් තුළට සවි කර ඇති අතර එමඟින් ධාරක යන්ත්රයේ ගොනු නාමාවලිය තුළ සිදුවන ඕනෑම වෙනස්කමක් ස්වයංක්රීයව නාමාවලියෙහි බහාලුම තුළ ලබා ගත හැකිය.