ดึงปลั๊กออกไหม


18

เมื่อใดก็ตามที่ฉันปิด Pi ของฉันฉันใช้sudo poweroffซึ่ง (ในความเข้าใจของฉัน) เป็นวิธีที่ปลอดภัยในการหยุดกระบวนการทั้งหมดและปิดตัวลง

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

บางคนที่ฉันได้พูดคุยได้บอกว่าพวกเขาเพียงแค่นำพลังออกมาเมื่อพวกเขาต้องการปิดระบบและพวกเขาไม่เคยสังเกตเห็นปัญหาใด ๆ กับสิ่งนี้

ดังนั้นจะมีอะไรผิดพลาดเพียงถอดปลั๊ก Pi? ฉันควรเริ่มถอดปลั๊กอย่างง่ายหรือไม่?

หมายเหตุ: ในกรณีนี้ฉันไม่ได้กังวลเกี่ยวกับการสูญเสียข้อมูลมากเกินไป ฉันบันทึกการสำรองข้อมูลปกติและข้อมูลสำคัญเพียงอย่างเดียวของ Pi นี้อยู่ใน GitHub ของฉัน


1
ฉันจะแนะนำต่อเพียงดึงปลั๊กออกเหมือนเดิมการเสียบและถอดปลั๊กสายไฟอย่างต่อเนื่องจะลดอายุการใช้งานตัวเชื่อมต่อของ Pi ประการที่สองการ์ด SD อาจอยู่ในระหว่างการดำเนินการเมื่อคุณดึงปลั๊กออก - นี่เป็นโอกาสที่จะทำให้การ์ดเสียหาย และนั่นจะเป็นความไม่สะดวกไม่ว่าคุณจะสำรองข้อมูลของคุณดีแค่ไหน
Darth Vader

2
@DarthVader คุณหมายถึงอะไรโดย 'ลดอายุการใช้งานตัวเชื่อมต่อ' ฉันจะไม่ถอดปลั๊กและเสียบบ่อย ๆ ฉันจะถอดปลั๊กก่อนจะปิดเครื่อง การชำรุดการ์ด SD เป็นปัญหาเดียวนอกเหนือจากนั้นหรือไม่ การฟอร์แมตการ์ด SD จะทำให้การ์ดใช้งานได้อีกครั้งหรือไม่
James Vickery

1
ฉันยังคิดว่ามันดีกว่าที่จะปล่อยให้ Pi เสียบปลั๊กและปิดไฟที่ผนัง คุณสามารถกู้คืนการ์ด SD ที่เสียหายได้โดยการฟอร์แมตและติดตั้งระบบปฏิบัติการที่คุณเลือก แต่ไม่ควรให้ SD การ์ดเสียหายในตอนแรก ปัญหาอีกประการหนึ่งคือส่วนหนึ่งของ Pi อาจอยู่ในขั้นตอนของการทำบางสิ่งบางอย่างและคุณได้ตัดอำนาจโดยที่พวกเขาไม่ได้รับโอกาสให้ทำสิ่งที่พวกเขาทำ
Darth Vader

คำตอบ:


23

ฉันไม่ได้นิสัยที่จะถอดปลั๊ก 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 ไม่มีการรับรู้ถึงขอบเขตเช่น "ไฟล์" "ระบบไฟล์" หรือแม้แต่ "พาร์ทิชันอุปกรณ์" มันเกี่ยวข้องกับกลุ่มข้อมูลที่ระบบปฏิบัติการต้องการผ่านเลเยอร์ทึบแสงจากภายในกล่องดำที่มีสิ่งใดเกิดขึ้นในระดับกายภาพ

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

มันดังนี้จากที่:

  1. คอนโทรลเลอร์การ์ด SD ไม่มีแนวคิดว่าข้อมูล "ถูกต้อง" เป็นของที่ไหนในแง่ของระบบไฟล์และ parititions ที่สอดคล้องกันและ

  2. การ์ด SD เป็นกล่องดำที่ระบบปฏิบัติการไม่สามารถมองเห็นได้อย่างแท้จริง

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

ดังนั้น:

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

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

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

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

