Bosh sahifa Wiki File storage

File storage

File storage — ma’lumotni nomlangan fayllar va kataloglardan iborat ierarxik namespace’da saqlash modelidir. Application faylni path orqali ochadi, byte offset bo‘yicha o‘qiydi yoki yozadi va metadata bilan boshqaradi. Local filesystem, Network Attached Storage va distributed filesystem shu modelni taqdim etishi mumkin.

Namespace

Path rootdan kataloglar ketma-ketligi orqali faylga yetadi. Katalog nomlarni inode yoki boshqa internal identifierga bog‘laydi. Rename bir filesystem ichida atomic bo‘lishi mumkin; boshqa filesystemga ko‘chirish copy va delete amallariga aylanadi.

Hard link bir inodega bir nechta nom beradi, symbolic link esa boshqa pathga matnli reference saqlaydi. Symlink target mavjud bo‘lmasligi yoki directory chegarasidan chiqishi mumkin. User bergan path canonicalization va authorizationdan o‘tadi.

Fayl amallari

Process open orqali file descriptor oladi, read va write byte’larni qayta ishlaydi, close resursni bo‘shatadi. Random access offset bo‘yicha faylning kichik qismini o‘zgartiradi. Bu object storage’dagi to‘liq object overwrite modelidan muhim jihatdan ajraladi.

Buffered I/O system call sonini kamaytiradi. fsync dirty page’larni barqaror storagega chiqarishni talab qiladi, lekin hardware va filesystem durability semantikasi alohida. write muvaffaqiyati tok uzilganda data albatta saqlanganini har doim anglatmaydi.

Metadata va permission

Fayl metadata’siga owner, group, mode, timestamp, size va extended attribute kirishi mumkin. POSIX permission owner, group va others uchun read, write, execute bitlarini beradi. ACL ko‘proq subjectga alohida huquq beradi.

Directory execute biti uning ichidagi nomlarni traverse qilishga ruxsat beradi. File’ga read huquqi bo‘lsa ham parent katalogni traverse qilib bo‘lmasa path orqali ochib bo‘lmaydi. Effective permission group membership, ACL va mount optionlar bilan birga hisoblanadi.

Network file storage

NFS va SMB bir nechta clientga umumiy file namespace beradi. Network latency har metadata va small I/O amaliga ta’sir qiladi. Client cache performance’ni oshiradi, lekin boshqa client yozgan qiymatni qachon ko‘rish consistency protokoliga bog‘liq.

File locking advisory yoki mandatory bo‘lishi mumkin. Network uzilishida lease tugashi va lock recovery zarur. Application faqat local filesystemdagi lock semantikasini taxmin qilsa shared storage’da race yuz beradi.

Scale va failure

Katalogda millionlab fayl listing va metadata operationni sekinlashtirishi mumkin. Directory sharding yoki hash-based layout yukni ajratadi, biroq user-facing pathni murakkablashtiradi. Ko‘p mayda fayl data’dan ko‘ra inode va metadata joyini ko‘p sarflashi mumkin.

Distributed filesystem metadata server va data node’larni ajratishi mumkin. Replication yoki erasure coding disk va node xatosiga chidamlilik beradi. Metadata server high availability bo‘lmasa data bloklari mavjud bo‘lsa ham fayl nomlarini topib bo‘lmaydi.

File, block va object modeli

Block storage raw volume beradi; filesystem uning ustida katalog va file abstraksiyasini yaratadi. File storage clientga tayyor shared namespace beradi. Object storage key va HTTP API orqali immutablega yaqin object amallarini beradi.

Database kabi random update va POSIX semantics talab qiladigan workload file yoki block storagega mos bo‘lishi mumkin. Katta media, backup va global HTTP access object storagega mos. Tanlov latency, locking, sharing, scale va consistency talabiga asoslanadi.

Himoya va tiklash

Snapshot ma’lum vaqt nuqtasidagi filesystem holatini saqlaydi. U bir storage failure domainida bo‘lsa mustaqil backup emas. Backup boshqa tizim yoki regionda retention va restore testi bilan yuritiladi.

Ransomware mounted share’dagi fayl va snapshotlarga yetishi mumkin. Immutable backup, minimal write permission va alohida credential zarar doirasini kamaytiradi. Audit fayl yaratish, o‘zgartirish va permission almashuvini qayd etadi.

Bog‘liq tushunchalar

Filesystem, Directory, Inode, NFS, SMB, Block storage, Object storage