
Seperti yang Anda tahu, jika masalah bisa terjadi, maka itu akan terjadi. Mungkin, semua orang memiliki kasus ketika file penting baru terhapus secara tidak sengaja, atau teks dalam editor teks secara tidak sengaja dipilih dan dihapus.
Jika Anda adalah hoster atau pemilik situs, maka Anda mungkin menghadapi peretasan akun pengguna atau situs Anda. Dalam kasus seperti itu, penting untuk mengembalikan kronologi, menemukan cara penetrasi dan kerentanan yang digunakan penyerang.
Untuk mengatasi masalah seperti itu, sistem file NILFS2 sempurna.
Telah hadir di kernel Linux sejak versi 2.6.30.
Fitur dari sistem file ini adalah mirip dengan sistem kontrol versi: Anda selalu dapat memutar kembali kondisi sistem dan melihat seperti apa beberapa waktu lalu.
Untuk menyediakan fungsionalitas ini, Anda tidak perlu mengonfigurasi skrip Cron, membuat snapshot, dll. Sistem file NILFS2 melakukan ini dengan sendirinya. Dia tidak pernah menimpa data lama dan selalu menulis ke area baru disk jika ada cukup ruang disk kosong. Sesuai sepenuhnya dengan prinsip Copy-on-Write.
Faktanya, setiap perubahan pada file memerlukan pembuatan otomatis snapshot baru dari sistem file, sehingga Anda dapat menggunakan sistem file ini sebagai mesin waktu dan memundurkan status file.
Ceritanya