จะมีอะไรผิดปกติเมื่อถอดปลั๊ก Pi ฉันควรเริ่มถอดปลั๊กอย่างง่ายหรือไม่? หมายเหตุ: ในกรณีนี้ฉันไม่ได้กังวลเกี่ยวกับการสูญเสียข้อมูลมากเกินไป

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


  1. สิ่งนี้อาจมีความสำคัญเมื่อพิจารณาว่าทำไมบางยี่ห้อ / รุ่นของการ์ดที่เฉพาะเจาะจงจึงแย่กว่าคนอื่น ๆ อย่างชัดเจนสำหรับบางคน น่าเสียดายที่ในขณะที่ไพ่สองใบที่มีป้ายกำกับเหมือนกันอาจเหมือนกันในแง่ของคุณสมบัติที่ระบุไว้ (ขนาด, ความเร็ว, ฯลฯ ) ผู้ผลิตจะไม่ผูกพันที่จะทำให้พวกเขาเหมือนกัน 100% อย่างแท้จริงในแง่ของชิ้นส่วนที่เป็นส่วนประกอบ

1

มันขึ้นอยู่กับระบบปฏิบัติการ OS ของคุณ:

  • หากคุณใช้รูปแบบมาตรฐานเมื่อคุณใช้การ์ด SD ของคุณในโหมด r / w สำหรับข้อมูลจริง (การสลับพาร์ติชั่นไม่นับที่นี่) - มันเป็นปัญหาเหมือนในกรณี "การเสียบปลั๊กพีซี" ตามปกติ : มันอยู่รอบ ๆ Google ดังนั้นคุณจะมีข้อมูลมากมายเกี่ยวกับเคส มันเหมือนกัน: ปัญหาเดียวกันความเสี่ยงและผลกระทบที่เท่ากัน
  • หากคุณเพียงแค่อ่านข้อมูลจากการ์ด SD ของคุณเช่นติดตั้งพาร์ติชันที่มีข้อมูลทั้งหมดจากการ์ด SD ของคุณด้วยroตัวเลือกมันจะไม่มีปัญหาในการดึงปลั๊ก: คุณกำลังทำงานบริการของคุณเสร็จแล้ว เพื่อสำรองข้อมูลไปยังหน่วยเก็บข้อมูลภายนอกที่เขียนได้ (เช่นการแบ่งปัน NAS หรือ NFS / SMB / CIFS) และหลังจากปิดบริการ - ใช่เพียงแค่ดึงปลั๊ก: คุณไม่จำเป็นต้องใช้ดิสก์ RAM / tmpfs ) อีกต่อไปและคุณจะไม่เกิดความเสียหายอะไร

1
จุดแรกของคุณไม่ถูกต้อง การ์ด SD แนะนำภาวะแทรกซ้อนที่ทำให้ "ไม่เหมือนเดิม" เช่นกับดิสก์ที่หมุนวนซึ่งการทำเจอร์นัลและการตรวจสอบควรมีประสิทธิภาพในการป้องกันส่วนใหญ่หรือสื่อ SSD ที่แพงกว่าซึ่งอาจมีฮาร์ดแวร์เพิ่มเติมและสอดคล้องกับ มาตรฐานที่เข้มงวดกับสื่อ SD Qv คำตอบของฉันที่ฉันพูดคุยเกี่ยวกับ"ในแง่นามธรรมโดยไม่คำนึงถึงลักษณะของการ์ด SD เข้าบัญชี ... "
goldilocks

1
@ goldilocks แน่นอนในกลไกการจัดเก็บข้อมูลลึกของมันแตกต่างกัน ฉันกำลังพูดที่นี่โดยทั่วไปมากกว่านั่นคือ "ทำไมการดึงปลั๊กออกมาไม่ดีถ้าคุณไม่มั่นใจว่าข้อมูลทั้งหมดของคุณได้รับการบันทึกอย่างปลอดภัยและแน่นอน"
Alexey Vesnin

@goldilocks ขอบคุณมากสำหรับคำตอบที่ยอดเยี่ยมของคุณ คุณทั้งคู่ทำคะแนนได้อย่างยอดเยี่ยมแม้ว่าฉันจะตัดสินใจรับคำตอบของ goldilocks เพราะมันให้ข้อมูลที่เกี่ยวข้องมากมายในขณะที่ยังตอบคำถามอยู่ อย่างไรก็ตามฉันได้ upvote ทั้งคำตอบ
James Vickery

1

@goldilocks ตอบว่ามีความเสี่ยงเล็กน้อย แต่พวกเราส่วนใหญ่ไม่ได้ทำ

มันง่ายมากที่จะเพิ่มสวิตช์เปิดปิดที่ปลอดภัยซึ่งฉันใช้กับ Pi ที่ไม่มีหัวของฉัน ดูวิธีปิด Raspberry Pi อย่างปลอดภัยได้อย่างไร สิ่งนี้ใช้ทรัพยากรแทบไม่มีเลยนอกจากบิตของแรมและปุ่มกดแบบง่าย

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