Làm cách nào để sử dụng JFFS2 hoặc UBIFS để tránh hỏng dữ liệu và tăng tuổi thọ của thẻ SD?


7

Pi đang sử dụng hệ thống tệp EXT4 hoặc EXT3 hoặc FAT không dành cho các thiết bị flash cấp thấp. Nó có thể hoạt động rất tốt trên các thiết bị flash sử dụng các kỹ thuật cân bằng hao mòn bên trong (và ẩn) (như SSD hiện nay), nhưng không phải trên thiết bị flash cơ bản không nhúng bất kỳ kỹ thuật cân bằng hao mòn trước nào.

Đối với các thiết bị flash cơ bản, các hệ thống tệp như JFFS2 hoặc UBIFS được thiết kế để thực hiện cân bằng hao mòn ở cấp hệ thống tệp và đảm bảo rằng mức độ hao mòn được áp dụng và có hiệu quả. Các hệ thống tệp luận án thường được sử dụng trên các nền tảng nhúng, trong đó ổ flash là chip flash được gắn trên PCB của hệ thống. Các chip flash như vậy không nhúng gì: địa chỉ bạn cung cấp là địa chỉ của ô. Không có phép thuật! JFFS2 thực hiện công việc cân bằng hao mòn và trì hoãn việc ghi, v.v ... Nhưng hơn thế nữa: Nó không nói dối với hệ thống. Khi JFFS2 nói rằng dữ liệu được ghi và xóa trên phương tiện, đó là trường hợp!

Câu hỏi của tôi là: Có thể có một phân vùng gốc đang sử dụng JFFS2 hoặc UBIFS thay vì EXT4 không hoạt động tốt ở đây không?

Tôi biết rằng phân vùng khởi động phải ở dạng FAT, nhưng đó không phải là vấn đề vì nó chỉ được đọc. Nhưng vấn đề ở đâu là có phân vùng gốc trong JFFS2 hoặc UBIFS?

Có rất nhiều người phàn nàn về việc hỏng dữ liệu và việc đeo thẻ SD không được kiểm soát, nhưng một phần của giải pháp tồn tại: Đó là về việc chọn hệ thống tệp phù hợp cho phương tiện phù hợp.

Vấn đề với điều này là gì? Tôi chưa thấy mọi người sử dụng một hệ thống tập tin thích hợp. Có một hạn chế ở đâu đó?


4
Thẻ SD thương hiệu hàng đầu đã cân bằng mặc sẵn.
Gerben

1
@Gerben Tôi hiểu, nhưng còn cách tiếp cận sử dụng thẻ SD chi phí thấp và cân bằng hao mòn trong phần mềm thì sao? Tôi đã thấy rất nhiều bài đăng về những người phàn nàn về tham nhũng và tôi không nghĩ tất cả họ đều sử dụng thẻ giá rẻ, một số đang sử dụng thẻ cao cấp. Nhưng họ vẫn phải thực hiện một số thủ thuật như lệnh "TRIM" đều đặn, v.v. Một FS nên tự chủ đủ để bạn không phải tự mình quản lý các nhiệm vụ cấp thấp như vậy trong công việc định kỳ. Điều đó sẽ không bao giờ xảy ra nếu chúng ta đang sử dụng một thiết kế FS cho các bộ nhớ flash.
Blup1980

Không chắc chắn có bao nhiêu lỗi do mất điện / tắt máy không chính xác. Có vẻ như chạy từ một thẻ nhớ usb bên ngoài, mạnh mẽ hơn một chút. Tôi thực sự không thể giúp bạn với J2FS và những thứ tương tự. Tôi nghĩ rằng tôi đoán bạn phải biên dịch lại kernel, vì J2FS không được hỗ trợ bởi nó (không có mod).
Gerben

1
Xin lỗi, không. Pi vẫn bị hỏng thẻ SD khi máy chủ như MySQL được lưu trữ.
Blup1980

Câu trả lời:


7

có thể Và tôi đang chạy pi của tôi với nó.

[root@rasp-rodhome ~]# grep jffs2 /proc/mounts 
/dev/root / jffs2 rw,noatime 0 0
[root@rasp-rodhome ~]# cat /proc/version 
Linux version 3.19.0-rc7.17.rf (rfreire@rf.usersys) (gcc version 4.7.1 20120402 (prerelease) (crosstool-NG 1.15.2) ) #3 Sun Feb 8 21:14:52 BRST 2015

