fsck จะไม่ fsck (ไม่สามารถตั้งค่าสถานะ superblock)


12

หลังจากการปิดที่ไม่สะอาดในอุปกรณ์ที่ใช้การ์ด SD ฉันนำการ์ด SD ออกไปfsckยังระบบไฟล์รูท สิ่งนี้นำไปสู่รูปแบบต่าง ๆ ต่อไปนี้:

e2fsck 1.43.1 (08-Jun-2016)
/dev/sdc2: recovering journal
Superblock needs_recovery flag is clear, but journal has data.
Run journal anyway<y>? no
Clear journal<y>? no
e2fsck: unable to set superblock flags on /dev/sdc2

ที่นี่ฉันตอบว่า "ไม่" ทั้งสองครั้ง แต่ไม่มีลำดับของใช่ / ไม่ใช่ที่ไม่ได้นำไปสู่ผลลัพธ์เดียวกันทันที

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

ฉันddแบ่งพาร์ติชัน (8 GB) เป็นไฟล์แล้วลอง fsck ที่น่าสนใจ:

e2fsck 1.43.1 (08-Jun-2016)
plush.rootfs: recovering journal
Clearing orphaned inode 18290 (uid=0, gid=0, mode=0100644, size=34096)
Clearing orphaned inode 18270 (uid=0, gid=0, mode=0100644, size=38916)
Clearing orphaned inode 18250 (uid=0, gid=0, mode=0100644, size=1128076)
Clearing orphaned inode 11411 (uid=0, gid=0, mode=0100644, size=293108)
Setting free inodes count to 406127 (was 408580)
Setting free blocks count to 1305622 (was 1347486)
plush.rootfs: clean, 60209/466336 files, 604906/1910528 blocks (check after next mount)

หลังจากfsckผ่านไปแล้วภาพจะถูกติดตั้งและfsck -fหลังจากนั้นก็ผ่านไปเช่นกัน

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

เมื่อใดก็ตามที่มีการติดตั้งต้นฉบับบนเครื่องอื่นบันทึก syslog:

kernel: EXT4-fs (sdc2): 4 orphan inodes deleted
kernel: EXT4-fs (sdc2): recovery complete

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

ฉันสงสัยว่านี่จะกลายเป็นคำถาม "ขอเอกสารอย่างเป็นทางการ" เกี่ยวกับสิ่งต่าง ๆ เช่นต้องการ recovery_flag (หรือเพียงแค่ธรรมดา "สิ่งนี้หมายความว่าอะไร?" คำถาม) ดังนั้นคำแนะนำใด ๆ ในบรรทัดเหล่านั้นจะได้รับการชื่นชม


มีอะไรในเคอร์เนลที่บันทึกเกี่ยวกับข้อผิดพลาดของอุปกรณ์? นี่จะไม่ใช่ครั้งแรกที่การ์ด SD กลายเป็นแบบอ่านอย่างเดียว
Mark Plotnick

@ MarkPlotnick ไม่และมันเขียนได้ สิ่งสุดท้ายในบันทึกจากก่อนที่ปัญหาคือการรีสตาร์ท systemd (อุปกรณ์นั้นไม่มีส่วนหัวและไม่ตอบสนองหลังจากใช้งานนานapt upgrade) หลังจากนั้นจะบันทึกการบูตปกติ - และ systemd-fsck บอกว่า "สะอาด" (ฉันจะแก้ไขใน) แต่การลอง fsck นอกบริบทนั้นยังคงล้มเหลว
goldilocks

fsck ของคุณในการคัดลอกลบ 4 inodes แต่แก้ไขจำนวน inode ฟรีโดยลด 2453 inodes! นั่นมหาศาล ตรวจสอบว่าอุปกรณ์ได้รับพลังงานเพียงพอ
meuh

@ meuh ฉันสังเกตเห็นว่าเมื่อใดก็ตามที่มีการติดตั้งบนกล่องใหญ่ syslog หมายถึงเหล่านั้น 4 inodes (แก้ไขในข้างต้น) บางสิ่งใน fs กลับกลายเป็นยุ่งเหยิง (อัปเดตเคอร์เนลโมดูล! \ O /) ดังนั้นฉันจึงเผาการ์ดใหม่และจะแขวนการ์ดเก่าในกรณีที่ฉันมีโอกาสขุดเพิ่มเติม มันไม่ใช่เรื่องใหม่ - การ์ด bin คลาส 10 ที่ต่อรองราคาที่ไม่มียี่ห้อใน (งานเบา) ใช้ 24/7 ตลอดสองสามปีดังนั้น ... ฉันไม่คิดว่าจะมีวิธีใดที่จะยืนยันว่าการ์ด SD นั้นหมดอายุแล้ว แต่ฉันคิดว่ามันน่าจะเป็นเช่นนั้น พลังควรจะโอเค แต่อาจไม่แน่นอนภายใต้เงื่อนไขบางประการ
goldilocks

