อย่างที่ทราบกันดีว่าหากปัญหาเกิดขึ้นได้ก็จะเกิดขึ้นอย่างแน่นอน ทุกคนคงเคยประสบกรณีที่ไฟล์สำคัญล่าสุดถูกลบโดยไม่ตั้งใจ หรือข้อความถูกเลือกและทำลายโดยไม่ได้ตั้งใจในโปรแกรมแก้ไขข้อความ
หากคุณเป็นโฮสต์หรือเจ้าของเว็บไซต์ คุณอาจประสบปัญหาการแฮ็กบัญชีผู้ใช้หรือเว็บไซต์ของคุณ ในกรณีเช่นนี้ สิ่งสำคัญคือต้องคืนค่าลำดับเหตุการณ์ ค้นหาวิธีการเข้า และช่องโหว่ที่ผู้โจมตีใช้
ระบบไฟล์ NILFS2 เหมาะสำหรับการแก้ปัญหาดังกล่าว
มีอยู่ในเคอร์เนล Linux ตั้งแต่เวอร์ชัน 2.6.30
ลักษณะเฉพาะของระบบไฟล์นี้คือมันคล้ายกับระบบควบคุมเวอร์ชัน: คุณสามารถย้อนกลับสถานะของระบบกลับมาได้ตลอดเวลาและดูว่ามันเป็นอย่างไรเมื่อก่อน
เพื่อให้มีฟังก์ชันนี้ คุณไม่จำเป็นต้องกำหนดค่าสคริปต์ Cron ถ่ายภาพสแนปช็อต ฯลฯ ระบบไฟล์ NILFS2 ดำเนินการทั้งหมดนี้ด้วยตัวมันเอง มันจะไม่เขียนทับข้อมูลเก่าและจะเขียนไปยังพื้นที่ใหม่ของดิสก์เสมอหากมีเนื้อที่ว่างบนดิสก์เพียงพอ เป็นไปตามหลักการ Copy-on-Write อย่างสมบูรณ์
ในความเป็นจริง การเปลี่ยนแปลงใดๆ ในไฟล์จะสร้างสแน็ปช็อตใหม่ของระบบไฟล์โดยอัตโนมัติ ดังนั้นคุณจึงสามารถใช้ FS นี้เป็นไทม์แมชชีนและย้อนสถานะของไฟล์ได้
เรื่องราว
NILFS2 ได้รับการพัฒนาในระดับความลึกของ
มันถูกพัฒนาขึ้นมาเพื่ออะไรกันแน่ อย่างไรก็ตาม สันนิษฐานได้ว่า FS ดังกล่าวซึ่งมีฟังก์ชัน "ไทม์แมชชีน" นั้นเหมาะอย่างยิ่งสำหรับการจัดเก็บข้อมูลที่หน่วยข่าวกรองอาจต้องการเจาะเข้าไปเพื่อเล่นซ้ำภาพรวมของ SMS อีเมล ฯลฯ....
NILFS2 ยังอาจเป็นเครื่องมือที่มีค่ามากสำหรับบริการรักษาความปลอดภัยภายใน เนื่องจากช่วยให้คุณสามารถกู้คืนจดหมายที่ถูกลบทั้งหมดในฐานข้อมูลเมล ซึ่งเผยให้เห็นกลุ่มพนักงานที่อาจพยายามปกปิดพวกเขาในเวลาต่อมาโดยการลบหรือเปลี่ยนแปลงไฟล์ของพวกเขา
คุณจะติดตามประวัติการติดต่อทั้งหมดของคุณได้อย่างไร?บนเซิร์ฟเวอร์ Linux (และนี่คือจุดที่ควรจะติดตั้ง NILFS2 เพื่อวัตถุประสงค์ด้านความปลอดภัยภายใน) วิธีการจัดเก็บอีเมลมักใช้วิธีจัดเก็บข้อความอีเมล รูปแบบที่เรียกว่า
หากเมลเซิร์ฟเวอร์ใช้ฐานข้อมูล NILFS2 จะทำให้สามารถกู้คืนเวลาที่แน่นอนของการเปลี่ยนแปลงฐานข้อมูลและความสามารถในการกู้คืนฐานข้อมูลในช่วงเวลาเหล่านี้ จากนั้นคุณจะต้องใช้เครื่องมือฐานข้อมูลเพื่อดูว่ามีอะไรอยู่ในนั้น ณ เวลานั้น...
อย่างไรก็ตาม มีบางอย่างผิดพลาด รัฐบาลญี่ปุ่นเปลี่ยนใจที่จะติดตามทุกคน (ตามหลักการ Yarovaya) หรือประสิทธิภาพของ NILFS2 บน HDD แบบดั้งเดิมกลับกลายเป็นว่าต่ำกว่ามาตรฐานและ NILFS2 ได้รับการเผยแพร่ภายใต้ใบอนุญาต GPL และเข้าสู่เคอร์เนล Linux อย่างรวดเร็วเนื่องจาก ไม่มีการร้องเรียนใด ๆ เกี่ยวกับโค้ดที่เขียนภาษาญี่ปุ่นที่มีคุณสมบัติสูง แต่ผู้พัฒนาเคอร์เนล Linux ไม่มี
NILFS2 เป็นอย่างไร?
จากมุมมองการใช้งาน: บนระบบควบคุมเวอร์ชัน
จากมุมมองของโปรแกรมเมอร์: บัฟเฟอร์แบบวงกลม ระบบไฟล์จะสะสมการเปลี่ยนแปลงและเขียนลงในกลุ่มขนาดประมาณ 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 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. สร้างการจำลองแบบ ความแตกต่างอย่างรวดเร็วระดับต่ำระหว่างการแก้ไข ลิงก์อ้างอิง และสินค้าอื่นๆ!
การอ้างอิง
ที่เก็บ:
จดหมายข่าว:
กิตติกรรมประกาศ:
- ผู้พัฒนา 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 ได้โดยสั่งซื้อเครื่องเสมือนจาก
ที่มา: will.com