NILFS2 - /home için kurşun geçirmez bir dosya sistemi

NILFS2 - /home için kurşun geçirmez bir dosya sistemi

Bildiğiniz gibi eğer bir sorun olacaksa mutlaka olacaktır. Muhtemelen herkes, son zamanlarda önemli bir dosyanın yanlışlıkla silindiği veya bir metnin yanlışlıkla seçilip bir metin düzenleyicide yok edildiği durumlar olmuştur.

Barındırıcı veya web sitesi sahibiyseniz, muhtemelen kullanıcı hesaplarının veya web sitenizin hacklenmesiyle karşılaşmışsınızdır. Bu gibi durumlarda kronolojiyi geri yüklemek, giriş yöntemini ve saldırganın kullandığı güvenlik açığını bulmak önemlidir.

NILFS2 dosya sistemi bu tür sorunları çözmek için mükemmeldir.

Linux çekirdeğinde 2.6.30 sürümünden beri mevcuttur.

Bu dosya sisteminin özelliği, sürüm kontrol sistemine benzer olmasıdır: sistemin durumunu her zaman geri alabilir ve bir süre önce nasıl olduğuna bakabilirsiniz.

Bu işlevselliği sağlamak için Cron komut dosyalarını yapılandırmanıza, anlık görüntüler almanıza vb. gerek yoktur. NILFS2 dosya sistemi bunu tek başına yapar. Hiçbir zaman eski verilerin üzerine yazmaz ve yeterli boş disk alanı varsa her zaman diskin yeni alanlarına yazar. Yazıldığında Kopyala ilkesine tam uygun olarak.

Aslında, bir dosyada yapılan herhangi bir değişiklik otomatik olarak dosya sisteminin yeni bir anlık görüntüsünü oluşturur, böylece bu FS'yi bir zaman makinesi olarak kullanabilir ve dosyaların durumunu geri sarabilirsiniz.

Öykü

NILFS2 - /home için kurşun geçirmez bir dosya sistemiNILFS2 derinliklerinde geliştirildi Nippon Telgraf ve Telefon Şirketiaslında devlete ait (kontrol hissesine sahip) ve Japonya'nın en büyük telekomünikasyon şirketi. Daha spesifik olarak, SiberUzay Laboratuvarlarında liderliğinde Ryusuke Konishi.

Tam olarak ne için geliştirildiği bilinmiyor ancak "zaman makinesi" işlevine sahip böyle bir FS'nin, istihbarat servislerinin olayın tüm resmini yeniden oynatmak için kazmak isteyebileceği verileri depolamak için ideal olduğu varsayılabilir. SMS, e-posta vb.

NILFS2 aynı zamanda dahili güvenlik hizmetleri için de potansiyel olarak çok değerli bir araçtır, çünkü posta veritabanındaki silinmiş tüm mektupları kurtarmanıza olanak tanır ve daha sonra dosyalarını silerek veya değiştirerek onları gizlemeye çalışabilecek çalışanların pervazlarını ortaya çıkarır.

