බන්ධන සවිකිරීම යනු කුමක්ද?


362

“බන්ධන සවිකිරීම” යනු කුමක්ද? මම එකක් සාදා ගන්නේ කෙසේද? එය හොඳ කුමක්ද?

යමක් සඳහා බන්ධන සවිකිරීමක් භාවිතා කරන ලෙස මට පවසා ඇත, නමුත් එය කුමක්දැයි හෝ එය භාවිතා කරන්නේ කෙසේදැයි මට නොතේරේ.


2
සවි කිරීම් සහ සිම්ලින්ක්
චාලි පාකර්

Answers:


637

බන්ධන සවිකිරීම යනු කුමක්ද?

බැඳීම සවි නාමාවලියක් ගස විකල්ප දැක්ම වේ. සම්භාව්‍ය වශයෙන්, සවි කිරීම මඟින් ගබඩා උපාංගයක් නාමාවලි ගසක් ලෙස දැක්වේ. බන්ධන සවිකිරීමක් දැනට පවතින නාමාවලි ගසක් ගෙන එය වෙනත් ලක්ෂ්‍යයක් යටතේ අනුකරණය කරයි. බන්ධන සවිකිරීමේ නාමාවලි සහ ලිපිගොනු මුල් පිටපතට සමාන වේ. දර්ශන දෙක එකම දත්ත පෙන්වන බැවින් එක් පැත්තක ඕනෑම වෙනස් කිරීමක් වහාම අනෙක් පැත්තෙන් පිළිබිඹු වේ.

උදාහරණයක් ලෙස, ලිනක්ස් විධානය නිකුත් කිරීමෙන් පසු

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

නාමාවලි /some/whereසහ /else/whereඑකම අන්තර්ගතය ඇත.

දෘ link සබැඳියක් හෝ සංකේතාත්මක සබැඳියක් මෙන් නොව, බන්ධන සවිකිරීම ගොනු පද්ධතියේ ගබඩා කර ඇති දේට බලපාන්නේ නැත. එය සජීවී පද්ධතියේ දේපලකි.

බන්ධන සවිකිරීමක් මා නිර්මාණය කරන්නේ කෙසේද?

bindfs

මෙම 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

nullfs

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. /tmpTmpfs ගොනු පද්ධතිය නිර්මාණය කරන විට ලිපිගොනු තිබුනේ නම් , මෙම ලිපිගොනු තවමත් පවතිනු ඇත, effectively ලදායී ලෙස ප්‍රවේශ විය නොහැකි නමුත් තැටියේ ඉඩ ලබා ගනී. දුවන්න

mount --bind / /mnt

(ලිනක්ස්) හෝ

mount -t nullfs / /mnt

(FreeBSD) හි මූල ගොනු පද්ධතියේ දර්ශනයක් නිර්මාණය කිරීමට /mnt. නාමාවලිය /mnt/tmpයනු මූල ගොනු පද්ධතියෙන් එකකි.

NFS අපනයනය විවිධ මාර්ග වලින්

