Làm thẻ SD chống tham nhũng


11

Thiết bị linux nhúng của tôi sử dụng thẻ SD để lưu dữ liệu chẩn đoán nhất định, quá nhiều cho flash bên trong.

Vấn đề là nếu thiết bị bị tắt đột ngột, hệ thống tập tin (FAT32) trên thẻ bị hỏng.

Không có cách nào để ngăn chặn sự cố mất điện đột xuất hoặc người dùng tắt nó như vậy và thiết bị nên tương đối không cần bảo trì. Tồi tệ hơn, dữ liệu được ghi liên tục, do đó, các lỗi hỏng hóc là rất thường xuyên và Linux khi phát hiện ra FS bị lỗi, nó chỉ đọc thầm.

Những phương pháp bạn sẽ đề nghị để giảm thiểu điều này? Sẽ chạy fsck.vfat khi khởi động đủ?

Một số thông tin thêm:

  • Thẻ này không được coi là có thể tháo rời bởi người dùng. Nó được coi là đĩa nội bộ. Mọi dữ liệu được lưu trữ trên đó sẽ có thể truy cập được để tải xuống qua mạng hoặc vào ổ đĩa USB và hệ thống sẽ tự động xóa các mục cũ nhất. Điều đó có nghĩa là nó không cần phải đọc trong PC trung bình của bạn.
  • Hệ thống hiện đang hỗ trợ FAT, yaffs và jffs2. Thêm các hệ thống tập tin khác vào kernel là có thể nhưng nếu các con đường khác tồn tại, chúng tôi muốn chúng trước tiên.
  • Viết có thể bị đình chỉ theo yêu cầu ngay cả trong vài phút mà không mất dữ liệu.
  • mất dữ liệu một phần hoặc tham nhũng nhỏ là chấp nhận được. Hoàn toàn dừng đăng nhập là không.
  • các sự kiện poweroff hoàn toàn không thể đoán trước được hầu hết thời gian.
  • hệ thống đang chạy trên ARM9, 200MHZ, RAM 64 MB, đèn flash bên trong 32 MB và sử dụng hầu hết năng lượng CPU cho vai trò chính của nó. Hãy xem xét điều này trong khi nghĩ về các giải pháp nặng về tài nguyên.

3
Có lẽ bạn đã xem xét nó, nhưng nó đáng được đề cập cho những người khác lang thang trong câu hỏi này: Hầu hết các thẻ flash (SD, CF, v.v.) chỉ có dung sai ghi trong vài nghìn chu kỳ (tốt nhất). Sử dụng thẻ bình thường để ghi dữ liệu hoặc các tác vụ tương tự sẽ giết chết chúng (và thường trong thời gian ngắn hơn mọi người nghĩ).
Chris S

@ChrisS: Điều này chủ yếu chỉ là phụ lục, và thay thế cũ nhất bằng các mục mới nhất, có bản chất vốn là cân bằng tải rất tốt của ghi, đặc biệt là phải mất hàng tháng để điền vào thẻ. Vấn đề có thể là với chính mục nhập FAT nhưng tôi tin rằng bộ điều khiển làm cho một cái gì đó hợp lý về nó.
SF.

Chi phí là bao nhiêu nếu thiết bị của bạn bị tắt nguồn và không ghi dữ liệu này vào thẻ? Giống như nếu dữ liệu chẩn đoán không được ghi, bạn sẽ mất rất nhiều thời gian hoặc tiền bạc hoặc chỉ không có một số tệp nhật ký?
Freiheit

1
@Freiheit: Một tính năng khá mơ hồ mặc dù không hoàn toàn không quan trọng được bán cho khách hàng, và ngoài ra, trong trường hợp có người khác thực sự xấu và tìm kiếm sự khinh miệt, chúng tôi mất một trong những biện pháp phòng thủ trước tòa. Điều đó là dữ liệu trước khi thất bại có khả năng là có giá trị nhất - một bằng chứng cho thấy thiết bị hoạt động chính xác cho đến giây phút cuối cùng, và không phải lỗi của chính nó đã khiến các sự kiện leo thang thành thảm họa.
SF.

Lưu ý Bạn rõ ràng đang thu thập dữ liệu cho một cái gì đó quan trọng!
Freiheit

Câu trả lời:


8

Bạn có thể sử dụng block2mtdtrình điều khiển để sử dụng các hệ thống tệp jffs2 hoặc yaffs (2) giao dịch mà bạn dường như đang sử dụng ở nơi khác cho thẻ SD của mình, điều này sẽ giải quyết vấn đề mất dữ liệu hoặc hỏng hệ thống tệp khi tắt nguồn.

Làm như vậy có thể phát sinh các vấn đề khác, mặc dù. Vì thẻ SD có thể có các cơ chế riêng để cân bằng hao mòn và ánh xạ lại tại chỗ, những điều này có thể gây trở ngại cho việc triển khai của jffs2 và yaffs để làm điều tương tự, làm giảm tuổi thọ hoặc hiệu suất của thẻ SD của bạn. Nếu đây không phải là một vấn đề, nó đáng để thử.


Với một hoặc hai tháng để lấp đầy thẻ SD 2GB, đạt đến giới hạn hao mòn ngay cả khi cân bằng tải ngẫu nhiên hoàn toàn, đây không phải là vấn đề.
SF.

5

Kiểm tra xem kernel bạn sử dụng có hỗ trợ tuôn ra và / hoặc cờ đồng bộ hóa cho vfat hay không (có vẻ như một số phiên bản bỏ qua nó, hãy cẩn thận!).

Hoặc chỉ cần loại bỏ hoàn toàn với hệ thống tệp nếu mọi thứ có thể đi vào một tệp (như trường hợp với luồng nhật ký thô!) Hoặc vào một vài tệp có kích thước cố định (sử dụng phân vùng;)

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.