ฉันไม่ได้นิสัยที่จะถอดปลั๊ก pi ในความรู้สึกของการปิดพวกเขาอย่างถูกต้องยกเว้นเมื่อฉันสูญเสียเครือข่ายบนหัวขาด pi ซึ่งในกรณีนี้ฉันมักขี้เกียจเกินกว่าที่จะเสียบแป้นพิมพ์ ฯลฯ
โดยทั่วไปฉันมักตรวจสอบเพื่อให้แน่ใจว่าไฟ ACT สีเขียวไม่ติดที่จุดนั้น สำหรับรุ่นล่าสุด (หรือเฟิร์มแวร์) จะปิดเมื่อไม่สามารถเข้าถึงการ์ด SD สิ่งใดที่คุณต้องการให้แน่ใจ เว้นเสียแต่ว่าคุณจะเขียนถึงมันตลอดเวลานี่ควรจะง่ายพอ ตราบใดที่มีจำนวน headroom ใน RAM ที่เหมาะสม (กล่าวคือ 50-100 + MB ขึ้นอยู่กับบริบท) จากนั้นสิ่งต่าง ๆ ที่มีแนวโน้มที่จะถูกนำมาใช้ซ้ำบ่อยครั้ง แต่ไม่ได้โหลดโดยกระบวนการจริง จะถูกเก็บไว้ในหน่วยความจำว่างและโหลดใหม่จากที่นั่นโดยระบบปฏิบัติการไม่ใช่สื่อจริงจริง นี่คือการใช้งานระบบปฏิบัติการวัตถุประสงค์ทั่วไปในปัจจุบันทั้งหมด
หาก pi ใช้งานการ์ด SD นี่คือความเสี่ยงที่น้อยที่สุด : ระบบไฟล์บนการ์ดไม่ซิงค์กับสถานะหน่วยความจำใน ปกติแล้วนี่อาจไม่ใช่ปัญหาใหญ่ สำหรับ starters ระบบไฟล์ที่เจอร์นัลที่ใช้โดยดีฟอลต์บน pis ส่วนใหญ่อาจเป็นการป้องกันมันเช่นเดียวกับ fsckซึ่งควรใช้โดยอัตโนมัติเมื่อบูตหากระบบไฟล์ไม่ได้ถอนการติดตั้งหมดจด ฉันจะอธิบายว่าทำไมฉันถึงพูดว่า "อาจ" ไม่ใช่ "เป็น" ในไม่ช้าเพราะในบริบทนี้ฉันคิดว่ามันอาจจะไม่บ่อยนัก
เท่าที่ฉันรู้ฉันไม่เคยลงเอยกับความเสียหายของระบบไฟล์หรือการสูญหายของข้อมูลเมื่อทำการดึงปลั๊กซึ่งฉันอาจทำได้หลายร้อยครั้งในช่วงหลายปีที่ผ่านมา อย่างไรก็ตามอีกครั้งฉันไม่ทำมันเป็นประจำ หากคุณทำวันละหลายครั้งคุณอาจพบเจอกับระดับความเสี่ยงทางสถิติและอาจมีสิ่งที่น่ารังเกียจเกิดขึ้น
นี่คือปัญหา:
เมื่อเร็ว ๆ นี้มันเกิดขึ้นกับฉันว่ามีปัญหาเกี่ยวกับการ์ด SD ซึ่งกลไกระบบปฏิบัติการ / ระบบไฟล์อาจไม่มีอำนาจต่อต้านและซึ่งอาจอธิบายได้ว่าทำไมบางคนดูเหมือนจะมีปัญหาถาวรกับการทุจริต fs โดยเฉพาะผู้ที่เข้ามายุ่งกับระบบ รัฐ - เช่นเมื่อเร็ว ๆ นี้คนที่นี่อ้างว่ากำลังเรียกใช้โมดูลการคำนวณซึ่งความเสียหายทำให้ระบบไม่สามารถบูตได้ในการตัดไฟเช่น ~ 1/40
ในแง่นามธรรมโดยไม่คำนึงถึงลักษณะของการ์ด SDที่ไม่ควรเกิดขึ้นแม้ว่าระบบไม่ว่างเพราะสิ่งที่น่าจะเกิดความเสียหายมากที่สุดคือสิ่งที่ไม่สำคัญที่ถูกเขียนไม่ใช่ซอฟต์แวร์ระบบใด ๆ ที่มีประสิทธิภาพ อ่านอย่างเดียวและได้รับการเปลี่ยนแปลงระหว่างการอัพเดต
มันอาจเกิดขึ้นได้หากบิตถูกเล่นไปรอบ ๆ ดังนั้นข้อมูลเมตาของระบบไฟล์ที่เก็บที่บิตต่าง ๆ เสียหาย อย่างไรก็ตาม journalling และ fsck ควรสามารถจัดการกับสิ่งนี้ได้ซึ่งต้องการเคอร์เนลในการบูตแต่เคอร์เนลบน pi นั้นอยู่ในพาร์ติชันสำหรับบูตแยกต่างหากซึ่งอาจถูก unmount ระหว่างการใช้งาน (ยกเว้นเมื่อทำการอัพเดต) เพราะไม่มีการใช้งานใด ๆ หลังจากระบบบูต ความหมายของข้อมูลเกี่ยวกับพาร์ติชั่นควรจะมีประสิทธิภาพไม่เปลี่ยนแปลงแม้ในขณะที่ติดตั้งอยู่
แต่...
การ์ด SD เป็นกล่องดำไปยังระบบปฏิบัติการ ไม่มีทางออกจากเรื่องนั้น ในขณะที่มีไดรเวอร์เฉพาะสำหรับตัวควบคุมการ์ด SD ที่เป็นส่วนหนึ่งของฮาร์ดแวร์ของคอมพิวเตอร์ (ใน pi นี่คือส่วนหนึ่งของ SoC) ไม่มีสิ่งเช่นไดรเวอร์สำหรับรุ่นที่แตกต่างกันเฉพาะและรุ่นของการ์ด
และยังมีไมโครคอนโทรลเลอร์ภายในที่อาจทำงานในรูปแบบที่แตกต่างกันมาก 1. นี่คือสิ่งที่ทำให้การ์ดเป็นกล่องดำ มันโต้ตอบกับระบบปฏิบัติการผ่านโปรโตคอล SD มาตรฐานและนั่นคือจุดสุดท้ายของการควบคุมระบบปฏิบัติการที่มี
หนึ่งในสิ่งที่การ์ด SD และสื่อโซลิดสเตตอื่น ๆ ซึ่งแตกต่างจากดิสก์หมุนแบบเดิมคือใช้การกำหนดแอดเดรสเสมือนแบบทึบ พวกเขาจะไม่เก็บข้อมูลทางร่างกายตามลำดับที่ระบบปฏิบัติการรับรู้ นี่เป็นสิ่งที่ดีส่วนใหญ่หรืออื่น ๆ ที่เราอาจต้องการไดรเวอร์ที่แตกต่างกันสำหรับการ์ดยี่ห้อต่าง ๆ ฯลฯ และมันอนุญาตให้การ์ดใช้งาน ( สวมใส่ ) เพื่อปรับระดับการสวมใส่ซึ่งยืดอายุการใช้งานของพวกเขาได้อย่างมาก
สิ่งที่พวกเขาพึ่งพาก็คือ "ลบบล็อก" ที่ค่อนข้างใหญ่ เมื่อข้อมูลในบล็อกจำเป็นต้องเปลี่ยนแปลงบล็อกทั้งหมดจะถูกลบและเขียนใหม่ ระบบไฟล์ยังทำสิ่งนี้ตามความเป็นจริง แต่โปรดทราบว่าอยู่ในระดับซอฟต์แวร์ระบบและปัญหาที่เกิดจากสิ่งนี้เป็นปัญหาที่บันทึกไว้และfsck
จัดการ
ปมของปัญหาที่ผ่านไม่ได้มากขึ้นก็คือระบบไฟล์ขนาดทำอย่างนั้นบนมักจะเป็นมากขนาดเล็กกว่าบัตรขนาด SD ทำมันใน หากไม่ใช่คุณจะเสียพื้นที่เก็บข้อมูลมากเพราะบล็อกระบบไฟล์สามารถมีข้อมูลจากไฟล์เดียว หากบล็อกนั้นมีขนาด 2 MB และมีข้อมูลเพียงไม่กี่กิโลไบต์ส่วนที่เหลือจะสูญเปล่า ดังนั้นระบบไฟล์บล็อกจึงอยู่ในช่วงตั้งแต่ 1/2 KiB ถึง 4 KiB
เห็นได้ชัดว่าการ์ด SD ไม่ได้ทำเช่นนั้นและในความเป็นจริงไม่สามารถทำได้เพราะคอนโทรลเลอร์ในการ์ด SD ไม่มีการรับรู้ถึงขอบเขตเช่น "ไฟล์" "ระบบไฟล์" หรือแม้แต่ "พาร์ทิชันอุปกรณ์" มันเกี่ยวข้องกับกลุ่มข้อมูลที่ระบบปฏิบัติการต้องการผ่านเลเยอร์ทึบแสงจากภายในกล่องดำที่มีสิ่งใดเกิดขึ้นในระดับกายภาพ
เหตุผลหนึ่งที่เห็นได้ชัดคือ (นอกเหนือจากบัตรสถานที่ตั้ง "ไม่สามารถทำได้ในตอนแรก") คือบล็อกเหล่านั้นมักมีขนาดค่อนข้างใหญ่ แต่การ์ดดูเหมือนจะทำงานได้ดีในการใช้พื้นที่ทั้งหมด บล็อกลบอาจจะมีหลายเมกะไบต์ในขนาด ยิ่งไปกว่านั้นรายละเอียดเป็นกรรมสิทธิ์ แม้ว่าอาจมีกลไกที่ระบบปฏิบัติการสามารถร้องขอขนาดบล็อกการลบออกจากการ์ด แต่การ์ดไม่จำเป็นต้องจัดเตรียมสิ่งนี้มันสามารถโกหกได้และมันจะไร้สาระหากระบบปฏิบัติการพยายามใช้ประโยชน์จากมัน
มันดังนี้จากที่:
คอนโทรลเลอร์การ์ด SD ไม่มีแนวคิดว่าข้อมูล "ถูกต้อง" เป็นของที่ไหนในแง่ของระบบไฟล์และ parititions ที่สอดคล้องกันและ
การ์ด SD เป็นกล่องดำที่ระบบปฏิบัติการไม่สามารถมองเห็นได้อย่างแท้จริง
จากนั้นสิ่งที่อยู่ในบล็อกลบขนาด 1 MB ซึ่งการ์ดมีหลายพาร์ติชั่นที่ใช้ 4 KiB หรือบล็อกระบบไฟล์ที่เล็กกว่าถูกผูกมัดโดยพลการเมื่อการ์ดมีการใช้งานเพียงพอ (และอาจเป็นไปได้ว่า ทั้งหมด) นี่อาจเป็นจริงแม้ว่าคุณจะพยายามบังคับให้ระบบปฏิบัติการใช้ขนาดบล็อกที่ใหญ่ขึ้น / สอดคล้องกัน พวกเขาจะท้ายแนว
ดังนั้น:
หากกำลังไฟถูกตัดในขณะที่การ์ด SD อยู่ในช่วงกลางของการดัดแปลงบล็อกนั่นอาจส่งผลให้สูญเสียข้อมูลโดยพลการที่มีขนาดใหญ่พอสมควรซึ่งอาจเป็นอะไรก็ได้จากการ์ด อาจเป็นข้อมูลที่ระบุว่า "อ่านอย่างเดียว" อาจเป็นข้อมูลจากพาร์ติชันที่ยังไม่ได้ติดตั้งและชัดเจนพอจากพาร์ติชันสำหรับบู๊ตที่ไม่ได้ใช้งานเป็นส่วนใหญ่
หากสิ่งนั้นเกิดขึ้นและการ์ดไม่มีระบบป้องกันบางอย่างของตัวเอง (ซึ่งบางอันอาจมี แต่ฉันแน่ใจว่าส่วนใหญ่ทำไม่ได้) จากนั้นคุณอาจมองสถานการณ์ FUBAR การทำเจอร์นัลจะไม่ป้องกันการทุจริตขนาด MB แบบสุ่มซึ่งไม่รู้จักขอบเขตของพาร์ติชัน หรือ fsck
หรือเนื่องจากฮาร์ดแวร์ของการ์ดนั้นเป็นกรรมสิทธิ์โดยทั่วไปจึงสามารถทำสิ่งอื่นนอกเหนือจากซอฟต์แวร์ที่ผลิตโดยผู้ผลิตการ์ดโดยสันนิษฐานว่าน่าเชื่อถือ ฉันไม่เคยได้ยินเช่นนี้ การทำเช่นนี้จะทำให้การ์ดมีความซับซ้อนราคาแพงและยุ่งยากในการใช้งานมากขึ้น ซึ่งไม่ใช่เป้าหมาย
อีกวิธีหนึ่งการ์ด SD ไม่ได้มีไว้เพื่อใช้อย่างน่าเชื่อถือด้วยวิธีนี้ พวกเขามีราคาถูกและมีประโยชน์มาก แต่เป็นผลมาจากการแลกเปลี่ยนในโปรโตคอล: โดยทั่วไปไม่มีการรับประกันความสมบูรณ์ของข้อมูลสำหรับอะไรบนการ์ดถ้าคุณฆ่าพลังโดยพลการ
จะมีอะไรผิดปกติเมื่อถอดปลั๊ก Pi ฉันควรเริ่มถอดปลั๊กอย่างง่ายหรือไม่? หมายเหตุ: ในกรณีนี้ฉันไม่ได้กังวลเกี่ยวกับการสูญเสียข้อมูลมากเกินไป
มันจะไม่เป็นอันตรายต่อร่างกายปี่ไม่เพียงแค่ระวัง "การสูญเสียข้อมูล" สามารถขยายไปถึง "การ์ดไร้ประโยชน์" ซึ่งจะต้องมีการจัดรูปแบบใหม่อย่างสมบูรณ์ อย่างไรก็ตามฉันจะบอกว่าโอกาสของการที่ถ้าคุณกำลังทำมันด้วยแสง ACT สีเขียวอยู่ในระดับต่ำมาก
- สิ่งนี้อาจมีความสำคัญเมื่อพิจารณาว่าทำไมบางยี่ห้อ / รุ่นของการ์ดที่เฉพาะเจาะจงจึงแย่กว่าคนอื่น ๆ อย่างชัดเจนสำหรับบางคน น่าเสียดายที่ในขณะที่ไพ่สองใบที่มีป้ายกำกับเหมือนกันอาจเหมือนกันในแง่ของคุณสมบัติที่ระบุไว้ (ขนาด, ความเร็ว, ฯลฯ ) ผู้ผลิตจะไม่ผูกพันที่จะทำให้พวกเขาเหมือนกัน 100% อย่างแท้จริงในแง่ของชิ้นส่วนที่เป็นส่วนประกอบ