NILFS2 adalah sistem file antipeluru untuk /home

NILFS2 adalah sistem file antipeluru untuk /home

Seperti yang kalian ketahui, jika masalah bisa terjadi, pasti akan terjadi. Mungkin setiap orang pernah mengalami kasus ketika file penting terbaru terhapus secara tidak sengaja, atau teks secara tidak sengaja dipilih dan dimusnahkan di editor teks.

Jika Anda seorang hoster atau pemilik situs web, Anda mungkin pernah mengalami peretasan akun pengguna atau situs web Anda. Dalam kasus seperti ini, penting untuk mengembalikan kronologi, menemukan metode masuk dan kerentanan yang digunakan oleh penyerang.

Sistem file NILFS2 sangat cocok untuk memecahkan masalah seperti itu.

Telah hadir di kernel Linux sejak versi 2.6.30.

Keunikan sistem file ini adalah mirip dengan sistem kontrol versi: Anda selalu dapat mengembalikan status sistem dan melihat seperti apa beberapa waktu lalu.

Untuk menyediakan fungsionalitas ini, Anda tidak perlu mengonfigurasi skrip Cron, mengambil snapshot, dll. Sistem file NILFS2 melakukan semuanya dengan sendirinya. Itu tidak pernah menimpa data lama dan selalu menulis ke area baru pada disk jika ada cukup ruang disk kosong. Sesuai sepenuhnya dengan prinsip Copy-on-Write.

Faktanya, setiap perubahan pada file secara otomatis membuat snapshot baru dari sistem file, sehingga Anda dapat menggunakan FS ini sebagai mesin waktu dan memundurkan status file.

Cerita

NILFS2 adalah sistem file antipeluru untuk /homeNILFS2 dikembangkan secara mendalam Perusahaan Telegraf dan Telepon Nippon, sebenarnya adalah perusahaan milik negara (memiliki saham pengendali) dan perusahaan telekomunikasi terbesar di Jepang. Lebih khusus lagi, di Laboratorium CyberSpace di bawah kepemimpinan Ryusuke Konishi.

Untuk apa sebenarnya FS ini dikembangkan tidak diketahui, namun, dapat diasumsikan bahwa FS tersebut, dengan fungsi β€œmesin waktu” yang dimilikinya, sangat ideal untuk menyimpan data yang mungkin ingin digali oleh badan intelijen untuk memutar ulang gambaran keseluruhan dari FS tersebut. SMS, email, dll....

NILFS2 juga berpotensi menjadi alat yang sangat berharga untuk layanan keamanan internal, karena memungkinkan Anda memulihkan semua surat yang terhapus di basis data email, mengungkap kusen karyawan yang kemudian mencoba menyamarkannya dengan menghapus atau mengubah file mereka.

Bagaimana cara melacak seluruh riwayat korespondensi Anda?Di server Linux (dan di sinilah NILFS2 harus diinstal untuk tujuan keamanan internal), metode file penyimpanan email sangat sering digunakan untuk menyimpan pesan email. Yang disebut format Maildir. Cukup untuk dimasukkan Server Surat Kurir dan konfigurasikan penyimpanan email di Maildir. Format lainnya mbox adalah file teks besar yang dapat dengan mudah diuraikan menjadi pesan individual.

Jika server email menggunakan database, maka NILFS2 akan memungkinkan untuk memulihkan waktu yang tepat dari perubahan database dan kemampuan untuk memulihkan database pada saat-saat tersebut. Dan kemudian Anda perlu menggunakan alat database untuk melihat apa yang ada di dalamnya pada saat itu...

Namun, ada yang tidak beres. Entah pemerintah Jepang berubah pikiran tentang pemantauan semua orang (ala prinsip Yarovaya), atau kinerja NILFS2 pada HDD tradisional ternyata di bawah par, dan NILFS2 dirilis di bawah lisensi GPL dan dengan cepat memasuki kernel Linux, karena tidak ada keluhan khusus tentang kode yang ditulis dalam bahasa Jepang berkualitas tinggi, pengembang kernel Linux tidak memilikinya.

Seperti apa NILFS2 itu?

Dari sudut pandang penggunaan: pada sistem kontrol versi SVN. Setiap FS checkpoint merupakan commit yang dibuat secara otomatis tanpa sepengetahuan pengguna setiap kali ada perubahan: baik itu penghapusan, perubahan isi file atau perubahan hak akses. Setiap komit memiliki angka yang meningkat secara linier.

Dari sudut pandang programmer: buffer melingkar. Sistem file mengumpulkan perubahan dan menuliskannya ke dalam potongan yang berukuran sekitar 8 MB (2000 * 4096, di mana 2000 adalah jumlah elemen dalam blok dan 4096 adalah ukuran halaman memori). Seluruh disk dibagi menjadi beberapa bagian. Perekaman berlangsung secara berurutan. Ketika ruang kosong habis, snapshot terlama akan dihapus dan potongannya akan ditimpa.

