Uygulama

Stratis Linux İle Depolamaya Başlarken

Stratis, Red Hat tarafından geliştirilen ücretsiz ve açık kaynaklı bir depolama yönetim sistemidir. RHEL 8’den bu yana teknoloji önizlemesi olarak sunulan bu sürüm, dağıtımın 9.3 sürümünden itibaren tam destek kazandı ve Fedora’da da kullanılabiliyor. Stratis, BTRFS ve ZFS dosya sistemlerine entegre edilenlere benzer özellikler sağlamak için LUKS, cihaz eşleyici ve XFS dosya sistemi gibi mevcut depolama teknolojilerine güvenir. Bu eğitimde Stratis’in temel kavramlarını öğreniyoruz, bir Stratis havuzu ve Stratis tarafından yönetilen bir dosya sistemi oluşturuyoruz.

Temel Stratis kavramları

Stratis ile çalışırken üç temel bileşenle uğraşmak zorundayız: blok cihazları, havuzlar ve dosya sistemleri. Ham diskler veya bölümler gibi bir veya daha fazla blok aygıt, alan havuzları oluşturmak için bir araya getirilir. Dosya sistemleri bu havuzların içinde oluşturulur ve dosyaları yönetmek için kullanılır. Sabit bir boyutları yoktur ancak alan gerektikçe otomatik olarak büyütülürler. Stratis’in desteklediği tek dosya sistemi XFS’dir.

Stratis paketlerini yükleme

Açıkçası Stratis’in kendisi ext4 veya XFS gibi bir dosya sistemi değildir. Bunun yerine, LUKS ve Linux cihaz eşleyici gibi iyi bilinen ve savaşta test edilmiş teknolojileri kullanan ve işlemler arası iletişim (IPC) sistemi olarak D-bus’a dayanan, yüksek düzeyde bir depolama yönetim sistemidir. .

 



Stratis bir istemci-sunucu mimarisi kullanır: Rust’ta yazılmış bir arka plan programı (stratisd) ve Python’da yazılmış bir dizi istemci yardımcı programından oluşur. Her ikisini de aşağıdaki komutu çalıştırarak yükleyebiliriz: 

$ sudo dnf install stratisd stratis-cli

Paketlerin yüklenmesi stratisd arka plan programını otomatik olarak başlatmaz veya etkinleştirmez. Bunu manuel olarak yapmalıyız:

$ sudo systemctl enable --now stratisd

Stratis havuzu oluşturma

Bir Stratis havuzu, Stratis tarafından yönetilen tüm blok cihazlardan oluşur. Bir Stratis havuzuna eklenebilmesi için bir blok cihazın üzerinde bölümler veya dosya sistemi imzaları bulunmaması gerekir. Bir blok aygıtının “temiz” olduğundan emin olmak için, silme yardımcı programını kullanabiliriz. Aşağıdaki örnekte 20 GiB boyutunda /dev/vdb blok cihazı ile çalışıyoruz:

$ sudo wipefs -af /dev/vdb*

Blok cihazındaki tüm imzaları kaldırdıktan sonra, onu anında oluşturabileceğimiz Stratis havuzuna ekleyebiliriz:

$ sudo stratis pool create pool00 /dev/vdb

Havuz hatasız oluşturulmalıdır. Mevcut tüm depolama havuzlarını listelemek için şunu çalıştırabiliriz:

$ sudo stratis pool list

Bu durumda beklendiği gibi komut aşağıdaki çıktıyı döndürür:

Name              Total / Used / Free    Properties                                                                 UUID   Alerts
pool00   20 GiB / 534 MiB / 19.48 GiB   ~Ca,~Cr, Op   a06ca8a8-df69-41aa-987f-ab794c1f2c81

Stratis havuzunu şifreleme

Stratis Havuzu şifrelenebilir. Şifrelenmiş bir havuz oluşturmak için ilk olarak bir şifreleme anahtarı oluşturmamız gerekir:

$ sudo stratis key set --capture-key pool00-key

 



Anahtar oluştururken –capture-key veya –keyfile-path seçeneklerinden birinin kullanılması gerekmektedir. İkincisi, anahtarı/parolayı içeren bir dosyanın yolunu belirtmek için kullanılırken, ilki aynı bilgiyi etkileşimli olarak sağlamak için kullanılır. Örnekte –capture-key kullandığımızdan, anahtar veriyi/parolayı sağlamamız ve onaylamamız istenecektir. Mevcut anahtarlar çalıştırılarak listelenebilir: 

$ sudo stratis key list

Artık –key-desc seçeneği aracılığıyla önceki adımda oluşturduğumuz anahtara referans vererek şifrelenmiş havuzu oluşturabiliriz:

$ sudo stratis pool create --key-desc pool00-key pool00 /dev/vdb

Oluşturduğumuz anahtar çekirdek anahtarlığında saklanıyordu ve kalıcı değil; bu, havuzu başlatmadan ve kilidi açmadan önce her açılışta yeniden oluşturulması gerektiği anlamına gelir. Öncelikle anahtarı yeniden oluşturuyoruz, ardından –unlock-method seçeneği aracılığıyla anahtar depolama yöntemine (bu durumda “anahtarlık”) – bir Tang anahtar sunucusu da kullanılabilir) ve havuzun adına başvurarak havuzu başlatıyoruz. –name’in argümanı olarak:

