NILFS2 - ระบบไฟล์กันกระสุนสำหรับ /home

NILFS2 - ระบบไฟล์กันกระสุนสำหรับ /home

อย่างที่ทราบกันดีว่าหากปัญหาเกิดขึ้นได้ก็จะเกิดขึ้นอย่างแน่นอน ทุกคนคงเคยประสบกรณีที่ไฟล์สำคัญล่าสุดถูกลบโดยไม่ตั้งใจ หรือข้อความถูกเลือกและทำลายโดยไม่ได้ตั้งใจในโปรแกรมแก้ไขข้อความ

หากคุณเป็นโฮสต์หรือเจ้าของเว็บไซต์ คุณอาจประสบปัญหาการแฮ็กบัญชีผู้ใช้หรือเว็บไซต์ของคุณ ในกรณีเช่นนี้ สิ่งสำคัญคือต้องคืนค่าลำดับเหตุการณ์ ค้นหาวิธีการเข้า และช่องโหว่ที่ผู้โจมตีใช้

ระบบไฟล์ NILFS2 เหมาะสำหรับการแก้ปัญหาดังกล่าว

มีอยู่ในเคอร์เนล Linux ตั้งแต่เวอร์ชัน 2.6.30

ลักษณะเฉพาะของระบบไฟล์นี้คือมันคล้ายกับระบบควบคุมเวอร์ชัน: คุณสามารถย้อนกลับสถานะของระบบกลับมาได้ตลอดเวลาและดูว่ามันเป็นอย่างไรเมื่อก่อน

เพื่อให้มีฟังก์ชันนี้ คุณไม่จำเป็นต้องกำหนดค่าสคริปต์ Cron ถ่ายภาพสแนปช็อต ฯลฯ ระบบไฟล์ NILFS2 ดำเนินการทั้งหมดนี้ด้วยตัวมันเอง มันจะไม่เขียนทับข้อมูลเก่าและจะเขียนไปยังพื้นที่ใหม่ของดิสก์เสมอหากมีเนื้อที่ว่างบนดิสก์เพียงพอ เป็นไปตามหลักการ Copy-on-Write อย่างสมบูรณ์

ในความเป็นจริง การเปลี่ยนแปลงใดๆ ในไฟล์จะสร้างสแน็ปช็อตใหม่ของระบบไฟล์โดยอัตโนมัติ ดังนั้นคุณจึงสามารถใช้ FS นี้เป็นไทม์แมชชีนและย้อนสถานะของไฟล์ได้

เรื่องราว

NILFS2 - ระบบไฟล์กันกระสุนสำหรับ /homeNILFS2 ได้รับการพัฒนาในระดับความลึกของ นิปปอน เทเลกราฟ แอนด์ เทเลกราฟ แอนด์ เทเลกราฟ คอร์ปอเรชั่นอันที่จริงรัฐเป็นเจ้าของ (มีส่วนได้เสียในการควบคุม) และบริษัทโทรคมนาคมที่ใหญ่ที่สุดในญี่ปุ่น โดยเฉพาะอย่างยิ่งใน CyberSpace Laboratories ภายใต้การนำ ริวสุเกะ โคนิชิ.

มันถูกพัฒนาขึ้นมาเพื่ออะไรกันแน่ อย่างไรก็ตาม สันนิษฐานได้ว่า FS ดังกล่าวซึ่งมีฟังก์ชัน "ไทม์แมชชีน" นั้นเหมาะอย่างยิ่งสำหรับการจัดเก็บข้อมูลที่หน่วยข่าวกรองอาจต้องการเจาะเข้าไปเพื่อเล่นซ้ำภาพรวมของ SMS อีเมล ฯลฯ....

NILFS2 ยังอาจเป็นเครื่องมือที่มีค่ามากสำหรับบริการรักษาความปลอดภัยภายใน เนื่องจากช่วยให้คุณสามารถกู้คืนจดหมายที่ถูกลบทั้งหมดในฐานข้อมูลเมล ซึ่งเผยให้เห็นกลุ่มพนักงานที่อาจพยายามปกปิดพวกเขาในเวลาต่อมาโดยการลบหรือเปลี่ยนแปลงไฟล์ของพวกเขา