Tuy nhiên, trước tiên, một lưu ý lớn về chất béo màu đỏ: Vui lòng đảm bảo đọc mạnh mẽ Câu hỏi thường gặp của JFFS2 . Sau khi đọc và hiểu đầy đủ về nó, và bạn vẫn nghĩ rằng nó phù hợp với nhu cầu của bạn, hãy tiếp tục đọc.

  1. Bạn sẽ cần biên dịch lại kernel của bạn. Hỗ trợ JFFS2 được biên dịch dưới dạng một mô-đun trong Raspbian; chúng ta cần nó được biên dịch sẵn trong kernel. Bạn có thể muốn biên dịch lại kernel của Raspbian hoặc sử dụng kernel ngược dòng. Đối với kernel ngược dòng, hãy tham khảo bài viết eLinux này . Là một FYI, tôi đã sử dụng kernel ngược dòng.

  2. Để làm cho JFFS2 chạy trên thẻ SD, bạn sẽ cần sử dụng một thủ thuật kernel, được đặt tên block2mtd. block2mtdsẽ mô phỏng một thiết bị mtd, dựa trên một thiết bị khối (phân vùng thiết bị khối thông thường).

    • THÔNG BÁO QUAN TRỌNG: block2mtdsẽ không chơi bóng độc đáo trên kernel cho đến phiên bản 4.0 trên Raspberry Pi trong thời gian khởi động. Nếu bạn đang cố gắng biên dịch kernel bằng hoặc nhỏ hơn 4.0, bạn sẽ cần phải áp dụng bản vá này . Nếu bạn muốn biết chi tiết về tin đồn , hãy kiểm tra cuộc thảo luận dài dòng ở lkml .
  3. Bây giờ bạn đã xây dựng và khởi động thành công hạt nhân mới của mình, bạn sẽ cần tạo dữ liệu JFFS2 của mình. Tạo hình ảnh của bạn và đảm bảo thêm EBS(Tóm tắt khối xóa; tăng tốc độ gắn kết). Sử dụng kích thước khối xóa 64 kb . Cách tạo hình ảnh JFFS2 : Vui lòng đọc phần này . Tôi thực sự khuyên bạn nên chạy bước này trên PC.

  4. Để viết hình ảnh, chỉ cần chạy dd if=<jffs2 image> of=/dev/mmcblk0p<JFFS partition number> mẹo Pro : Giữ phân vùng 1 để khởi động, 2 đến ext4(dự phòng) và 3 đến JFFS2.

  5. Bây giờ thẻ SD của bạn đã hoạt động tốt, hãy chỉnh sửa boot.scr(giả sử rằng bạn đang sử dụng kernel ngược dòng, và do đó, u-boot) và xác định cmdline khởi động của bạn thành:

    setenv bootargs earlyprintk block2mtd.block2mtd=/dev/mmcblk0p3,65536 root=/dev/mtdblock0 rootfstype=jffs2
    
  6. Xây dựng lại của bạn boot.scr(kiểm tra Xây dựng bộ tải khởi động của bạn ).

  7. Và cuối cùng, khởi động lại Pi của bạn.

Ghi chú bên:

Q: Bạn chạy một thiết lập như vậy trong bao lâu? A: 7 tháng; làm việc như một cơ duyên

Q: tốc độ thì sao? Trả lời: Nếu bạn cần tốc độ, JFFS2 không phải là giải pháp của bạn. Gắn ổ cứng, sử dụng thẻ SD làm bộ tải khởi động và khởi động từ ổ cứng.

Q: Hình ảnh của tôi mất mãi mãi để gắn kết! A: Bạn đã thêm EBStùy chọn? Ngoài ra, đối với một sân bóng; phân vùng 2 GB mất khoảng. 110 giây để gắn vào pi của tôi.

Chúc may mắn!


4

Từ Wikipedia:

Trong thực tế, các hệ thống tệp flash chỉ được sử dụng cho các thiết bị công nghệ bộ nhớ (MTD), là các bộ nhớ flash nhúng không có bộ điều khiển. Thẻ nhớ flash rời và ổ flash USB có bộ điều khiển tích hợp để thực hiện cân bằng hao mòn và sửa lỗi, vì vậy việc sử dụng một hệ thống tệp flash cụ thể không thêm bất kỳ lợi ích nào.

Nguồn: http://en.wikipedia.org/wiki/Flash_memory#Flash_file_systems

Không nên nhầm lẫn các thanh USB, MMC, SD, CompactFlash và các thiết bị di động phổ biến khác với MTD. Mặc dù chúng chứa bộ nhớ flash, nhưng điều này được ẩn đằng sau giao diện thiết bị khối bằng Lớp dịch Flash.

Nguồn: http://en.wikipedia.org/wiki/Memory_tĩ_device

Vì vậy, không có trường hợp sử dụng nào cho JFFS2 hoặc UBIFS trên thẻ SD mà bạn đặt trong Pi.

Có các giải pháp khác để giảm sự hao mòn của thẻ SD, như gắn nó với tùy chọn relatimehoặc noatime.


Câu trả lời của bạn có được áp dụng nếu sử dụng Mô-đun tính toán RPi với eMMC 4GB trên máy bay hay không?
MikeSchinkel

1
Bạn sẽ phải tìm kiếm thông số kỹ thuật của eMMC trên tàu: nó có phải là thiết bị MTD không? Sau đó, bạn có câu trả lời của bạn.
Amedee Van Gasse
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.