Tôi không tạo thói quen rút pi theo nghĩa là tránh tắt chúng đúng cách trừ khi tôi bị mất mạng trên pi không đầu, trong trường hợp đó tôi thường quá lười để cắm bàn phím, v.v.
Nói chung, tôi luôn kiểm tra để đảm bảo đèn ACT màu xanh lá cây không sáng ở điểm đó; đối với các kiểu máy gần đây (hoặc phần sụn?), phần này sẽ bị tắt khi thẻ SD không được truy cập. Đó là những gì bạn muốn chắc chắn. Trừ khi bạn viết cho nó liên tục, điều này sẽ đủ đơn giản; miễn là có một khoảng trống vừa đủ trong RAM miễn phí (giả sử 50-100 + MB, tùy theo ngữ cảnh), thì những thứ dễ bị sử dụng lại thường xuyên nhưng thực tế không được tải bởi một quy trình tại bất kỳ thời điểm nào sẽ được lưu trong bộ nhớ cache trong bộ nhớ trống và được hệ điều hành tải lại từ đó chứ không phải phương tiện vật lý thực sự. Đây là cách tất cả các hệ điều hành mục đích chung đương đại hoạt động.
Nếu pi đang sử dụng thẻ SD, thì đây là rủi ro tối thiểu : hệ thống tệp trên thẻ không đồng bộ với trạng thái trong bộ nhớ. Thông thường, đây có lẽ không phải là một vấn đề lớn; đối với người mới bắt đầu, việc ghi nhật ký hệ thống tập tin được sử dụng theo mặc định trên hầu hết các pis có thể là một sự bảo vệ chống lại nó, cũng như fsck sẽ được áp dụng tự động khi khởi động nếu hệ thống tập tin không được ngắt sạch. Tôi sẽ giải thích lý do tại sao tôi nói "có thể" chứ không phải "là" trong thời gian ngắn, bởi vì trong bối cảnh này tôi nghĩ nó thường có thể không .
Theo như tôi biết, tôi chưa bao giờ bị hỏng hệ thống tập tin hoặc mất dữ liệu khi rút phích cắm, điều mà tôi có thể đã thực hiện hàng trăm lần trở lên trong nhiều năm qua. Tuy nhiên, một lần nữa, tôi không làm điều đó theo thói quen. Nếu bạn làm điều đó nhiều lần trong ngày, cuối cùng bạn có thể gặp phải bất kỳ mức độ rủi ro thống kê nào, và có một nguy cơ khó chịu liên quan.
Đây là VẤN ĐỀ:
Gần đây, tôi nhận thấy có một vấn đề với thẻ SD mà các cơ chế hệ điều hành / hệ thống tập tin có thể bất lực và điều này có thể giải thích tại sao một số người dường như gặp vấn đề dai dẳng với tham nhũng fs, đặc biệt là những người mắc phải dây bất kể hệ thống trạng thái - ví dụ, gần đây có người ở đây tuyên bố đang chạy các mô-đun tính toán trong đó tham nhũng khiến các hệ thống không thể khởi động trong ~ 1/40 lần cắt điện như vậy.
Nói một cách trừu tượng, không tính đến bản chất của thẻ SD , điều đó không nên xảy ra ngay cả khi hệ thống đang bận, bởi vì những gì có khả năng cuối cùng bị hỏng là những thứ không quan trọng được viết, không phải bất kỳ phần mềm hệ thống nào hiệu quả chỉ đọc và chỉ bị thay đổi trong quá trình cập nhật.
Nó có thể xảy ra nếu các bit bị xáo trộn xung quanh, và do đó thông tin meta của hệ thống tệp lưu trữ các bit khác nhau bị hỏng. Tuy nhiên, một lần nữa, tạp chí và fsck phải có khả năng xử lý việc này, điều này đòi hỏi kernel phải khởi động, nhưng kernel trên pi nằm trên một phân vùng khởi động riêng biệt cũng có thể bị ngắt trong quá trình sử dụng (trừ khi cập nhật) không có cái nào được sử dụng sau khi hệ thống đã khởi động. Có nghĩa là thông tin về phân vùng phải, hiệu quả, không thể bị phá hủy, ngay cả khi nó được gắn kết.
Nhưng...
Thẻ SD là một hộp đen cho hệ điều hành. Không có cách nào thoát khỏi điều đó. Mặc dù có các trình điều khiển cụ thể cho các bộ điều khiển thẻ SD là một phần của phần cứng máy tính (trên pi, đây là một phần của SoC), không có trình điều khiển nào cho các kiểu và kiểu thẻ khác nhau, cụ thể.
Tuy nhiên, tất cả chúng đều có bộ vi điều khiển bên trong chúng có thể hoạt động theo những cách rất khác nhau. 1. Đây là những gì làm cho thẻ một hộp đen; nó tương tác với hệ điều hành thông qua giao thức SD được tiêu chuẩn hóa và đó là điểm kiểm soát cuối cùng mà HĐH có.
Một trong những điều mà thẻ SD và các phương tiện truyền thông trạng thái rắn khác làm khác với các đĩa quay truyền thống là sử dụng địa chỉ ảo mờ; họ không lưu trữ thông tin vật lý theo trình tự mà hệ điều hành cảm nhận được. Điều này chủ yếu là một điều tốt, nếu không chúng ta có thể thực sự cần các trình điều khiển khác nhau cho các nhãn hiệu thẻ khác nhau, v.v., và nó cho phép các thẻ (thực tế) thực hiện cân bằng hao mòn , giúp kéo dài đáng kể tuổi thọ của chúng.
Một điều khác mà họ dựa vào là "khối xóa" tương đối lớn; khi dữ liệu trong một khối cần được thay đổi, toàn bộ khối sẽ bị xóa và ghi lại. Các hệ thống tập tin cũng làm điều này như một vấn đề tất nhiên, nhưng lưu ý rằng ở cấp độ phần mềm hệ thống, và các vấn đề phát sinh từ đây chính xác là các loại vấn đề được đưa ra và fsck
giải quyết.
Điểm mấu chốt của vấn đề không thể vượt qua hơn là những loại phân vùng quy mô làm điều đó trên thường là nhiều nhỏ hơn so với thẻ SD quy mô làm điều đó trên. Nếu không, bạn sẽ lãng phí rất nhiều dung lượng lưu trữ, bởi vì một khối hệ thống tệp chỉ có thể chứa dữ liệu từ một tệp. Nếu khối là 2 MB và chỉ có một vài kB dữ liệu, phần còn lại sẽ bị lãng phí. Vì vậy, các khối hệ thống tập tin có xu hướng nằm trong khoảng từ 1/2 KiB đến 4 KiB.
Một thẻ SD khá rõ ràng không làm điều đó, và trên thực tế, không thể, bởi vì bộ điều khiển trong thẻ SD không có nhận thức về các ranh giới như "tệp", "hệ thống tệp" hoặc thậm chí là "phân vùng thiết bị". Nó chỉ xử lý các khối dữ liệu mà HĐH muốn, thông qua một lớp mờ từ bên trong hộp đen nơi mọi thứ có thể xảy ra ở cấp độ vật lý.
Một trong những lý do rõ ràng (ngoài các thẻ tiền đề "không thể làm điều đó ngay từ đầu") là những khối đó thường khá lớn, nhưng các thẻ dường như làm rất tốt việc tận dụng mọi không gian. Một khối xóa có thể có kích thước vài megabyte . Hơn nữa, các chi tiết là độc quyền. Mặc dù có thể có các cơ chế mà HĐH có thể yêu cầu kích thước khối xóa khỏi thẻ, nhưng thẻ không phải cung cấp điều này, nó có thể nói dối về nó và nó sẽ trở nên vô lý nếu HĐH cố gắng tận dụng nó.
Nó xuất phát từ điều này kể từ:
Bộ điều khiển thẻ SD không có khái niệm về dữ liệu "đúng" thuộc về nơi nào trong ý nghĩa của các hệ thống tập tin và kết nối chặt chẽ, và,
Thẻ SD là một hộp đen mà HĐH không thể thực sự nhìn thấy,
Sau đó, những gì trong một khối xóa 1 MB đã cho, trong đó thẻ chứa một số phân vùng sử dụng 4 khối KiB hoặc các khối hệ thống tệp nhỏ hơn, bị ràng buộc là tùy ý một khi thẻ đã được sử dụng đủ (và thậm chí nếu nó không được sử dụng nhiều tại tất cả các). Điều này có thể đúng ngay cả khi bạn cố gắng buộc HĐH sử dụng kích thước khối lớn hơn / tương ứng; họ sẽ kết thúc sai.
Vì thế:
Nếu nguồn bị cắt trong khi thẻ SD ở giữa thay đổi một khối, điều đó có thể dẫn đến việc mất một khối lượng dữ liệu tùy ý khá lớn có thể là bất cứ thứ gì từ thẻ. Nó có thể là thông tin được đánh dấu "chỉ đọc". Đó có thể là thông tin từ một phân vùng thậm chí không được gắn kết và rõ ràng là đủ từ phân vùng khởi động hầu hết chưa được sử dụng.
Nếu điều đó xảy ra và thẻ không có hệ thống tự vệ nào đó (mà một số có thể có, nhưng tôi chắc chắn là không), thì bạn có thể xem xét tình huống FUBAR. Nhật ký sẽ không bảo vệ chống lại tham nhũng kích thước MB ngẫu nhiên mà thậm chí không nhận ra ranh giới phân vùng. Hoặc fsck.
Hoặc, vì phần cứng của thẻ nói chung là độc quyền, có thể là bất cứ thứ gì khác ngoại trừ phần mềm do nhà sản xuất thẻ sản xuất - cho rằng điều đó là hợp lý. Tôi chưa bao giờ nghe nói như vậy. Điều này sẽ làm cho thẻ phức tạp hơn, đắt tiền hơn và rắc rối hơn khi sử dụng. Đó không phải là mục tiêu.
Nói cách khác, thẻ SD không được sử dụng một cách đáng tin cậy theo cách này . Chúng rẻ và rất tiện dụng nhưng đó là kết quả của sự đánh đổi trong giao thức: Nói chung, không có gì đảm bảo tính toàn vẹn dữ liệu cho bất cứ thứ gì trên thẻ nếu bạn tự ý giết chết nguồn điện của nó.
Điều gì có thể đi sai với chỉ rút phích cắm Pi? Tôi có nên bắt đầu rút phích cắm không? Lưu ý: Trong trường hợp này tôi không quá lo lắng về việc mất dữ liệu.
Nó sẽ không gây hại về mặt vật lý, không, chỉ cần cẩn thận "mất dữ liệu" có thể mở rộng thành "thẻ vô dụng" cần được định dạng lại hoàn toàn. Tuy nhiên, tôi muốn nói rằng cơ hội của điều đó nếu bạn đang làm điều đó với đèn ACT màu xanh lá cây tắt là rất thấp.
- Điều này có thể có ý nghĩa khi xem xét lý do tại sao một số kiểu / mẫu thẻ cụ thể rõ ràng tệ hơn so với những người khác đối với một số người. Thật không may, trong khi hai thẻ được dán nhãn giống hệt nhau về các tính năng đã nêu (kích thước, tốc độ, v.v.), các nhà sản xuất không bị ràng buộc làm cho chúng thực sự giống nhau 100% về các bộ phận cấu thành.