คุณจะติดตามประวัติการติดต่อทั้งหมดของคุณได้อย่างไร?บนเซิร์ฟเวอร์ Linux (และนี่คือจุดที่ควรจะติดตั้ง NILFS2 เพื่อวัตถุประสงค์ด้านความปลอดภัยภายใน) วิธีการจัดเก็บอีเมลมักใช้วิธีจัดเก็บข้อความอีเมล รูปแบบที่เรียกว่า เมลเดียร์. ใส่ก็พอแล้ว. เซิร์ฟเวอร์จดหมายจัดส่ง และกำหนดค่าพื้นที่เก็บข้อมูลเมลใน Maildir รูปแบบอื่นๆ mbox เป็นไฟล์ข้อความขนาดใหญ่ที่สามารถแยกวิเคราะห์เป็นข้อความแต่ละข้อความได้อย่างง่ายดาย

หากเมลเซิร์ฟเวอร์ใช้ฐานข้อมูล NILFS2 จะทำให้สามารถกู้คืนเวลาที่แน่นอนของการเปลี่ยนแปลงฐานข้อมูลและความสามารถในการกู้คืนฐานข้อมูลในช่วงเวลาเหล่านี้ จากนั้นคุณจะต้องใช้เครื่องมือฐานข้อมูลเพื่อดูว่ามีอะไรอยู่ในนั้น ณ เวลานั้น...

อย่างไรก็ตาม มีบางอย่างผิดพลาด รัฐบาลญี่ปุ่นเปลี่ยนใจที่จะติดตามทุกคน (ตามหลักการ Yarovaya) หรือประสิทธิภาพของ NILFS2 บน HDD แบบดั้งเดิมกลับกลายเป็นว่าต่ำกว่ามาตรฐานและ NILFS2 ได้รับการเผยแพร่ภายใต้ใบอนุญาต GPL และเข้าสู่เคอร์เนล Linux อย่างรวดเร็วเนื่องจาก ไม่มีการร้องเรียนใด ๆ เกี่ยวกับโค้ดที่เขียนภาษาญี่ปุ่นที่มีคุณสมบัติสูง แต่ผู้พัฒนาเคอร์เนล Linux ไม่มี

NILFS2 เป็นอย่างไร?

จากมุมมองการใช้งาน: บนระบบควบคุมเวอร์ชัน SVN. จุดตรวจสอบ FS แต่ละจุดเป็นการกระทำที่เกิดขึ้นโดยอัตโนมัติโดยที่ผู้ใช้ไม่ทราบทุกครั้งที่มีการเปลี่ยนแปลงใดๆ ไม่ว่าจะเป็นการลบ การเปลี่ยนแปลงเนื้อหาของไฟล์ หรือการเปลี่ยนแปลงสิทธิ์การเข้าถึง การกระทำแต่ละครั้งมีจำนวนที่เพิ่มขึ้นเชิงเส้น

จากมุมมองของโปรแกรมเมอร์: บัฟเฟอร์แบบวงกลม ระบบไฟล์จะสะสมการเปลี่ยนแปลงและเขียนลงในกลุ่มขนาดประมาณ 8 MB (2000 * 4096 โดยที่ 2000 คือจำนวนองค์ประกอบในบล็อกและ 4096 คือขนาดของหน้าหน่วยความจำ) ดิสก์ทั้งหมดแบ่งออกเป็นชิ้น ๆ การบันทึกดำเนินไปตามลำดับ เมื่อพื้นที่ว่างหมด สแน็ปช็อตที่เก่าที่สุดจะถูกลบและชิ้นส่วนต่างๆ จะถูกเขียนทับ