Barang dasar NILFS2

  • Pembuatan versi!!!
  • Prosedur untuk memulihkan sistem file setelah kegagalan sederhana: saat memuat, potongan terakhir yang memiliki checksum yang benar dicari, dan superblock diinstal di dalamnya. Ini adalah operasi yang hampir instan.
  • Karena pencatatan selalu berlangsung linier, maka:
    • dapat menunjukkan hasil yang baik ketika dijalankan pada SSD dengan penulisan acak yang lambat.
    • NILFS2 menghemat sumber daya SSD, karena hampir tidak ada faktor perkalian tulis.
      Lebih tepatnya, tidak lebih dari 2.Faktanya adalah ketika menulis ulang seluruh disk secara siklis, NILFS2 akan mentransfer data yang tidak dapat diubah ke bagian (potongan) baru.

      Jika kita memiliki 10% data yang tidak berubah pada disk, maka kita akan mendapatkan peningkatan penulisan 10% dengan 1 penulisan ulang selesai. Ya, peningkatan 50% pada kepenuhan 50% perangkat untuk 1 penulisan ulang disk secara lengkap.

      Keuntungan penulisan maksimum adalah 2. Ini sangat rendah mengingat semuanya ditulis secara berurutan. Secara umum, animasi penulisan akan lebih kecil dibandingkan dengan sistem file terfragmentasi konvensional dengan sektor 4096-byte. (Pemikiran terinspirasi oleh komentar).

  • Potensi kemudahan implementasi replikasi ke NILFS2 FS jarak jauh

NILFS2 untuk /home

Dalam sistem operasi mirip Unix, biasanya terdapat folder /home tempat data pengguna disimpan. Berbagai program menyimpan pengaturan khusus penggunanya di folder ini.

Dan siapa, jika bukan pengguna, yang paling sering melakukan kesalahan? Oleh karena itu, seperti yang mereka katakan, Tuhan sendiri yang memerintahkan penggunaan NILFS2 di /home.

Terlebih lagi, dengan meluasnya penggunaan SSD, kini kita tidak perlu lagi khawatir akan drawdown yang parah saat menggunakan sistem file Kontrak Karya.

Ya, kami dapat membuat snapshot FS sesering yang kami suka di ZFS dan BTRFS, namun selalu ada risiko bahwa perubahan file yang hilang akan terjadi di antara snapshot tersebut. Dan gambar-gambar itu masih perlu dikelola: yang lama perlu dihapus. Di NILFS2, semua ini terjadi secara otomatis, setiap beberapa detik.

Saya membuat volume logis menggunakan lvcreate (di grup volume nvme, kumpulan tipis tipis). Saya sarankan membuatnya pada volume lvm, karena nanti dapat diperluas dengan mudah. Saya merekomendasikan memiliki 50% ruang disk kosong dengan NILFS2 untuk kedalaman versi yang layak.

lvcreate -V10G -T nvme/thin -n home

dan memformatnya dalam NILFS2:

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 !!

Setelah ini, Anda perlu menyalin semua data dari /home saat ini.

Saya melakukan ini segera setelah komputer melakukan booting, sebelum masuk ke akun saya, sebagai pengguna root. Jika saya masuk sebagai pengguna saya, beberapa program akan membuka soket dan file di folder /home/user pengguna saya, yang akan membuat penyalinan bersih menjadi sulit. Seperti yang Anda ketahui, folder home untuk pengguna root biasanya terletak di jalur /root, sehingga tidak ada file yang terbuka di partisi /home.

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

Untuk baris terakhir, lihat sebuah artikel.

Selanjutnya kita edit /etc/fstab, dimana sistem file untuk /home di-mount, ke

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

Pilihan noatime diperlukan untuk meningkatkan kinerja sehingga waktu tidak berubah dengan setiap akses file. Selanjutnya kita reboot.

Jenis gambar di NILFS2.

Snapshot biasa tanpa kekebalan terhadap penghapusan disebut pos pemeriksaan atau titik pemulihan.
Snapshot yang dilindungi dari penghapusan otomatis disebut snapshot, kemudian hanya snapshot.

Melihat pos pemeriksaan dilakukan dengan menggunakan perintah lscp

Lihat cuplikan lscp -s

Kita dapat membuat snapshot dan pos pemeriksaan sendiri kapan saja menggunakan:

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

Kami memulihkan data.

NILFS memungkinkan kita memasang snapshot lama sebanyak yang kita inginkan secara paralel dengan bekerja dengan cabang FS utama. Tapi hanya dalam mode baca.

