Bosh sahifa Wiki Shared folder

Shared folder

Shared folder — host tizimidagi katalogni virtual machine yoki container ichida ko‘rinadigan qilib ulash mexanizmidir. Development muhitida source code host editorda tahrirlanadi, guest esa shu fayllarni build yoki ishga tushirish uchun o‘qiydi. Mexanizm oddiy nusxa ko‘chirishdan farq qiladi: ikki tomon bir mantiqiy fayl to‘plamiga murojaat qiladi.

Amalga oshirish usullari

Virtualizatsiya platformasi maxsus filesystem driver orqali host katalogini guestga mount qilishi mumkin. VirtualBox shared folders, VMware shared folders va virtiofs shunday yondashuvlardir. Vagrant providerga qarab synced folder turini tanlaydi. Guest additions yoki tegishli kernel moduli bo‘lmasa mount ishlamasligi mumkin.

NFS va SMB tarmoq filesystem sifatida ham qo‘llanadi. NFS Unixga o‘xshash hostlarda, SMB esa Windows integratsiyasida keng tarqalgan. rsync usuli hostdan guestga davriy yoki trigger asosida bir tomonlama nusxa yuboradi; u haqiqiy real-time umumiy filesystem emas, lekin ko‘p kichik faylda tezroq bo‘lishi mumkin.

Fayl semantikasi

Host va guest turli filesystem qoidalariga ega bo‘lishi mumkin. Windows odatda filename caseiga kamroq sezgir, Linux esa Foo va foo ni alohida fayl deb biladi. Symlink, executable bit, ownership va extended attribute shared folderda to‘liq saqlanmasligi ehtimoli bor. Kod repositorysi bunday farqlarda turlicha ishlashi mumkin.

File locking va atomic rename ham providerga qarab farqlanadi. Database data directoryni shared folderga joylash tavsiya etilmaydigan holatlar ko‘p, chunki database fsync, locking va permission semantikasiga qat’iy tayanadi. Bunday ma’lumot guestning native virtual diskida saqlanadi.

Unumdorlik

Ko‘p kichik faylni stat qilish va katalogni yurish shared filesystemda katta overhead keltirishi mumkin. Node modules, vendor dependency yoki build cache kabi kataloglar host share ichida bo‘lsa install va compile sekinlashadi. Ularni guest ichidagi alohida volume da saqlab, faqat source codeni ulash odatiy yechimdir.

Caching rejimi tezlikni oshirishi mumkin, ammo host va guest bir vaqtda yozsa eskirgan ma’lumot xavfi paydo bo‘ladi. Consistency talabi development ish oqimiga mos tanlanadi. File watcher barcha providerda bir xil event olmaydi; polling fallback CPU sarfini oshiradi.

Ruxsatlar

Host user ID va guest user ID mos kelmasa fayl rootga tegishli ko‘rinishi yoki yozish rad etilishi mumkin. Mount option, UID/GID mapping yoki ACL orqali ruxsatlar moslashtiriladi. Hamma foydalanuvchiga 777 berish muammoni yashiradi va xavfsizlik hamda Git executable bitlarini buzadi.

SELinux yoki AppArmor policy mount qilingan katalogga kirishni cheklashi mumkin. Container bind mountda label option talab qilinishi ehtimol. Ruxsat xatosi faqat Unix mode bit bilan emas, host sharing permissioni va security module bilan birga tekshiriladi.

Xavfsizlik chegarasi

Shared folder guest izolyatsiyasida hostga ochilgan ko‘prikdir. Guest ichidagi zararli process yozish huquqi bo‘lsa host source code, SSH konfiguratsiyasi yoki boshqa faylni o‘zgartirishi mumkin. Faqat kerakli katalog ulash, read-only rejimdan foydalanish va home katalogni to‘liq bermaslik xavfni kamaytiradi.

Secret fayllar repository yonida bo‘lsa ular tasodifan guestga ham ko‘rinadi. Mount konfiguratsiyasi versiya nazoratida tekshiriladi, maxfiy qiymatlar alohida secret mexanizmi orqali beriladi.

Backup vositasi shared folderni ikki marta nusxalamasligi uchun host va guest backup doiralari kelishiladi.

Bog‘liq tushunchalar

Vagrant, Virtual machine, Mount, NFS, SMB, Bind mount, File permissions