สารพัดพื้นฐานของ NILFS2

  • การกำหนดเวอร์ชัน!!!
  • ขั้นตอนในการกู้คืนระบบไฟล์หลังจากเกิดความล้มเหลวนั้นง่ายดาย: เมื่อโหลด ระบบจะค้นหาส่วนสุดท้ายที่มีการตรวจสอบความถูกต้องที่ถูกต้อง และติดตั้งซูเปอร์บล็อกไว้ นี่เป็นการดำเนินการที่เกือบจะทันที
  • เนื่องจากการบันทึกจะดำเนินการเป็นเส้นตรงเสมอ ดังนั้น:
    • สามารถแสดงผลลัพธ์ที่ดีเมื่อทำงานบน SSD ที่มีการเขียนแบบสุ่มช้า
    • NILFS2 บันทึกทรัพยากร SSD เนื่องจากแทบไม่มีปัจจัยการคูณการเขียนเลย
      แม่นยำยิ่งขึ้นคือไม่เกิน 2ความจริงก็คือเมื่อเขียนใหม่ทั้งดิสก์แบบวนซ้ำ NILFS2 จะถ่ายโอนข้อมูลที่ไม่สามารถเปลี่ยนแปลงไปยังชิ้นใหม่ (ชิ้น)

      หากเรามีข้อมูลที่ไม่เปลี่ยนแปลง 10% บนดิสก์ เราจะได้รับการเขียนเพิ่มขึ้น 10% พร้อมการเขียนซ้ำทั้งหมด 1 ครั้ง เพิ่มขึ้น 50% ที่ความสมบูรณ์ของอุปกรณ์ 50% สำหรับการเขียนดิสก์ใหม่ทั้งหมด 1 ครั้ง

      อัตราขยายในการเขียนสูงสุดคือ 2 ซึ่งถือว่าต่ำมากเมื่อพิจารณาว่าทุกอย่างเขียนตามลำดับ โดยทั่วไป แอนิเมชั่นการเขียนจะน้อยกว่าระบบไฟล์แบบกระจัดกระจายทั่วไปที่มีเซกเตอร์ 4096 ไบต์ (ความคิดได้รับแรงบันดาลใจมาจาก. ความคิดเห็น).

  • ความง่ายในการใช้งานการจำลองแบบไปยัง NILFS2 FS แบบรีโมต

NILFS2 สำหรับ /home

ตามกฎแล้วในระบบปฏิบัติการที่คล้ายกับ Unix จะมีโฟลเดอร์ /home ที่ใช้เก็บข้อมูลผู้ใช้ โปรแกรมต่างๆ จะบันทึกการตั้งค่าเฉพาะของผู้ใช้ไว้ในโฟลเดอร์นี้

และใครถ้าไม่ใช่ผู้ใช้ที่ทำผิดพลาดบ่อยที่สุด? ดังนั้น ตามที่พวกเขากล่าวไว้ พระเจ้าเองทรงสั่งให้ใช้ NILFS2 บน /home

ยิ่งไปกว่านั้น ด้วยการใช้ SSD อย่างแพร่หลาย ตอนนี้เราไม่ต้องกังวลกับการขาดทุนอย่างรุนแรงอีกต่อไปเมื่อใช้ระบบไฟล์ CoW

ใช่ เราสามารถสร้างสแน็ปช็อต FS ได้บ่อยเท่าที่เราต้องการใน ZFS และ BTRFS แต่มีความเสี่ยงเสมอที่การเปลี่ยนแปลงไฟล์ที่สูญหายจะจบลงระหว่างสแน็ปช็อต และยังต้องมีการจัดการรูปภาพ: ต้องลบรูปภาพเก่าออก ใน NILFS2 ทั้งหมดนี้จะเกิดขึ้นโดยอัตโนมัติทุกๆ สองสามวินาทีอย่างแท้จริง

ฉันสร้างโลจิคัลวอลุ่มโดยใช้ lvcreate (ในกลุ่มวอลุ่ม nvme, Thin Pool Thin) ฉันแนะนำให้สร้างมันบนโวลุ่ม lvm เนื่องจากสามารถขยายได้อย่างง่ายดายในภายหลัง ฉันแนะนำให้มีพื้นที่ว่างในดิสก์ 50% ด้วย NILFS2 สำหรับความลึกของเวอร์ชันที่เหมาะสม