සමහර එන්එෆ්එස් සේවාදායකයන් (එන්එෆ්එස්වී 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 ගොනු පද්ධතිවල ගබඩාව පරීක්ෂා කරන්න .

දෘශ්‍ය ගොනු පෙරහන් කරන්න

  • clamfs - ලිපිගොනු කියවන විට වෛරස් ස්කෑනරයක් හරහා ධාවනය කරන්න
  • filterfs - ගොනු පද්ධතියක කොටස් සඟවන්න
  • rofs - කියවීමට පමණි දර්ශනය. සමාන bindfs -r, තව ටිකක් සැහැල්ලු.
  • වෘත්තීය සමිති සවිකිරීම - වර්තමාන බහු ගොනු පද්ධති (called ශාඛා තනි බහලුම යටතේ): නම් tree1අඩංගු fooහා tree2අඩංගු barඑවිට ඔවුන්ගේ වෘත්තීය සමිති දැක්ම දෙකම අඩංගු fooහා bar. නව ලිපිගොනු විශේෂිත ශාඛාවකට හෝ වඩාත් සංකීර්ණ නීතිරීති අනුව තෝරාගත් ශාඛාවකට ලියා ඇත. මෙම සංකල්පය ක්‍රියාත්මක කිරීම කිහිපයක් ඇත, ඒවා අතර:

ගොනු නාම සහ පාර-දත්ත වෙනස් කරන්න

  • ciopfs - සිද්ධි-සංවේදී නොවන ගොනු නම් (වින්ඩෝස් ගොනු පද්ධති සවි කිරීමට ප්‍රයෝජනවත් වේ)
  • convmvfs - අක්ෂර කට්ටල අතර ගොනු නාම පරිවර්තනය කරන්න ( උදාහරණ )
  • posixovl - VFAT වැනි වඩා සීමිත ගොනු පද්ධති මත යුනික්ස් ගොනු නාම සහ වෙනත් පාර-දත්ත (අවසර, හිමිකම,…) ගබඩා කරන්න ( උදාහරණ )

වෙනස් කළ ගොනු අන්තර්ගතයන් බලන්න

අන්තර්ගතය ගබඩා කර ඇති ආකාරය වෙනස් කරන්න

  • chironfs - බහු යටින් පවතින ගබඩාවලට ලිපිගොනු පිටපත් කරන්න ( නාමාවලි ගස් මට්ටමින් RAID-1 )
  • copyfs - ලිපිගොනු වල සියලුම අනුවාදවල පිටපත් තබා ගන්න
  • encfs - ගොනු සංකේතනය කරන්න
  • pcachefs - මන්දගාමී දුරස්ථ ගොනු පද්ධති සඳහා තැටියේ හැඹිලි ස්ථරය
  • simplecowfs - මතකයේ සපයා ඇති දර්ශනය හරහා වෙනස්කම් ගබඩා කර, මුල් ලිපිගොනු නොවෙනස්ව තබයි
  • wayback - ලිපිගොනු වල සියලුම සංස්කරණවල පිටපත් තබා ගන්න

2
systemd සමඟ එය කරන්නේ කෙසේද යන්න පිළිබඳ උදාහරණයක් එක් කිරීමට කෙනෙකුට අවශ්‍ය විය හැකිය: utcc.utoronto.ca/~cks/space/blog/linux/SystemdBindMountUnits
dothebart

1
මොකද කරන්නේ mount --bind /dir1 /dir1? සවිකිරීමේ ප්‍රභවය සහ ඉලක්කය වෙනස් වන අවස්ථාවෙන් එය වෙනස් වන්නේ කෙසේද?
මාක්

ලිනක්ස් 5.0 භාවිතා කරමින් / proc / self / mountinfo හි කිසිදු වාර්තාවක් මා දුටුවේ නැත. කර්නලය මට කියන්නේ නැහැ එය සවි කිරීම හෝ නැද්ද කියා. ක්‍රියාවලියකට පහසුවෙන් ක්‍රූට් බිඳ දැමිය හැකිය, හුදකලා කිරීම සිදු කළ යුත්තේ නාම අවකාශයෙනි.
炸鱼 薯条 德里克

Ix 炸鱼 薯条 the මම සිතන්නේ සම්බන්ධිත ප්‍රශ්නය unix.stackexchange.com/questions/295525/… ලිපින /proc/self/mountinfo. ක්‍රූට් සම්බන්ධයෙන් ගත් කල, එය හුදකලාව සඳහා භාවිතා කළ හැකි නමුත් එය තනිවම නොවේ. ඔබට නම් අවකාශයන් සවි කිරීමට අවශ්‍ය නැත : ගොනු පද්ධති නාම අවකාශය සඳහා chroot ප්‍රමාණවත් වේ. Chroot හි කිසිදු ක්‍රියාවලියක් chroot වලින් පිටත ක්‍රියාවලියක් ලෙස එකම පරිශීලකයෙකු ලෙස ක්‍රියාත්මක නොවන බවට ඔබ සහතික විය යුතුය.
ගිලෙස්ගේ SO- නපුරු වීම නවත්වන්න '

Ark මාක් බහලුමක් ඩිරෙක්ටරියක් තුළට සවි කිරීම එතරම් ප්‍රයෝජනවත් නොවේ. කිසියම් නාමාවලියක් යටතේ සවිකර ඇති ගොනු පද්ධති සැඟවීමට ඔබට එය භාවිතා කළ හැකි යැයි මම සිතමි, නමුත් මට එය විශේෂයෙන් කිරීමට අවශ්‍ය කාලයක් ගැන සිතිය නොහැක.
ගිලෙස්ගේ SO- නපුරු වීම නවත්වන්න '

-1

සරලයි, ඔබ බන්ධන සවිකිරීම භාවිතා කරන විට, ධාරක යන්ත්‍රයේ ගොනුවක් හෝ නාමාවලියක් බහාලුමක් තුළට සවි කර ඇති අතර එමඟින් ධාරක යන්ත්‍රයේ ගොනු නාමාවලිය තුළ සිදුවන ඕනෑම වෙනස්කමක් ස්වයංක්‍රීයව නාමාවලියෙහි බහාලුම තුළ ලබා ගත හැකිය.


2
එය බන්ධන සවිකිරීමක් භාවිතා කළ හැකි එක් ක්‍රමයකි, නමුත් බන්ධන සවිකිරීම් තමන් තුළම බහාලුම් සමඟ කිසිදු සම්බන්ධයක් නැත. මම එය මගේ පිළිතුරේ සඳහන් කරමි, නමුත් “බහාලුම්” වෙනුවට “බන්ධනාගාරය” යන නම යටතේ; “බහාලුම්” එකතු කිරීම වටිනා සංස්කරණයක් වනු ඇත (මම එය කරන්නෙමි). මෙය ද දුර්වල විස්තරයකි: වෙනත් ආකාරයකින් සඳහන් නොකර පිටත සිදු කරන ලද වෙනස්කම් ද ඇතුළත ඇති බව සඳහන් කරන්නේ ඇයි?
ගිලෙස්ගේ SO- නපුරු වීම නවත්වන්න '
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.