การทำเจอร์นัลระบบไฟล์รับประกันความเสียหายหลังไฟดับหรือไม่?


28

ฉันถามคำถามนี้ในนามของผู้ใช้รายอื่นที่แจ้งปัญหานี้ในห้องแชทของ Ubuntu

การทำเจอร์นัลระบบไฟล์รับประกันว่าจะไม่มีความเสียหายเกิดขึ้นหากไฟฟ้าขัดข้องเกิดขึ้น?

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

คำตอบ:


21

ไม่มีการรับประกัน ระบบไฟล์ Journaling มีความยืดหยุ่นมากกว่าและมีแนวโน้มที่จะเกิดความเสียหายน้อยลง แต่ไม่ได้รับการยกเว้น

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

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

หลักฐานขั้นพื้นฐานของการทำเจอร์นัลคือการเขียนรายการบันทึกประจำวันนั้นเร็วกว่าปกติมากกว่าธุรกรรมจริงที่อธิบายไว้ ดังนั้นช่วงเวลาระหว่าง OS ที่สั่งให้เขียน (เจอร์นัล) และฮาร์ดไดรฟ์ที่ตอบสนองมันสั้นกว่าการเขียนปกติมาก: หน้าต่างแคบลงสำหรับสิ่งที่ผิดปกติ แต่ยังมีหน้าต่างอยู่

อ่านเพิ่มเติม


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

1
@Gorge George Edison ดูคำตอบเพิ่มเติมของฉัน
Andrew Lambert

2
บิตสุดท้ายนั้นไม่ถูกต้อง ไม่มีหน้าต่างสำหรับสิ่งที่ผิดพลาด เนื่องจากมันบันทึกสิ่งที่กำลังจะทำก่อนที่จะเริ่มทำมันการดำเนินการสามารถเริ่มต้นใหม่หลังจากไฟฟ้าขัดข้องไม่ว่าจะเกิดอะไรขึ้นที่จุดใดระหว่างการทำงาน มันเป็นเรื่องของการสั่งซื้อไม่ใช่เวลา
psusi

@psusi ยังคงมีหน้าต่างสำหรับการเขียนไปยังเจอร์นัลที่จะถูกขัดจังหวะ การบันทึกรายวันอาจปรากฏเป็นอะตอมมิกในระบบปฏิบัติการ แต่ยังคงเขียนลงดิสก์อยู่
Andrew Lambert

5
@ ประหลาดใจว่าพวกเขาเป็นอะตอมเพราะพวกเขามีหมายเลขลำดับและ / หรือการตรวจสอบดังนั้นรายการบันทึกรายวันจะถูกเขียนขึ้นทั้งหมดหรือไม่ หากไม่ได้เขียนทั้งหมดจะถูกละเว้นเพียงหลังจากรีสตาร์ทระบบและจะไม่มีการเปลี่ยนแปลงใด ๆ กับ fs ดังนั้นจึงยังคงสอดคล้องกัน
psusi

18

เลขที่

การเจอร์นัลชนิดทั่วไปที่เรียกว่าการทำเจอร์นัลเมทาดาทาปกป้องความสมบูรณ์ของระบบไฟล์ไม่ใช่ข้อมูล ซึ่งรวมถึงxfsและext3/ ext4ในdata=orderedโหมดเริ่มต้น

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

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

มีการทำเจอร์นัลชนิดทั่วไปน้อยกว่าเรียกว่าการทำเจอร์นัลข้อมูลซึ่งจะext3ทำอย่างไรถ้าคุณเมาท์ด้วยdata=journalตัวเลือก

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

อย่างที่คนอื่น ๆ ชี้แม้ว่านี่จะไม่ใช่การรับประกันเพราะฮาร์ดไดรฟ์อาจบอกระบบปฏิบัติการว่ามีการจัดเก็บข้อมูลเมื่อข้อเท็จจริงแล้วมันยังอยู่ในแคชของฮาร์ดไดรฟ์

สำหรับข้อมูลเพิ่มเติมโปรดดูที่ที่วิกิพีเดียบทความ Journaling ระบบไฟล์และส่วนที่โหมดข้อมูลของเอกสาร ext4


1
+1 สำหรับความแตกต่างระหว่างความเสียหายของระบบไฟล์และความเสียหายของข้อมูล ความแตกต่างเล็ก ๆ น้อย ๆ นั้นค่อนข้างเป็นเรื่องยุ่งยากในทางปฏิบัติ
SplinterReality

ขอโทษที่ฉันไม่รู้แต่ทว่าdata=journalคุณสมบัตินั้นไม่สมเหตุสมผลเลยใช่ไหม?
boehj

อีกครั้งระบบปฏิบัติการรู้เมื่อไดรฟ์เก็บข้อมูลและบังคับให้ล้างเมื่อจำเป็นเพื่อรักษา fs ที่สอดคล้องกัน แน่นอนว่าไฟล์ข้อมูลของคุณอาจสูญหายหรือเสียหายได้หากแอปพลิเคชันที่เขียนขึ้นมาเมื่อไฟฟ้าดับไม่ได้ทำอย่างระมัดระวังและนั่นจะนำไปใช้ว่าคุณใช้ data = journal
psusi