lvcreate -V10G -T nvme/thin -n home

และจัดรูปแบบเป็น 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 !!

หลังจากนี้ คุณจะต้องคัดลอกข้อมูลทั้งหมดจาก /home ปัจจุบัน

ฉันทำสิ่งนี้ทันทีหลังจากบูตคอมพิวเตอร์ ก่อนที่จะลงชื่อเข้าใช้บัญชีของฉันในฐานะผู้ใช้รูท หากฉันเข้าสู่ระบบในฐานะผู้ใช้ บางโปรแกรมจะเปิดซ็อกเก็ตและไฟล์ในโฟลเดอร์ /home/user ของผู้ใช้ ซึ่งจะทำให้การล้างสำเนาทำได้ยาก ดังที่คุณทราบ โฮมโฟลเดอร์สำหรับผู้ใช้รูทมักจะอยู่บนพาธ /root ดังนั้นจึงไม่มีไฟล์ใดเปิดบนพาร์ติชั่น /home

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

สำหรับบรรทัดสุดท้าย ดูที่ บทความ.

ต่อไปเราจะแก้ไข /etc/fstab ซึ่งระบบไฟล์สำหรับ /home ติดตั้งอยู่

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

ตัวเลือก noatime จำเป็นต้องปรับปรุงประสิทธิภาพเพื่อให้เวลาไม่เปลี่ยนแปลงตามการเข้าถึงไฟล์แต่ละไฟล์ ต่อไปเราจะรีบูต

ประเภทของรูปภาพใน NILFS2

สแน็ปช็อตปกติที่ไม่มีภูมิคุ้มกันต่อการลบเรียกว่าจุดตรวจสอบหรือจุดกู้คืน
สแน็ปช็อตที่ได้รับการปกป้องจากการลบอัตโนมัติเรียกว่าสแนปชอต จากนั้นจึงเรียกว่าสแนปชอต

การดูจุดตรวจทำได้โดยใช้คำสั่ง lscp

ดูสแนปช็อต lscp -s

เราสามารถสร้างสแน็ปช็อตและจุดตรวจด้วยตนเองได้ตลอดเวลาโดยใช้:

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

เรากู้คืนข้อมูล

NILFS ช่วยให้เราสามารถติดตั้งสแน็ปช็อตเก่าๆ ได้มากเท่าที่เราต้องการควบคู่ไปกับการทำงานกับสาขา FS หลัก แต่ในโหมดอ่านเท่านั้น

ทุกอย่างก็จัดแบบนี้ จุดตรวจสอบปกติที่ NILFS2 สร้างสามารถลบได้โดยอัตโนมัติเมื่อใดก็ได้ (เมื่อพื้นที่ดิสก์หมดหรือตามกฎ nilfs_cleanerd) ดังนั้นก่อนการติดตั้ง เราจะต้องแปลงจุดตรวจสอบเป็นสแน็ปช็อต หรือจับภาพสแน็ปช็อตในภาษารัสเซีย

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

หลังจากนั้น เราสามารถติดตั้งสแน็ปช็อตได้ เช่น:

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

หลังจากนั้นเราจะคัดลอกไฟล์ที่กู้คืนจากสแน็ปช็อตไปที่ /home
และต่อมาเราจะลบแฟล็กการไม่ลบออกจากสแน็ปช็อตเพื่อที่ในอนาคตตัวรวบรวมขยะอัตโนมัติจะสามารถลบข้อมูลที่ล้าสมัยได้:

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

ยูทิลิตี้สำหรับ NILFS2

แต่นี่คือปัญหา ใช่ แน่นอน เราสามารถสร้างระบบไฟล์ เปลี่ยนขนาดออนไลน์ ดูรายการจุดท้าทาย สร้างและลบมันได้ แพ็คเกจ nilfs2-utils มอบชุดสุภาพบุรุษแบบมินิมอล

เนื่องจาก NTT ได้ลดเงินทุนลง จึงไม่มียูทิลิตี้ระดับต่ำที่รวดเร็วที่ช่วยให้คุณสามารถแสดงประวัติการเปลี่ยนแปลงไฟล์หรือสร้างความแตกต่างระหว่างสแน็ปช็อตได้