Tüm yazışma geçmişinizi nasıl takip edebilirsiniz?Linux sunucularında (ve dahili güvenlik amacıyla NILFS2'nin kurulması gereken yer burasıdır), e-posta mesajlarını depolamak için sıklıkla e-postaları depolamaya yönelik dosya yöntemi kullanılır. Biçim olarak adlandırılan Maildir. koymak yeterli Kurye Posta Sunucusu ve Maildir'de posta depolama alanını yapılandırın. Diğer format m kutusu kolayca bireysel mesajlara ayrıştırılabilen büyük bir metin dosyasıdır.

Posta sunucusu bir veritabanı kullanıyorsa, NILFS2, veritabanı değişikliklerinin tam zamanlamasını ve bu anlardan herhangi birinde veritabanını geri yükleme yeteneğini geri yüklemeyi mümkün kılacaktır. Daha sonra o anda içinde ne olduğunu görmek için veritabanı araçlarını kullanmanız gerekir...

Ancak bir şeyler ters gitti. Ya Japon hükümeti herkesi izleme konusundaki fikrini değiştirdi (Yarovaya ilkesi gibi) ya da NILFS2'nin geleneksel HDD'lerdeki performansı ortalamanın altında çıktı ve NILFS2, GPL lisansı altında piyasaya sürüldü ve çok hızlı bir şekilde Linux çekirdeğine girdi. Yüksek nitelikli Japonca yazılan kodla ilgili özel bir şikayet yoktu, Linux çekirdeğinin geliştiricileri buna sahip değildi.

NILFS2 nasıl bir şey?

Kullanım açısından: bir sürüm kontrol sistemi üzerinde SVN. Her FS kontrol noktası, herhangi bir değişiklik olduğunda kullanıcının bilgisi olmadan otomatik olarak yapılan bir taahhüttür: silme, bir dosyanın içeriğini değiştirme veya erişim haklarını değiştirme. Her taahhütte doğrusal olarak artan bir sayı bulunur.

Bir programcının bakış açısından: dairesel bir tampon. Dosya sistemi değişiklikleri biriktirir ve bunları yaklaşık 8 MB'a eşit bir yığına yazar (2000 * 4096; burada 2000, bloktaki öğelerin sayısı ve 4096, bellek sayfasının boyutudur). Diskin tamamı bu parçalara bölünmüştür. Kayıt sırayla devam eder. Boş alan dolduğunda en eski anlık görüntüler silinir ve parçaların üzerine yazılır.

Temel NILFS2 güzellikleri

  • Sürüm oluşturma!!!
  • Bir arızadan sonra dosya sistemini geri yükleme prosedürü basittir: Yükleme sırasında doğru sağlama toplamına sahip son parça aranır ve üzerine bir süper blok yüklenir. Bu neredeyse anlık bir işlemdir.
  • Kaydın her zaman doğrusal olarak ilerlemesi nedeniyle:
    • yavaş rastgele yazma işlemleriyle bir SSD üzerinde çalışırken iyi sonuçlar gösterebilir.
    • NILFS2, neredeyse hiç yazma çarpım faktörü olmadığından SSD kaynağından tasarruf sağlar.
      Daha doğrusu 2'den fazla değil.Gerçek şu ki, tüm diski döngüsel olarak yeniden yazarken, NILFS2 değiştirilemez verileri yeni parçalara (parçalara) aktaracaktır.

      Diskte %10 değişmeyen veri varsa, 10 tam yeniden yazma ile %1 yazma artışı elde ederiz. Diskin 50 kez tamamen yeniden yazılması için cihazın %50 doluluğunda %1 artış.

      Maksimum yazma kazancı 2'dir. Her şeyin sırayla yazıldığı düşünüldüğünde bu çok düşüktür. Genel olarak yazma animasyonu, 4096 baytlık sektöre sahip geleneksel parçalanmış dosya sisteminden daha az olacaktır. (Düşünceden ilham aldım Yorum).

  • Uzak bir NILFS2 FS'ye çoğaltmanın potansiyel uygulama kolaylığı

/ev için NILFS2

Unix benzeri işletim sistemlerinde kural olarak kullanıcı verilerinin saklandığı bir /home klasörü bulunur. Çeşitli programlar kullanıcıya özel ayarlarını bu klasöre kaydeder.

Peki kullanıcılar değilse bile en sık kim hata yapar? Bu nedenle, dedikleri gibi, NILFS2'nin /home'da kullanılmasını bizzat Tanrı emretti.

Üstelik SSD'lerin yaygın kullanımıyla artık CoW dosya sistemlerini kullanırken ciddi dezavantajlar konusunda endişelenmemize gerek yok.

Evet, ZFS ve BTRFS'de istediğimiz sıklıkta FS snapshot'ları oluşturabiliyoruz ancak snapshot'ların arasında kaybolan bir dosya değişikliğinin ortaya çıkma riski her zaman var. Ve resimlerin hâlâ yönetilmesi gerekiyor: eskilerin silinmesi gerekiyor. NILFS2'de tüm bunlar otomatik olarak, kelimenin tam anlamıyla birkaç saniyede bir gerçekleşir.

Lvcreate kullanarak mantıksal bir birim oluşturdum (nvme birim grubunda ince havuz). Daha sonra kolayca genişletilebileceği için lvm biriminde oluşturmanızı öneririm. Uygun sürüm derinliği için NILFS50 ile %2 boş disk alanına sahip olmanızı öneririm.

lvcreate -V10G -T nvme/thin -n home

ve NILFS2'de biçimlendirdim:

mkfs.nilfs2 -L nvme_home /dev/nvme/home

mkfs.nilfs2 (nilfs-utils 2.1.5)
Start writing file system initial data to the device
      Blocksize:4096  Device:/dev/nvme/home1  Device Size:10737418240
File system initialization succeeded !!

Bundan sonra, mevcut /home'daki tüm verileri kopyalamanız gerekir.

Bunu bilgisayarı başlattıktan hemen sonra, kök kullanıcı olarak hesabıma giriş yapmadan önce yaptım. Kullanıcı olarak oturum açsaydım, bazı programlar kullanıcımın /home/user klasöründeki yuvaları ve dosyaları açardı, bu da temiz bir kopyayı zorlaştırırdı. Bildiğiniz gibi root kullanıcısının home klasörü genellikle /root yolunda bulunur, dolayısıyla /home bölümünde hiçbir dosya açılmaz.

mkdir /mnt/newhome
mount -t nilfs2 /dev/nvme/home /mnt/newhome
cp -a /home/. /mnt/newhome

Son satır için bkz. Makale.

Daha sonra /home dosya sisteminin bağlı olduğu /etc/fstab dosyasını düzenleyeceğiz.

/dev/disk/by-label/nvme_home /home nilfs2    noatime 0 0

Seçenek noatime Her dosya erişiminde atime'ın değişmemesi için performansı artırmak gerekiyor. Daha sonra yeniden başlatıyoruz.

NILFS2'deki görüntü türleri.

Silinmeye karşı bağışıklığı olmayan normal bir anlık görüntüye denetim noktası veya kurtarma noktası adı verilir.
Otomatik silinmeye karşı korunan anlık görüntüye anlık görüntü adı verilir, daha sonra yalnızca anlık görüntü denir.

Kontrol noktalarını görüntülemek lscp komutu kullanılarak yapılır

Anlık görüntüleri görüntüle lscp -s

Aşağıdakileri kullanarak istediğimiz zaman kendimiz anlık görüntüler ve kontrol noktaları oluşturabiliriz:

mkcp [-s] устройство

Verileri geri yüklüyoruz.

NILFS, ana FS şubesiyle çalışmaya paralel olarak istediğimiz kadar eski anlık görüntüyü bağlamamıza olanak tanır. Ancak yalnızca okuma modunda.

Her şey bu şekilde düzenlenmiştir. NILFS2'nin oluşturduğu düzenli kontrol noktaları herhangi bir zamanda otomatik olarak silinebilir (disk alanı bittiğinde veya nilfs_cleanerd kurallarına göre), bu nedenle kurulumdan önce kontrol noktasını anlık görüntüye dönüştürmemiz veya Rusça konuşursak anlık görüntüyü yakalamamız gerekir.

chcp ss номер_чекпоинта

Bundan sonra anlık görüntüyü örneğin şu şekilde monte edebiliriz:

mount -t nilfs2 -r -o cp=номер_чекпоинта /dev/nvme/home /mnt/nilfs/номер_чекпоинта

Bundan sonra geri yüklenen dosyaları anlık görüntüden /home'a ​​kopyalıyoruz.
Daha sonra anlık görüntüden silinemez bayrağını kaldırıyoruz, böylece gelecekte otomatik çöp toplayıcı güncelliğini kaybetmiş verileri kaldırabilir:

chcp cp номер_чекпоинта

NILFS2 için yardımcı programlar

Ama sorun bu. Evet, elbette bir dosya sistemi oluşturabilir, boyutunu çevrimiçi olarak değiştirebilir, mücadele noktaları listesini görüntüleyebilir, oluşturup silebiliriz. nilfs2-utils paketi minimal bir centilmen seti sağlar.

NTT finansmanını kısıtladığından, dosya değişikliklerinin geçmişini görüntülemenize veya anlık görüntüler arasında fark yaratmanıza olanak tanıyan hızlı, düşük seviyeli yardımcı programlar yoktur.

N2u yardımcı programım

Bu boşluğu doldurmak için yazdım n2u yardımcı programınızBelirli bir dosya/dizinde yapılan değişikliklerin geçmişini görüntüleyebilen:

n2u log filename

Çıktı şöyle bir şeydir:

          CHECKPOINT        DATE     TIME     TYPE          SIZE  MODE
             1787552  2019-11-24 22:08:00    first          7079    cp
             1792659  2019-11-25 23:09:05  changed          7081    cp

Seçilen uygulama yöntemi için oldukça hızlı çalışır: ikiye bölme yöntemini kullanarak dosyalar arasındaki farkları arar, dosyayı/dizini hızlı bir şekilde monte eder ve farklı anlık görüntülerde karşılaştırır.

tuşunu kullanarak bir dizi kontrol noktası ayarlayabilirsiniz. -cp CP1:CP2 veya -cp {YEAR-MM-DD}:{YEAR-MM-DD}.

Belirli bir dosya veya dizin için kontrol noktaları arasındaki farkı da görebilirsiniz:

n2u diff -r cp1:cp2 filename

Değişikliklerin tüm kronolojisini görüntüleyebilirsiniz: belirli bir dosyanın/dizinin kontrol noktaları arasındaki tüm farklar:

n2u blame [-r cp1:cp2] filename

Bu komuttaki tarih aralığı da desteklenmektedir.

Geliştiricilere bir çığlık

Habré'de çok sayıda uzman var. Lütfen NILFS2'yi bitirin. Çoğaltma, revizyonlar arasında düşük seviyeli hızlı fark, yeniden bağlantı ve diğer güzellikler yapın!

referanslar

Resmi NILFS web sitesi.

Depolar:
NILFS2.
NILFS2 yardımcı programları ve modülleri.

Bültenler:
NILFS2 geliştiricileri için e-posta bülteni. Linux-nilfs aboneliği kimliği.
Bülten arşivi.

nilfs_cleanerd kurulum kılavuzu.
EXT4, Btrfs, XFS ve NILFS2 Performans Testlerinin Kıyaslanması.

Teşekkür:

  • NILFS2 geliştiricileri: Ryusuke Konishi, Koji Sato, Naruhiko Kamimura, Seiji Kihara, Yoshiji Amagai, Hisashi Hifumi ve Satoshi Moriai. Katkıda bulunan diğer önemli kişiler şunlardır: Andreas Rohner, Dan McGee, David Arendt, David Smid, dexen deVries, Dmitry Smirnov, Eric Sandeen, Jiro SEKIBA, Matteo Frigo, Hitoshi Mitake, Takashi Iwai, Vyacheslav Dubeyko.
  • Harika bir film serisi için Amblin Entertainment ve Universal Pictures'a. "Geleceğe Dönüş". Gönderinin ilk fotoğrafı “Geleceğe Dönüş 3” filminden çekildi.
  • şirket RUVDS Destek ve Habré'deki blogunuzda yayınlama fırsatı için.

PS Lütfen fark ettiğiniz hataları özel mesajla gönderin. Bunun için karmamı artırıyorum.

NILFS2'yi şuradan bir sanal makine sipariş ederek deneyebilirsiniz: RUVDS aşağıdaki kuponla. Tüm yeni müşteriler için 3 günlük ücretsiz deneme süresi vardır.

NILFS2 - /home için kurşun geçirmez bir dosya sistemi

Kaynak: habr.com

Yorum ekle