Bosh sahifa Wiki Swift Object Storage

Swift Object Storage

Swift Object StorageOpenStack tarkibidagi taqsimlangan obyekt saqlash tizimi bo‘lib, katta hajmdagi fayllarni yagona katalog daraxtiga emas, hisob, konteyner va obyektlar ko‘rinishida saqlaydi. U odatda media fayllari, zaxira nusxalari, arxivlar hamda ilova yaratgan o‘zgarmas ma’lumotlar uchun qo‘llanadi.

Ma’lumot modeli

Swift iyerarxiyasining yuqori qatlami account hisoblanadi. Account ichida containerlar, container ichida esa objectlar joylashadi. Object nomi slash belgisini o‘z ichiga olishi mumkin, ammo bu haqiqiy fayl tizimi katalogi emas; nomning bir qismi xolos. Har bir object binar mazmun, nom va HTTP metadata sarlavhalaridan iborat.

Swift POSIX fayl tizimi kabi tasodifiy bloklarni joyida tahrirlashga mo‘ljallanmagan. Obyekt mazmuni o‘zgarsa, odatda u butunlay yangi nusxa bilan almashtiriladi. Shu sabab virtual mashina diski yoki tez-tez yangilanadigan database faylini Swiftga bevosita joylashtirish ko‘pincha to‘g‘ri tanlov emas.

Taqsimlangan arxitektura

Tizim proxy server va account, container hamda object serverlardan tashkil topadi. Proxy REST so‘rovini qabul qilib, kerakli saqlash tugunlarini aniqlaydi. Maxsus ring fayllari obyekt nomidan olingan hashni disk qurilmalari bilan bog‘laydi. Ring administrator belgilagan region, zone, server va disk topologiyasini hisobga oladi.

Ma’lumot bir nechta failure domain bo‘ylab replikatsiya qilinishi yoki erasure coding siyosati bilan saqlanishi mumkin. Replicator jarayonlari nusxalar orasidagi farqni tekshiradi, auditor buzilgan obyektlarni aniqlaydi, updaterlar esa vaqtincha bajarilmagan account va container hisoblarini tiklaydi. Tugun qisqa muddat ishlamasa ham proxy boshqa mavjud nusxadan javob bera oladi.

HTTP orqali ishlash

Swift API odatda token asosidagi autentifikatsiya bilan ishlaydi. Oddiy yuklash so‘rovi quyidagi shaklga ega:

PUT /v1/AUTH_project/backups/db-2026-07-16.tar.gz HTTP/1.1
X-Auth-Token: <token>
Content-Type: application/gzip

Yuklab olish GET, metadata olish HEAD, o‘chirish esa DELETE bilan bajariladi. Katta fayl segmentlarga ajratilib, Static Large Object yoki Dynamic Large Object mexanizmi orqali bitta mantiqiy obyekt sifatida ko‘rsatilishi mumkin. Temporary URL imzosi foydalanuvchiga doimiy credential bermasdan vaqtinchalik yuklash yoki o‘qish havolasini yaratadi.

Moslik va ekspluatatsiya

Swift API Amazon S3 API bilan aynan bir xil emas. Ba’zi OpenStack muhitlari S3 moslik qatlamini taklif qiladi, lekin headerlar, autentifikatsiya va ayrim imkoniyatlar farqlanishi mumkin. Ilova qaysi APIga tayanganini aniq qayd etishi kerak.

Amaliy boshqaruvda disk sig‘imi, replikatsiya kechikishi, unmounted disklar, auditor xatolari va HTTP javob kodlari kuzatiladi. Ringdagi vazn yoki qurilma o‘zgarsa, partitionlar bosqichma-bosqich qayta taqsimlanadi; birdan katta ko‘chirish tarmoq va disklarni band qilishi mumkin. Obyekt versiyalash, saqlash muddati, server-side encryption va o‘chirish siyosati tashkilot talabiga mos sozlanadi. Swift yuqori mavjudlik beradi, ammo alohida geografik zaxira va tiklash sinovining o‘rnini avtomatik ravishda bosmaydi.

Container listing juda ko‘p obyektli muhitda pagination bilan olinadi; object nomlarining mavjudligi database katalogidek murakkab query imkonini bermaydi. Ilova kerakli qidiruv indeksini alohida yuritishi mumkin. O‘chirilgan obyektning barcha replikalardan yo‘qolishi fon jarayonlariga bog‘liq bo‘lsa-da, API darajasidagi ruxsat darhol bekor qilinishi kerak. Capacity hisobida foydalanuvchi hajmiga replikatsiya yoki erasure coding overheadi ham qo‘shiladi.

Bog‘liq tushunchalar

OpenStack, Object storage, Swift ring, Replication, Erasure coding, REST API, Container, Failure domain