ยูทิลิตี้ n2u ของฉัน

ฉันเขียนเพื่อเติมเต็มสุญญากาศนี้ ยูทิลิตี้ n2u ของคุณซึ่งสามารถแสดงประวัติการเปลี่ยนแปลงของไฟล์/ไดเร็กทอรีเฉพาะ:

n2u log filename

ผลลัพธ์จะเป็นดังนี้:

          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

มันทำงานค่อนข้างเร็วสำหรับวิธีการนำไปใช้ที่เลือก: ค้นหาความแตกต่างระหว่างไฟล์โดยใช้วิธีแบ่งส่วน ติดตั้งและเปรียบเทียบไฟล์/ไดเร็กทอรีอย่างรวดเร็วในสแน็ปช็อตต่างๆ

คุณสามารถกำหนดจุดตรวจได้หลายจุดโดยใช้กุญแจ -cp CP1:CP2 หรือ -cp {YEAR-MM-DD}:{YEAR-MM-DD}.

คุณยังสามารถเห็นความแตกต่างระหว่างจุดตรวจสอบสำหรับไฟล์หรือไดเร็กทอรีเฉพาะ:

n2u diff -r cp1:cp2 filename

คุณสามารถแสดงลำดับเหตุการณ์ของการเปลี่ยนแปลงทั้งหมดได้: ความแตกต่างทั้งหมดระหว่างจุดตรวจสอบของไฟล์/ไดเร็กทอรีเฉพาะ:

n2u blame [-r cp1:cp2] filename

รองรับช่วงวันที่ในคำสั่งนี้ด้วย

เสียงร้องถึงนักพัฒนา

มีผู้เชี่ยวชาญมากมายเกี่ยวกับHabré กรุณาจบ NILFS2. สร้างการจำลองแบบ ความแตกต่างอย่างรวดเร็วระดับต่ำระหว่างการแก้ไข ลิงก์อ้างอิง และสินค้าอื่นๆ!

การอ้างอิง

เว็บไซต์อย่างเป็นทางการของ NILFS.

ที่เก็บ:
นิลส์2.
ยูทิลิตี้และโมดูล NILFS2.

จดหมายข่าว:
จดหมายข่าวทางอีเมลสำหรับนักพัฒนา NILFS2. ID สำหรับการสมัครสมาชิก linux-nilfs
ที่เก็บจดหมายข่าว.

คู่มือการตั้งค่า nilfs_cleanerd.
การทดสอบประสิทธิภาพ EXT4, Btrfs, XFS & NILFS2.

กิตติกรรมประกาศ:

  • ผู้พัฒนา NILFS2: Ryusuke Konishi, Koji Sato, Naruhiko Kamimura, Seiji Kihara, Yoshiji Amagai, Hisashi Hifumi และ Satoshi Moriai ผู้ร่วมให้ข้อมูลหลักคนอื่นๆ ได้แก่ 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 และ Universal Pictures สำหรับภาพยนตร์ซีรีส์ยอดเยี่ยม "กลับสู่อนาคต". ภาพแรกของโพสต์นำมาจากภาพยนตร์เรื่อง “Back to the Future 3”
  • บริษัท รูฟดีเอส สำหรับการสนับสนุนและโอกาสในการเผยแพร่บนบล็อกของคุณบนHabré

PS กรุณาส่งข้อผิดพลาดใด ๆ ที่คุณสังเกตเห็นในข้อความส่วนตัว ฉันเพิ่มกรรมของฉันเพื่อสิ่งนี้

คุณสามารถทดลองกับ NILFS2 ได้โดยสั่งซื้อเครื่องเสมือนจาก รูฟดีเอส ด้วยคูปองด้านล่างนี้ สำหรับลูกค้าใหม่ทั้งหมด จะมีช่วงทดลองใช้งานฟรี 3 วัน

NILFS2 - ระบบไฟล์กันกระสุนสำหรับ /home

ที่มา: will.com

เพิ่มความคิดเห็น