Linux는 블록 장치 크기를 업데이트합니까?

Linux는 블록 장치 크기를 업데이트합니까?

emmc 마모 모니터링을 해보니, 실행 중인 Linux OS에 표시되는 크기를 알고 싶습니다. emmc 칩에는 모든 다른 바이트 레지스터의 사용 강도를 추적하는 내부 관리자가 있습니다. 이론적으로 SSD, USB 스틱 또는 emmc 칩과 같은 플래시 메모리 장치는 실시간 제한에 도달하면 용량이 줄어듭니다.

 $ lsblk -b

.. 다음과 같이 블록 크기를 바이트 단위로 반환합니다.

lsblk-b

전체 emmc 이미지의 용량과 크기가 감소하면 이 숫자가 자동으로 업데이트됩니까?

실제 사용 가능한 블록 크기를 실시간으로 표시할 수 있는 다른 도구가 있습니까?

편집하다:@Marcus 및 @Artem의 의견에 따름

emmc 드라이버에는 "수명 종료" 표시가 구현된 가상 파일 시스템 항목이 있습니다. 제 기억이 맞다면 0x02는 80% 용량 손실을 나타내고 0x03은 ​​90% 용량 손실을 나타냅니다. 귀하의 emmc가 사라진 것을 깨닫는 것이 조금 늦었기 때문에 이 중요한 정보를 초기에 표시할 수 있는 방법을 찾고 있습니다.

보고:cat /sys/class/block/mmcblk1/device/pre_eol_info

답변1

습관. eMMC 및 일부 플래시 드라이브와 같은 내부 웨어 레벨링 기능이 있는 장치는 처음에는 전체 용량을 광고하지 않습니다.

따라서 장치에는 1536개의 블록이 있을 수 있지만 시스템에는 1024개의 블록만 표시됩니다. 운영 체제에 액세스할 수 있는 1024개 블록은 동일한 블록이라는 보장이 없으며 재할당 등이 가능합니다.

따라서 운영 체제에 표시되는 크기를 사용하여 현재 수명 종료 상태를 확인할 수 없습니다.

답변2

일부 백서를 읽은 후 추가 업데이트: (Micron)

댓글들에 제 나름대로의 해석이 섞여서 엇갈린 메시지가 나오는 것 같아서 최대한 정확하게 표현하려고 노력 중이에요.

분명히 모든 Micron emmc 칩에는 예약 블록이라고 불리는 2%의 추가 메모리 용량이 있습니다. 2%는 칩의 예상 수명 저하입니다. (이건 마케팅 수치에 가깝다고 생각합니다)

불량 블록이 감지될 때마다 예약된 블록에서 새로운 블록으로 교체됩니다. 이는 특정 핫스팟에서의 마모를 방지하기 위해 메모리 블록 사용의 균형을 맞추는 내부 메모리 관리자에 의해 수행됩니다. 부작용으로 메모리 블록이 항상 동일한 강도로 사용되기 때문에 EOL이 빠르게 발생합니다.

즉, 운영체제 입장에서는 메모리 크기가 어느 정도 안정적으로 유지된다는 뜻이다.

Linux 드라이버는 emmc 장치의 EOL 추정치를 확인하기 위한 항목을 생성합니다.

보고:

cat  /sys/class/block/mmcblk1/device/pre_eol_info 

거기에서 숫자를 찾을 수 있습니다:

  • 0x01: 정상 작동
  • 0x02: 예약된 메모리 용량의 80%가 사용되었습니다.
  • 0x03: 예약된 메모리 용량의 90%가 사용되었습니다.

0x03은 ​​칩의 심각한 경고입니다. 그 시점부터 칩은 용량을 소모하고 빠르게 성능이 저하됩니다.

관련 정보