Semuanya diatur seperti ini. Pos pemeriksaan reguler yang dibuat NILFS2 dapat dihapus secara otomatis kapan saja (ketika ruang disk habis atau sesuai dengan aturan nilfs_cleanerd), jadi sebelum instalasi kita harus mengubah pos pemeriksaan tersebut menjadi snapshot atau, dalam bahasa Rusia, menangkap snapshot tersebut.

chcp ss Π½ΠΎΠΌΠ΅Ρ€_Ρ‡Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚Π°

Setelah itu kita bisa mount snapshotnya, misalnya seperti ini:

mount -t nilfs2 -r -o cp=Π½ΠΎΠΌΠ΅Ρ€_Ρ‡Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚Π° /dev/nvme/home /mnt/nilfs/Π½ΠΎΠΌΠ΅Ρ€_Ρ‡Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚Π°

Setelah itu kami menyalin file yang dipulihkan dari snapshot ke/home.
Dan selanjutnya kami menghapus tanda non-penghapusan dari snapshot sehingga di masa depan pengumpul sampah otomatis dapat menghapus data yang sudah ketinggalan zaman:

chcp cp Π½ΠΎΠΌΠ΅Ρ€_Ρ‡Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚Π°

Utilitas untuk NILFS2

Tapi inilah masalahnya. Ya, tentu saja, kita dapat membuat sistem file, mengubah ukurannya secara online, melihat daftar poin tantangan, membuat dan menghapusnya. Paket nilfs2-utils menyediakan set pria minimal.

Karena NTT telah membatasi pendanaannya, tidak ada utilitas tingkat rendah yang memungkinkan Anda menampilkan riwayat perubahan file atau membuat perbedaan antar snapshot.

Utilitas n2u saya

Untuk mengisi kekosongan ini saya menulis utilitas n2u Anda, yang dapat menampilkan riwayat perubahan pada file/direktori tertentu:

n2u log filename

Outputnya adalah seperti ini:

          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

Ia bekerja cukup cepat untuk metode implementasi yang dipilih: ia mencari perbedaan antara file menggunakan metode bagi dua, dengan cepat memasang dan membandingkan file/direktori dalam snapshot yang berbeda.

Anda dapat mengatur berbagai pos pemeriksaan menggunakan kunci tersebut -cp CP1:CP2 ΠΈΠ»ΠΈ -cp {YEAR-MM-DD}:{YEAR-MM-DD}.

Anda juga dapat melihat perbedaan antara pos pemeriksaan untuk file atau direktori tertentu:

n2u diff -r cp1:cp2 filename

Anda dapat menampilkan seluruh kronologi perubahan: semua perbedaan antara pos pemeriksaan file/direktori tertentu:

n2u blame [-r cp1:cp2] filename

Interval tanggal dalam perintah ini juga didukung.

Seruan untuk para pengembang

Ada banyak spesialis di HabrΓ©. Silakan selesaikan NILFS2. Buat replikasi, perbedaan cepat tingkat rendah antara revisi, reflink, dan barang lainnya!

referensi

Situs web resmi NILFS.

Repositori:
NILFS2.
Utilitas dan modul NILFS2.

Buletin:
Buletin email untuk pengembang NILFS2. ID untuk berlangganan linux-nilfs.
Arsip buletin.

panduan pengaturan nilfs_cleanerd.
Membandingkan Tes Kinerja EXT4, Btrfs, XFS & NILFS2.

агодарности:

  • Pengembang NILFS2: Ryusuke Konishi, Koji Sato, Naruhiko Kamimura, Seiji Kihara, Yoshiji Amagai, Hisashi Hifumi dan Satoshi Moriai. Kontributor utama lainnya adalah: Andreas Rohner, Dan McGee, David Arendt, David Smid, dexen deVries, Dmitry Smirnov, Eric Sandeen, Jiro SEKIBA, Matteo Frigo, Hitoshi Mitake, Takashi Iwai, Vyacheslav Dubeyko.
  • Kepada Amblin Entertainment dan Universal Pictures untuk serangkaian film yang luar biasa. "Kembali ke masa depan". Gambar pertama postingan diambil dari film β€œBack to the Future 3”.
  • Perusahaan RUVDS untuk dukungan dan kesempatan untuk mempublikasikan di blog Anda di HabrΓ©.

PS Silakan kirimkan kesalahan apa pun yang Anda lihat melalui pesan pribadi. Saya meningkatkan karma saya untuk ini.

Anda dapat bereksperimen dengan NILFS2 dengan memesan mesin virtual dari RUVDS dengan kupon di bawah ini. Untuk semua klien baru ada masa uji coba gratis selama 3 hari.

NILFS2 adalah sistem file antipeluru untuk /home

Sumber: www.habr.com

Tambah komentar