Làm thế nào một thẻ SD chỉ đọc có thể bị hỏng liên tục?


7

Tôi có một Raspberry Pi ở một vị trí xa chạy từ pin được sạc bởi bảng điều khiển năng lượng mặt trời và có Sleepy Pi khởi động nó sau mỗi giờ để chạy vài phút để chụp một số hình ảnh, thực hiện một số phép đo và tải lên.

Vấn đề là, khá thường xuyên (trong khoảng 2-7 ngày sử dụng) thẻ SD bị hỏng và cần phải thay thế. Đầu tiên tôi nghĩ rằng một số vấn đề với việc ghi dữ liệu vào thẻ SD khi mất điện, vì vậy tôi đã tạo ra tất cả các phân vùng được gắn ở dạng chỉ đọc và tất cả các ghi chỉ xảy ra với các ổ đĩa RAM, nhưng tình trạng hỏng thẻ SD vẫn còn đang xảy ra.

Câu hỏi là, làm thế nào một thẻ SD chỉ đọc có thể bị hỏng?

Trên thực tế tôi đang trao đổi hai thẻ và xảy ra với cả hai, vì vậy có lẽ không phải là vấn đề về thẻ. Thẻ cùng loại, nhưng được mua vào các thời điểm khác nhau nên có thể có lô sản xuất khác nhau (Thẻ Flash MicroSDHC 32Gb Class 10 với Bộ điều hợp SD (FF-TSDG32GA-C10), http://www.amazon.com/gp/ sản phẩm / B007MO0YAI / ref = oh_aui_detailpage_o03_s00? tức là = UTF8 & psc = 1 )

Dưới đây là tập tin fstab của tôi:

proc            /proc   proc      defaults   0   0
/dev/mmcblk0p5  /boot   vfat      ro         0   0
/dev/mmcblk0p6  /       ext4      ro         0   0
/dev/mmcblk0p7  /home   ext4      ro         0   0  none
/var/run        ramfs   size=5M              0   0  none
/var/log        ramfs   size=50M             0   0

EDIT: Để làm rõ một số điểm được chỉ ra bởi goldilocks:

  1. Có hai thẻ SD (cùng loại nhưng được mua tại các thời điểm khác nhau, vì vậy vấn đề sản xuất phổ biến là không thể)

  2. Các thẻ SD được ghi bằng DD từ cùng một hình ảnh sau mỗi lần tham nhũng, vì vậy khi lần tham nhũng tiếp theo xảy ra, chúng sẽ bị tráo đổi - vì vậy nó luôn luôn bị xoay 2 thẻ giống nhau.

  3. Tôi không biết tại sao quả mâm xôi không khởi động được, vì đây là một hệ thống không đầu và chỉ có đội bảo trì mới có quyền truy cập vào nó. Tôi đã yêu cầu họ chụp ảnh (dd) thẻ bị hỏng trước khi họ tải lại từ ảnh sao lưu và tải lên cho tôi. Tôi sẽ xem xét nó khi tôi nhận được nó, có thể nó sẽ giúp tôi xác định tại thời điểm khởi động thất bại.

  4. Không, tôi không chạy fsck trên thẻ, chúng được tải lại hoàn toàn từ ảnh sao lưu bằng dd.

  5. Cả hai thẻ được mua cho mục đích, vì vậy chúng không có khả năng bị hao mòn.

  6. Mặc dù tôi không thể chắc chắn rằng đây không phải là tham nhũng do điện áp thấp, nhưng lần cuối cùng nó xảy ra khi pin ở mức 98%, mặt trời đã lên (vì vậy năng lượng mặt trời cũng cung cấp năng lượng), do đó, không chắc là một kịch bản điện áp thấp sẽ xảy ra ít nhất là tại thời điểm này.


Một lời giải thích có thể là thời tiết: có vẻ như thiết bị có thể ở ngoài trời. Đó là mùa đông, có lẽ cái lạnh không tốt cho thẻ SD?
Kryten

Nó ở trong nhà, nhưng không có hệ thống sưởi, vì vậy nhiệt độ xuống dưới mức đóng băng. Hệ thống thực sự ghi lại nhiệt độ và tôi không thấy bất kỳ mối tương quan nào giữa sự hỏng và nhiệt độ. Có -13C khi nó chạy tốt và sau đó nó bị hỏng ở + 2C.
Zoltan Fedor

1
Chỉ cần kiểm tra, nhiệt độ hoạt động của chính thẻ SD tôi đang sử dụng là -25C - + 85C (dường như là điển hình cho thẻ SD) [xem gskill.com/en/product/ff-tsdg32ga-c10] , vì vậy không có gì chỉ ra là một vấn đề liên quan đến nhiệt độ.
Zoltan Fedor

Bạn có chắc chắn rằng không có gì được tự động gắn ở bất cứ đâu trong hệ thống của bạn?
Jean

1
Tôi đã sử dụng chúng trong một pi ở -20C trước đây mà không có vấn đề. Mọi người đã nhấn chìm pis chạy trong nitơ lỏng và chúng hoạt động xuống -100C. Đó không phải là nhiệt độ. Đó là màu nâu.
goldilocks

Câu trả lời:


5

Các tiếp điểm trên đầu nối SD sẽ làm cong thẻ SD, khiến nó bị hỏng. Điều này đặc biệt đúng nếu bạn thường trao đổi thẻ, tuy nhiên, một số thẻ ít cứng hơn các thẻ khác và có thể uốn cong dễ dàng hơn. Chúng tôi đang thực hiện phát triển đòi hỏi phải đổi thẻ thường xuyên và vấn đề này gây ra rất nhiều vấn đề. Số lượng uốn cong hầu như không nhìn thấy nhưng có thể làm cho một số chân mất liên lạc. Chúng tôi cho rằng ứng dụng của chúng tôi đã gây ra tham nhũng - không đúng sự thật. Các bảng B + sử dụng micro SD và không có vấn đề này.

Thẻ SD có xu hướng thẳng ra sau khi chúng được tháo ra và được phép ngồi trong một căn phòng ấm áp. Bạn có thể kiểm tra thẻ bằng cách nhấn xuống trong khi khởi động. Nếu nó khởi động khi bạn nhấn nó xuống, thẻ bị uốn cong.

Cách giải quyết đáng tin cậy duy nhất mà chúng tôi đã tìm thấy là sử dụng bộ điều hợp thẻ nhớ cấu hình thấp như thế này: http://www.adafbean.com/product/966 Chúng tôi nghi ngờ rằng nhiều trường hợp 'tham nhũng' thực sự gây ra vấn đề này.


1

Bạn có thể thử thêm phần này vào cuối /etc/rc.local:

/bin/echo "-y" > /forcefsck

Cái nào sẽ chạy fsck -y(xem man fsck) trên hệ thống tập tin gốc trong quá trình khởi động. Nó sẽ thêm 10-15 giây vào thời gian khởi động. Rõ ràng, bạn sẽ không thể thực hiện theo cách này trên hệ thống tệp chỉ đọc. Bạn có thể thử đặt tệp vĩnh viễn ở đó, nhưng tôi nghi ngờ điều này sẽ không hoạt động vì nó xảy ra với các fs chưa được xử lý và sau đó bị xóa (đó là lý do tại sao nó phải được viết lại sau khi khởi động qua rc.local).

Tất nhiên, điều đó không giúp ích gì nếu dữ liệu trên thẻ bị hỏng đến mức không thể khởi động được. Tôi tự hỏi điều gì có thể sai?

  1. Cả hai thẻ SD đều không còn tồn tại

    Đây sẽ là một sự trùng hợp điên rồ, nhưng tất nhiên không phải là không thể. Giả sử bạn đã mua chúng mới cho mục đích này, dựa trên những gì bạn đang nói về mục đích này, chúng không thể bị hao mòn vào thời điểm này, bất kể bạn sử dụng chúng ro hay rw. Trừ khi chúng ta xem xét con voi trong phòng, khả năng # 2 ...

  2. Tham nhũng do điện áp thấp

    Đặt RO thẻ sẽ ngăn ngừa nguy cơ tham nhũng nhỏ do mất điện đột ngột - điều này xảy ra do hệ thống tập tin bị HĐH để lại trong trạng thái không nhất quán. Bạn cũng có thể ngăn chặn nó bằng cách chạy synckhông liên tục hoặc bằng cách sử dụng tùy chọn gắn kết đồng bộ. Trong mọi trường hợp, loại tham nhũng này là:

    1. Không có khả năng xảy ra ở nơi đầu tiên, trừ khi hệ thống cực kỳ bận rộn liên tục - nghĩ rằng, máy chủ internet doanh nghiệp. Đó không phải là trường hợp ở đây.

    2. Cực kỳ khó có thể dẫn đến một vấn đề khiến hệ thống không thể khởi động được; Tôi chưa bao giờ thực sự thấy hay nghe về trường hợp như vậy (mặc dù có rất nhiều người dường như nghĩ rằng điều này xảy ra với họ, một meme rất nguy hiểm trên WRT trực tuyến về thẻ pi và thẻ SD). Ngoài ra, sử dụng các /forcefsckđề cập trước đó sẽ đối phó với khả năng này.

    Bất cứ điều gì sai ở đây không chỉ đơn giản là do sức mạnh đột ngột chết. Tuy nhiên, điều có thể gây ra bởi sự sụt giảm điện áp chậm xảy ra khi mất điện. Điều này có lẽ có thể gây ra sự cố ở cấp độ phần cứng, do đó, việc đặt RO thẻ sẽ không tạo ra bất kỳ sự khác biệt nào.

    Tuy nhiên, tôi không thể tìm thấy bất cứ điều gì kết luận trực tuyến về khả năng này; một số người cho rằng thẻ SD không dễ xảy ra sự cố này vì chúng được chế tạo cho các thiết bị chạy bằng pin.

Tôi nghĩ rằng bạn cần phải thực hiện một cái gì đó tắt pi khi điện áp bắt đầu giảm. Các phiên bản pi + mới có bộ phát hiện màu nâu có thể giúp ích; trong khi nó sẽ không tắt hệ điều hành một cách sạch sẽ, nó sẽ cắt điện nhanh hơn thay vì để nó từ từ mờ dần. Như đã mô tả, mất điện đột ngột rất khó có thể gây ra bất kỳ thiệt hại đáng kể nào không thể khắc phục được fsck. Tuy nhiên, lưu ý rằng về lâu dài có lẽ đó không phải là một cách thực hành tốt vì bạn vẫn có thể thỉnh thoảng mất một số dữ liệu ( fscklàm tốt nhất có thể và sẽ để hệ thống tập tin nhất quán và có thể sử dụng được). 1 Bạn cần gắn một vôn kế với một con chip có thể nhắn tin cho HĐH thông qua GPIO; có nhiều loại như thế này cho pi có sẵn trực tuyến.


1. "Phù hợp và có thể sử dụng" ở đây có nghĩa là nó có thể được gắn mà không có lỗi. Vì đây là hệ thống tập tin gốc, tuy nhiên, luôn có khả năng "mất dữ liệu" bao gồm một cái gì đó rất quan trọng. Tuy nhiên, một lần nữa, các sự kiện như thế này sẽ rất ít và xa (xác suất <0,1%).


Cảm ơn câu trả lời chi tiết - hãy để tôi bắt đầu bằng cách làm rõ những phần bạn chỉ ra không rõ ràng. Có, tôi có hai thẻ và tôi có một hình ảnh dự phòng của toàn bộ nội dung (dd của toàn bộ thẻ), vì vậy khi một người chết thì đội bảo trì chỉ cần thay thế nó bằng thẻ khác có hình ảnh gốc được sao chép vào đó. Thật không may, nó là một hệ thống không đầu, vì vậy đội bảo trì không biết điều gì sai - điều chắc chắn là nó không khởi động. Họ đã chụp ảnh thẻ khi bị hỏng lần cuối và tải lên ngay bây giờ, vì vậy tôi sẽ xem xét - có thể sẽ cung cấp thêm thông tin khi thất bại.
Zoltan Fedor

Nếu bạn tìm ra điều gì đó mới và chỉnh sửa các chi tiết này thành câu hỏi, hãy để lại nhận xét tại đây và tôi sẽ mở lại điều này.
goldilocks

Cảm ơn, tôi đã chỉnh sửa các chi tiết này vào câu hỏi, bạn có thể vui lòng mở lại không? Tôi vẫn đang chờ để nhận được hình ảnh của thẻ bị hư hỏng, sau đó tôi có thể có thêm thông tin chi tiết.
Zoltan Fedor

Không thể tìm thấy nhiều hỗ trợ cho luận án "điện áp thấp" của tôi trực tuyến. Nhưng tham nhũng chỉ từ việc đánh cắp sức mạnh chắc chắn là quá bất thường để gây ra loại vấn đề này lặp đi lặp lại, đặc biệt là nếu các hệ thống tập tin chỉ đọc.
goldilocks

Về đề xuất của bạn thêm / bin / echo "-y"> / forcefsck vào /etc/rc.local, điều này chỉ có thể hoạt động nếu hệ thống tệp không chỉ đọc. Rõ ràng là tôi có thể kể lại trong RC.local để được đọc-ghi, thực hiện Forcefsck sau đó đọc lại dưới dạng chỉ đọc, tôi chỉ lo lắng rằng việc đọc lại ghi ngay cả đối với fsck sẽ làm tăng khả năng thiệt hại của hệ thống tệp. Hay tôi đã hiểu nhầm điều gì? Ý của bạn là gì khác với Forcefsck?
Zoltan Fedor

0

Gắn hệ thống tập tin dưới dạng chỉ đọc chỉ ngăn việc ghi miễn là hệ thống ổn định . Bạn đang nói với kernel không được ghi vào một thiết bị cụ thể, nhưng trong trường hợp xảy ra sự cố hạt nhân hoặc mất điện (mất điện), mọi thứ đều có thể xảy ra - mã để ghi vào thẻ SD vẫn còn đó, và nếu nó được thực thi, nội dung trong thẻ của bạn có thể sẽ bị hỏng.

Nếu bạn muốn đảm bảo thẻ SD của bạn ở chế độ chỉ đọc, bạn nên viết bảo vệ nó, ví dụ như sử dụng sdtool

sudo sdtool /dev/mmcblk0 lock

Tất nhiên, bạn vẫn cần giữ các cài đặt chỉ đọc /etc/fstab, nếu không Linux sẽ tiếp tục ghi vào thẻ SD, không thực hiện được và báo cáo tất cả các loại lỗi hệ thống tệp. Các trình điều khiển Linux hiện tại dường như chỉ hiểu công tắc khóa cơ học có trên thẻ SD kích thước đầy đủ và không hiểu trạng thái khóa khi không có công tắc.

sdtoolcho Raspberry Pi có thể được tải xuống ở đây .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.