$ sudo stratis key set --capture-key pool00-key
$ sudo stratis pool start --unlock-method keyring --name pool00

Tüm süreç, belki de anahtar içeriğin bir dosyaya kaydedilmesiyle otomatikleştirilebilir, ancak burada prosedürü ele almayacağız.

Stratis tarafından yönetilen bir dosya sistemi oluşturma

Bir Stratis havuzu oluşturup doldurduktan sonra, bundan bir dosya sistemi oluşturabiliriz. Stratis tarafından desteklenen tek uygun dosya sistemi XFS’dir. Daha önce de söylediğimiz gibi, Stratis tarafından yönetilen dosya sistemleri ölçülü provizyona sahiptir: ek alan gerektikçe otomatik olarak büyürler. Ancak oluşturma sırasında isteğe bağlı olarak dosya sistemi için bir başlangıç ​​boyutu ve –size ve –size-limit işaretleriyle sırasıyla bir boyut sınırı sağlayabiliriz.

Bir dosya sistemi oluştururken sağlamamız gereken tek zorunlu argüman, onu oluşturmak istediğimiz havuzun adı ve dosya sisteminin kendisi için kullanmak istediğimiz addır. Aşağıdaki örnekte, “pool00” havuzunda, başlangıç ​​boyutu 10 GiB olan, “foo” adında, Stratis tarafından yönetilen bir dosya sistemi oluşturuyoruz:

$ sudo stratis filesystem create --size 10GiB pool00 foo

Mevcut Stratis tarafından yönetilen dosya sistemlerini listelemek için aşağıdaki komutu çalıştırabiliriz:

$ sudo stratis filesystem list

Az önce oluşturduğumuz dosya sistemi yukarıdaki komutun çıktısında rapor edilmiştir:

Pool     Filesystem   Total / Used / Free / Limit         Created             Device                    UUID 
pool00   foo          10 GiB / 82 MiB / 9.92 GiB / None   Sep 16 2024 11:42   /dev/stratis/pool00/foo   5a58db3a-d4f4-4b56-b4e7-df70daf141f0

Dosya sistemini monte etmek için herhangi bir özel araca ihtiyacımız yok, örneğin:

$ sudo mount /dev/stratis/pool00/foo /mnt

Stratis tarafından yönetilen bir dosya sisteminin anlık görüntüsünü oluşturma ve geri yükleme

Anlık görüntüler sayesinde dosya sisteminin durumunu belirli bir zamanda dondurup kaydedebiliriz. Önceki örnekte, daha sonra /mnt’ye bağladığımız Stratis tarafından yönetilen bir dosya sistemi oluşturduk. Dosya sisteminin anlık görüntüsünü oluşturmak, çalıştırmak kadar kolaydır:

$ sudo stratis filesystem snapshot pool00 foo foo-snapshot0

 



Anlık görüntü oluşturmak için “snapshot” komutunu kullanırız ve şunları sağlarız: dosya sisteminin bulunduğu havuzun adı, dosya sistemi adı ve anlık görüntü için kullanmak istediğimiz ad. Anlık görüntü, kendi UUID’sine sahip başka bir dosya sistemidir: 

Pool     Filesystem      Total / Used / Free / Limit         Created           Device                              UUID 
pool00   foo             10 GiB / 82 MiB / 9.92 GiB / None   Sep 16 2024 11:42 /dev/stratis/pool00/foo             5a58db3a-d4f4-4b56-b4e7-df70daf141f0
pool00   foo-snapshot0   10 GiB / 82 MiB / 9.92 GiB / None   Sep 16 2024 11:52 /dev/stratis/pool00/foo-snapshot0   1615b07f-2345-4fa1-bbb5-25301f554422

Özel bir komutla kökenleriyle “birleştirilebilen” LVM anlık görüntüsünün aksine, bir Stratis anlık görüntüsünü “geri yüklemek” için, anlık görüntünün temel aldığı dosya sisteminin bağlantısını kesip kaldırırız, ardından anlık görüntünün yeni bir anlık görüntüsünü alırız ve orijinal dosya sistemi olarak adlandırın. Bu şekilde anlık görüntüyü kullanabilir ve aynı zamanda bir kopyasını saklayabiliriz. Bizim durumumuzda öncelikle “foo” dosya sisteminin bağlantısının kaldırıldığından emin oluyoruz:

$ sudo umount /dev/stratis/pool00/foo

Dosya sisteminin bağlantısı kesildiğinde onu yok etmek için şunu çalıştırabiliriz:

$ sudo stratis filesystem destroy pool00 foo

Bu noktada “foo-snapshot0”ın anlık görüntüsünü oluşturuyoruz ve onu orijinal dosya sistemi olarak “foo” olarak adlandırıyoruz:

$ sudo stratis filesystem snapshot pool00 foo-snapshot0 foo

 

 

Yazının orijinalini buradan okuyabilirsiniz.