2
ไม่ดูดจริง ๆ เมื่อเครื่องมือที่ควรแก้ไขปัญหาของคุณไม่ทำงานเนื่องจากลักษณะของปัญหาหรือไม่ สรุป: เครื่องมือไม่ดีและควรได้รับการแก้ไข
Marc.2377

คำตอบ:


11

ฉันเพิ่งพบปัญหาเดียวกันนี้ หลังจากแก้ไขข้อผิดพลาดกับผู้e2fsckดูแลเราทราบว่าการ์ด SD เสียหาย มันยอมรับการเขียนโดยไม่มีข้อผิดพลาด แต่จริงๆแล้วมันไม่ได้เขียนข้อมูลลงในการ์ด การ์ด SD อ่านอย่างมีประสิทธิภาพเท่านั้น

ดูเหมือนว่าการ์ดเข้าสู่โหมดความปลอดภัยที่ล้มเหลวซึ่งข้อมูลยังคงสามารถอ่านได้ แต่ไม่มีอะไรเขียน

e2fsckข้อความunable to set superblock flagsหมายความว่ามันพยายามที่จะเขียนถึงซุปเปอร์บล๊อกเพื่อทำเครื่องหมายวารสารเช่นการประมวลผลซึ่งเกิดขึ้นโดยไม่ผิดพลาด แต่เมื่อมันไปอ่าน superblock กลับมาอีกครั้งก็ยังชี้ให้เห็นว่าวารสารที่จำเป็นในการต้องย้อน กล่าวอีกนัยหนึ่งการเปลี่ยนแปลงที่เขียนไปยัง superblock นั้นไม่ได้รับการบันทึกบนสื่อเก็บข้อมูล

การ์ดที่ฉันใช้ซึ่งมีปัญหานี้คือ Samsung Evo 16GB microSD ซึ่งฉันพูดถึงในกรณีที่เป็นปัญหาทั่วไปของการ์ดเหล่านี้

ฉันสามารถทดสอบได้โดยใช้ddเพื่อเขียน 4096 ไบต์จาก/dev/zeroบนการ์ดที่บล็อก 0 จากนั้นฉันอ่านกลับจากการ์ดและแทนที่จะได้ศูนย์ทั้งหมดเท่าที่ควรฉันยังคงได้รับ superblock ext4 ดั้งเดิม

ตอนนี้ฉันกำลังอยู่ระหว่างการย้ายข้อมูลไปยังการ์ดใหม่แล้วดูว่าฉันจะได้รับการทดแทนจากซัมซุงซึ่งดูเหมือนจะเสนอการรับประกัน 10 ปีสำหรับการ์ด SD

UPDATE: Samsung เปลี่ยนการ์ด 16GB ด้วย 32GB หนึ่งในซีรี่ส์ Evo เดียวกันดังนั้นเดาฉันไม่สามารถบ่นมากเกินไป!


"โดยที่ยังคงสามารถอ่านข้อมูลได้ แต่ไม่มีอะไรเขียน" -> fs สามารถเขียนได้
goldilocks

@goldilocks: ดูเหมือน superblock fs ของคุณอาจไม่สามารถเขียนได้ ยิ่งไปกว่านั้น fs ของฉันก็ปรากฏขึ้นมาได้เนื่องจากการแคชมันเป็นเพียงหลังจากที่ยกเลิกการต่อเชื่อมและประกอบใหม่ฉันสังเกตเห็นว่าการเปลี่ยนแปลงใด ๆ ได้หายไป
Malvineous

มันไม่ใช่ภาพลวงตาเนื่องจากการแคช
goldilocks

7

ฉันรู้ว่านี่เป็นหัวข้อเก่า แต่ฉันคิดว่าฉันจะให้ข้อมูลเชิงลึกบางอย่าง

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

วิธีที่ดีในการฆ่าการ์ด sd คือติดตั้งเป็นพาร์ทิชันสลับหรือสิ่งที่อ่าน / เขียนอย่างเข้มข้น คุณจะประหลาดใจที่คุณสามารถฆ่าการ์ดอย่างรวดเร็ว ฉันพบว่าการเรียกใช้ knoppix จาก sd card หรือ usb thumb drive จะใช้เวลาเพียงหนึ่งหรือสองเดือนขึ้นอยู่กับคุณภาพของการ์ดและความเข้มของการใช้ knoppix (ตั้งแต่ฉันเปลี่ยนมาใช้ knoppix จากไดรฟ์ usb SSD ซึ่งกินเวลาสองสามปีแล้ว)

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