@psusi ไม่สำคัญว่าโปรแกรมจะเขียนข้อมูลอย่างระมัดระวังเพียงใดฮาร์ดไดรฟ์จำนวนมากทำให้ข้อมูลใน READING stackoverflow.com/q/34141117/3338098 ถูก
ปิดการใช้งาน

@ user3338098, ไดรฟ์ที่ข้อมูลเสียหายเงียบ ๆ เสียหายอย่างน่ากลัวและไม่ควรถูกนำมาใช้และเป็นการสนทนาที่แตกต่างไปจากการทุจริตที่เกิดจากซอฟต์แวร์ที่ทำสิ่งผิด
psusi

8

ระบบไฟล์ไม่สามารถรับประกันความสอดคล้องของระบบไฟล์ได้หากเกิดไฟฟ้าดับเนื่องจากไม่ทราบว่าฮาร์ดแวร์จะทำอะไร

หากฮาร์ดไดรฟ์บัฟเฟอร์ข้อมูลสำหรับการเขียน แต่บอกระบบปฏิบัติการว่ามีการเขียนข้อมูลและไม่สนับสนุนอุปสรรคการเขียนที่เหมาะสมการเขียนที่ไม่เป็นไปตามปกติอาจเกิดขึ้นได้เมื่อการเขียนก่อนหน้านี้ไม่ได้กระทบกับแผ่นเสียง มี ดูคำตอบที่ผิดพลาดสำหรับเซิร์ฟเวอร์นี้สำหรับรายละเอียดเพิ่มเติม

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


เฟิร์มแวร์ของไดรฟ์ไม่ฉลาดพอที่จะหยุดเขียนเมื่อหดหัวได้หรือไม่
นาธานออสมัน

@ George: มันจะขึ้นอยู่กับไดรฟ์ มีอยู่มากมายและคุณไม่รู้ว่าไดรฟ์ (ราคาถูก) ของคุณทำสิ่งต่างๆได้ดีเพียงใด
camh

1
ฮาร์ดไดรฟ์จะแจ้งให้ระบบปฏิบัติการทราบหากใช้แคชเขียนอยู่เบื้องหลังและระบบปฏิบัติการจะใช้มาตรการเพื่อให้แน่ใจว่ามีการล้างข้อมูลตามลำดับที่ถูกต้อง ไดรฟ์ได้รับการออกแบบเพื่อให้เมื่อไฟฟ้าดับพวกเขาหยุดเขียน ฉันได้เห็นบางกรณีที่ภาคที่ถูกเขียนในเวลาที่สูญเสียพลังงานจะเสียหายเพราะมันไม่ได้อัปเดต ecc ให้เสร็จสิ้น (แต่สามารถเขียนใหม่ได้อย่างถูกต้องได้อย่างง่ายดาย) แต่ไม่เคยได้ยินว่าภาคแบบสุ่มเสียหายจากการสูญเสียพลังงาน
psusi

3

ZFS ซึ่งอยู่ใกล้ แต่ไม่ใช่ระบบไฟล์ journaling รับประกันโดยการออกแบบต่อต้านการทุจริตหลังจากไฟฟ้าขัดข้อง

ไม่สำคัญว่าการเขียนต่อเนื่องจะถูกขัดจังหวะตรงกลางในกรณีเช่นนี้การตรวจสอบจะไม่ถูกต้องอย่างแน่นอนดังนั้นบล็อกจะถูกละเว้น เนื่องจากระบบไฟล์คัดลอกเมื่อเขียนข้อมูลที่ถูกต้องก่อนหน้านี้ (หรือ meta-data) จะยังคงอยู่บนดิสก์และจะใช้แทน


2

คำตอบคือในกรณีส่วนใหญ่ไม่มี:

  • ดังที่mikelกล่าวแล้วระบบไฟล์ที่เจอร์นัลส่วนใหญ่สามารถป้องกันข้อมูลเมตาของไฟล์ได้เท่านั้น (ข้อมูลเช่นชื่อไฟล์ขนาดสิทธิ์การใช้งาน ฯลฯ ) ไม่ใช่ข้อมูลไฟล์ (เนื้อหาของไฟล์) สิ่งนี้เกิดขึ้นเพราะการปกป้องข้อมูลไฟล์ทำให้ระบบไฟล์ช้า (ในทางปฏิบัติไร้ประโยชน์)
  • เนื่องจากเจอร์นัลยังเป็นไฟล์ชนิดพิเศษที่เก็บไว้ในฮาร์ดดิสก์จึงอาจเกิดความเสียหายได้หลังจากไฟฟ้าดับ ดังนั้นหากเจอร์นัลเกิดความเสียหายระบบไฟล์จะไม่สามารถทำธุรกรรมที่ไม่สมบูรณ์ใด ๆ ที่เกิดขึ้นเมื่อไฟฟ้าขัดข้องเกิดขึ้น

มีเหตุการณ์ใดบ้างที่อาจนำไปสู่บันทึกที่เสียหาย สิ่งเดียวที่ฉันคิดได้คือเซกเตอร์ที่ไม่ดี - มีอะไรอีกบ้าง?
นาธานออสมัน

ถูกต้องความล้มเหลวของฮาร์ดแวร์เป็นกรณีปกติ
sakisk
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.