NILFS2 dikembangkan di perut
Nippon Telegraph dan Telephone Corporation , pada kenyataannya, negara (memiliki saham pengendali) dan perusahaan telekomunikasi terbesar di Jepang. Lebih khusus lagi, Laboratorium CyberSpace dipimpin oleh
Ryusuke Konishi .
Mengapa ini dikembangkan secara khusus - tidak diketahui, namun, dapat diasumsikan bahwa FS seperti itu, dengan fungsionalitas "mesin waktu", sangat ideal untuk menyimpan data di mana Anda mungkin ingin menggali lebih dalam ke layanan khusus untuk memutar ulang seluruh gambar SMS, email, dll.
NILFS2 juga, berpotensi, alat yang sangat berharga untuk layanan keamanan internal, karena memungkinkan Anda untuk memulihkan semua surat yang dihapus dalam basis data surat, membuka tiang-tiang karyawan yang kemudian dapat mencoba menyamarkan mereka dengan menghapus atau mengubah file mereka.
Bagaimana saya bisa melacak seluruh sejarah korespondensiDi Linux, di server (dan ada baiknya menempatkan NILFS2 di sana untuk tujuan keamanan internal), metode file untuk menyimpan email sering digunakan untuk menyimpan pesan email. Format yang disebut
Maildir . Cukup menginstal
Server Surat Kurir dan mengkonfigurasi penyimpanan surat di Maildir. Format
mbox lainnya adalah file teks besar yang mudah diurai menjadi pesan individual.
Jika server email menggunakan basis data, maka NILFS2 akan memungkinkan untuk mengembalikan waktu yang tepat dari perubahan basis data dan kemampuan untuk memulihkan basis data pada titik-titik ini. Dan kemudian Anda perlu menggunakan alat basis data untuk melihat apa yang ada di dalamnya pada saat itu ...
Namun, ada yang tidak beres. Entah pemerintah Jepang memutuskan untuk tidak mengikuti semua orang (prinsip a la Yarovaya), atau kinerja NILFS2 pada HDD tradisional ternyata lebih rendah daripada alas tiang, dan NILFS2 dirilis di bawah lisensi GPL dan dengan cepat memasuki kernel Linux, karena ada keluhan khusus tentang kode yang dituliskan sangat terampil Jepang, pengembang kernel Linux tidak punya.
Seperti apa NILFS2?
Dari sudut pandang penggunaan: pada sistem kontrol versi
SVN . Setiap pos pemeriksaan FS adalah komit yang dibuat secara otomatis tanpa sepengetahuan pengguna pada perubahan apa pun: apakah menghapus, mengubah isi file atau hak akses. Setiap komit memiliki angka yang meningkat secara linear.
Dari sudut pandang programmer: pada buffer melingkar. Sistem file menyimpan perubahan dan menulisnya ke bagian yang sama dengan sekitar 8 MB (2048 * 4096, di mana 2048 adalah jumlah elemen dalam blok, dan 4096 adalah ukuran halaman memori). Seluruh disk dibagi menjadi potongan-potongan seperti itu. Rekaman dalam urutan. Ketika ruang kosong habis, gambar tertua dihapus, dan potongan ditimpa.
Basic NILFS2 Buns
- Versi !!!
- Prosedur untuk memulihkan sistem file setelah kegagalan adalah dasar: ketika memuat, ia mencari potongan terakhir yang memiliki checksum yang benar dan menginstal superblock di atasnya. Ini hampir merupakan operasi instan.
- Karena fakta bahwa rekaman selalu berjalan secara linear, maka:
- dapat menunjukkan hasil yang baik saat bekerja pada SSD, dengan perekaman acak yang lambat.
- NILFS2 menghemat sumber daya SSD karena hampir tidak ada pengganda rekaman.
Lebih tepatnya, tidak lebih dari 2.Faktanya adalah bahwa selama penulisan ulang siklik dari seluruh disk, NILFS2 akan mentransfer data yang tidak dapat diubah ke bagian baru (potongan).
Jika kami memiliki 10% data yang tidak berubah pada disk, maka kami akan mendapatkan peningkatan 10% dalam perekaman dengan 1 penulisan ulang penuh. Nah, peningkatan 50% dengan perangkat penuh 50% untuk 1 penulisan ulang penuh disk.
Gain perekaman maksimum adalah 2. Ini sangat kecil mengingat semuanya ditulis secara berurutan. Secara umum, animasi catatan akan kurang dari sistem file terfragmentasi biasa dengan sektor 4096 byte. (Mengomentari pikiran).
- Potensi kemudahan replikasi ke NILFS2 FS jarak jauh
NILFS2 untuk / rumah
Dalam sistem operasi mirip Unix, sebagai aturan, ada folder / home tempat data pengguna disimpan. Berbagai program menyimpan pengaturannya terkait dengan pengguna tertentu dalam folder ini.
Dan siapa, jika bukan pengguna, paling sering memotong? Karena itu, seperti yang mereka katakan, Tuhan sendiri memerintahkan untuk menggunakan NILFS2 di / rumah.
Terlebih lagi, dengan penyebaran SSD yang luas, kita sekarang tidak dapat khawatir tentang penarikan yang kuat ketika menggunakan sistem file CoW.
Ya, kami dapat membuat snapshot FS sesering yang kami suka di ZFS dan BTRFS, tetapi selalu ada risiko bahwa perubahan file yang hilang akan berada di antara snapshots. Dan gambar-gambar masih perlu dikelola: hapus yang lama. Dalam NILFS2, semua ini terjadi secara otomatis, setiap beberapa detik.
Saya membuat volume logis menggunakan lvcreate (dalam grup volume nvme, kumpulan tipis tipis). Saya sarankan untuk membuatnya pada volume lvm, karena nanti dapat dengan mudah diperluas. 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 itu, Anda perlu menyalin semua data dari saat ini / rumah.
Saya melakukan ini segera setelah mem-boot komputer, sebelum memasuki akun saya, dari pengguna root. Jika saya masuk sebagai pengguna, maka beberapa program akan membuka soket dan file di folder / rumah / pengguna pengguna saya, yang akan membuat penyalinan menjadi sulit. Seperti yang Anda ketahui, folder home untuk pengguna root biasanya terletak di path / root, jadi tidak ada file yang dibuka di bagian / home.
mkdir /mnt/newhome mount -t nilfs2 /dev/nvme/home /mnt/newhome cp -a /home/. /mnt/newhome
Untuk baris terakhir, lihat artikel .
Selanjutnya, edit / etc / fstab, yang me-mount sistem file untuk / home, ke
/dev/disk/by-label/nvme_home /home nilfs2 noatime 0 0
Opsi
noatime
diperlukan untuk meningkatkan kinerja sehingga atime tidak berubah pada setiap akses file. Selanjutnya, kita reboot.
Jenis gambar di NILFS2.
Snapshot normal tanpa kekebalan penghapusan disebut pos pemeriksaan (pos pemeriksaan atau titik pemulihan).
Sebuah snapshot dengan perlindungan penghapusan otomatis disebut snapshot, kemudian hanya snapshot.
Melihat pos-pos pemeriksaan dilakukan dengan menggunakan perintah lscp
Lihat snapshot lscp -s
Kami dapat membuat snapshot dan pos pemeriksaan sendiri kapan saja menggunakan:
mkcp [-s]
Pulihkan data.
NILFS memungkinkan kita untuk memasang sebanyak mungkin foto lama yang kita butuhkan secara paralel dengan bekerja dengan cabang FS utama. Tetapi hanya dalam mode baca.
Semuanya diatur seperti ini. Pos pemeriksaan biasa yang dilakukan NILFS2 dapat secara otomatis dihapus kapan saja (ketika ruang disk habis atau dengan aturan nilfs_cleanerd), oleh karena itu, sebelum memasang, kita harus menerjemahkan pos pemeriksaan ke snapshot atau, dalam bahasa Rusia, memperbaiki gambar.
chcp ss _
Setelah itu, kita dapat memasang snapshot, misalnya, seperti ini:
mount -t nilfs2 -r -o cp=_ /dev/nvme/home /mnt/nilfs/_
Kemudian kami menyalin file yang dipulihkan dari snapshot ke / home.
Dan kemudian kami menghapus bendera ketidakteraturan dari gambar, sehingga di masa depan, pengumpul sampah otomatis dapat menghapus data yang sudah usang:
chcp cp _
Utilitas untuk NILFS2
Tapi ini masalahnya. Ya, tentu saja, kita dapat membuat sistem file, mengubah ukurannya secara online, melihat daftar poin berantai, membuat dan menghapusnya. Paket nilfs2-utils menyediakan perangkat minimal pria.
Karena NTT membatasi pendanaan, tidak ada utilitas tingkat rendah yang dapat menampilkan riwayat perubahan file dan membuat perbedaan di antara snapshot.
Utilitas n2u saya
Untuk mengisi kekosongan ini, saya menulis
utilitas n2u saya , yang dapat menampilkan riwayat perubahan dari file / direktori tertentu:
n2u log filename
Outputnya kira-kira 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
Ini bekerja cukup cepat untuk metode implementasi yang dipilih: ini mencari perbedaan antara file menggunakan metode membagi dua, dengan cepat memasang dan membandingkan file / direktori dalam gambar yang berbeda.
Anda dapat mengatur rentang pos pemeriksaan menggunakan kunci
-cp CP1:CP2
atau
-cp {YEAR-MM-DD}:{YEAR-MM-DD}
.
Anda juga dapat melihat perbedaan antara pos-pos pemeriksaan untuk file atau direktori tertentu:
n2u diff -r cp1:cp2 filename
Anda dapat menampilkan seluruh kronologi perubahan: semua perbedaan antara pos pemeriksaan dari file / direktori tertentu:
n2u blame [-r cp1:cp2] filename
Rentang tanggal dalam perintah ini juga didukung.
Menangislah ke pengembang
Ada banyak spesialis di Habré. Silakan selesaikan NILFS2. Buat replikasi, perbedaan cepat level rendah antara revisi, reflink, dan barang lainnya!
Referensi
Situs web resmi NILFS .
Repositori:
NILFS2 .
Utilitas dan Modul NILFS2 .
Nawala:
Email Pengembang NILFS2 . Pengidentifikasi untuk langganan linux-nilfs.
Arsip Buletin .
Panduan konfigurasi Nilfs_cleanerd .
Tes kinerja komparatif EXT4, Btrfs, XFS & NILFS2 .
Ucapan Terima Kasih:
- 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.
- Amblin Entertainment dan Universal Pictures untuk serangkaian film indah mereka "Back to the Future . " Gambar pertama kiriman diambil dari film "Back to the Future - 3".
- Perusahaan-perusahaan RUVDS atas dukungan mereka dan kesempatan untuk mempublikasikan di blog mereka di Habré.
Kesalahan
PS Direct yang Anda perhatikan di PM. Saya meningkatkan karma untuk ini.
Anda dapat bereksperimen dengan NILFS2 dengan memesan mesin virtual dari
RUVDS untuk kupon di bawah ini. Untuk semua pelanggan baru, masa percobaan gratis 3 hari.
