라즈베리 로고

Raspberry Pi를 더욱 탄력적으로 만들기 File 체계

라즈베리파이, 더욱 탄력적인 라즈베리파이 만들기File-시스템 제품

문서의 범위

이 문서는 다음 Raspberry Pi 제품에 적용됩니다.

파이 0 파이 1 파이 2 파이 3 파이 4 파이 400 CM1 CM3 CM4 CM 5 피코
0 W H A B A B B 모두 모두 모두 모두 모두 모두 모두
* * * * * * * * * * * * * *  

 

소개

Raspberry Pi Ltd 장치는 데이터 저장 및 모니터링 장치로 자주 사용되며, 특히 갑작스러운 전원 공급 중단이 발생할 수 있는 환경에서 자주 사용됩니다. 다른 컴퓨팅 장치와 마찬가지로 전원 공급 중단은 저장 장치 손상을 유발할 수 있습니다. 본 백서에서는 이러한 상황에서 데이터 손상을 방지하기 위해 적절한 방법을 선택하는 몇 가지 방법을 제시합니다. file 데이터 무결성을 보장하기 위한 시스템 및 설정. 본 백서는 Raspberry Pi가 Raspberry Pi(Linux) 운영 체제(OS)를 실행하고 있으며 최신 펌웨어 및 커널로 완전히 업데이트되었다고 가정합니다.

데이터 손상이란 무엇이고 왜 발생합니까?
데이터 손상은 쓰기, 읽기, 저장, 전송 또는 처리 중에 발생하는 컴퓨터 데이터의 의도치 않은 변경을 의미합니다. 이 문서에서는 전송이나 처리가 아닌 저장만을 다룹니다. 쓰기 프로세스가 완료되기 전에 중단되어 쓰기가 완료되지 못하는 경우, 예를 들어 데이터 손상이 발생할 수 있습니다.amp전원이 꺼진 경우를 대비하여, 이 시점에서 Linux OS(그리고 확장하여 Raspberry Pi OS)가 저장소에 데이터를 쓰는 방식을 간략하게 소개하는 것이 좋습니다. Linux는 일반적으로 쓰기 캐시를 사용하여 저장소에 쓸 데이터를 저장합니다. 이 캐시는 특정 사전 정의된 한계에 도달할 때까지 데이터를 RAM(Random Access Memory)에 캐시(임시 저장)합니다. 이 한계에 도달하면 저장 매체에 대한 모든 미처리 쓰기 작업이 한 번의 트랜잭션으로 처리됩니다. 이러한 사전 정의된 한계는 시간 및/또는 크기에 따라 달라질 수 있습니다. 예를 들어,amp데이터는 캐시되어 5초마다 저장소에 기록되거나, 일정량의 데이터가 누적된 후에만 기록될 수 있습니다. 이러한 방식은 성능 향상에 사용됩니다. 많은 양의 데이터를 한 번에 기록하는 것이 작은 양의 데이터를 여러 개 기록하는 것보다 빠릅니다.

하지만 캐시에 데이터가 저장되고 쓰기가 진행되는 사이에 전원이 꺼지면 해당 데이터는 손실됩니다. 쓰기 과정 후반부, 즉 저장 매체에 데이터를 물리적으로 쓰는 과정에서 다른 문제가 발생할 수 있습니다. 예를 들어, 하드웨어(예:amp보안 디지털(SD) 카드 인터페이스)에 데이터를 쓰라는 명령이 전달되더라도, 데이터가 물리적으로 저장되는 데는 여전히 유한한 시간이 걸립니다. 다시 말하지만, 이 매우 짧은 시간 동안 정전이 발생하면 쓰이던 데이터가 손상될 수 있습니다. 라즈베리 파이를 포함한 컴퓨터 시스템을 종료할 때는 종료 옵션을 사용하는 것이 가장 좋습니다. 이렇게 하면 캐시된 모든 데이터가 기록되고 하드웨어가 저장 매체에 데이터를 실제로 쓸 시간을 확보할 수 있습니다. 대부분의 라즈베리 파이 기기에서 사용하는 SD 카드는 저렴한 하드 드라이브 대체품으로는 훌륭하지만, 사용 방식에 따라 시간이 지남에 따라 고장이 발생할 수 있습니다. SD 카드에 사용되는 플래시 메모리는 쓰기 주기 수명이 제한되어 있으며, 이 한계에 도달하면 카드의 신뢰성이 떨어질 수 있습니다. 대부분의 SD 카드는 마모 레벨링(wear leveling)이라는 절차를 사용하여 최대한 오래 사용할 수 있도록 하지만, 결국 고장날 수 있습니다. 카드에 얼마나 많은 데이터가 기록되었는지, 또는 (더 중요하게는) 삭제되었는지에 따라 수개월에서 수년까지 걸릴 수 있습니다. 이 수명은 카드마다 크게 다를 수 있습니다. SD 카드 오류는 일반적으로 무작위로 표시됩니다. file SD 카드의 일부가 손상되어 사용할 수 없게 됩니다.

데이터가 손상되는 다른 방법도 있는데, 여기에는 저장 매체 결함, 저장 장치 작성 소프트웨어(드라이버)의 버그, 애플리케이션 자체의 버그 등이 포함되나 이에 국한되지는 않습니다. 본 백서에서는 데이터 손실이 발생할 수 있는 모든 프로세스를 손상 이벤트로 정의합니다.

쓰기 작업은 무엇 때문에 발생할 수 있나요?
대부분의 애플리케이션은 저장소에 어떤 종류의 쓰기 작업을 수행합니다.amp구성 정보, 데이터베이스 업데이트 등. 이 중 일부는 files는 일시적일 수도 있습니다. 즉, 프로그램 실행 중에만 사용되며 전원이 꺼졌다 켜졌다 하는 동안 유지될 필요가 없습니다. 그러나 이러한 경우에도 저장 매체에 쓰기 작업이 발생합니다. 애플리케이션이 실제로 데이터를 쓰지 않더라도 Linux는 백그라운드에서 저장소에 지속적으로 쓰기 작업을 수행하며, 주로 로깅 정보를 씁니다.

하드웨어 솔루션

이 백서의 범위를 완전히 벗어나지는 않지만, 예상치 못한 정전을 방지하는 것은 데이터 손실에 대한 널리 사용되고 잘 알려진 완화책이라는 점을 언급할 가치가 있습니다. 무정전 전원 공급 장치(UPS)와 같은 장치는 전원 공급이 안정적으로 유지되도록 보장하며, UPS에 전원이 공급되지 않을 경우 배터리 전원을 사용하는 동안 컴퓨터 시스템에 정전이 임박했음을 알려 백업 전원 공급이 소진되기 전에 시스템을 정상적으로 종료할 수 있도록 합니다. SD 카드는 수명이 제한되어 있으므로, SD 카드가 수명을 다하기 전에 교체할 ​​수 있도록 하는 교체 계획을 세우는 것이 유용할 수 있습니다.

건장한 file 시스템

Raspberry Pi 기기를 손상 이벤트로부터 보호하는 방법은 다양합니다. 각 방법마다 손상 방지 능력이 다르며, 각 방법을 사용할 때마다 손상 발생 가능성이 줄어듭니다.

  • 쓰기 줄이기
    애플리케이션과 Linux OS의 쓰기 작업량을 줄이는 것만으로도 긍정적인 효과를 얻을 수 있습니다. 로깅을 많이 사용하는 경우, 손상 이벤트 발생 시 쓰기가 발생할 가능성이 높아집니다. 애플리케이션 로깅을 줄이는 것은 최종 사용자의 몫이지만, Linux 로깅 또한 줄일 수 있습니다. 특히 쓰기 수명 주기가 제한된 플래시 기반 스토리지(예: eMMC, SD 카드)를 사용하는 경우 더욱 그렇습니다.
  • 커밋 시간 변경
    커밋 시간 file 시스템은 모든 데이터를 저장소에 복사하기 전에 데이터를 캐시하는 데 걸리는 시간입니다. 이 시간을 늘리면 많은 쓰기 작업을 일괄 처리하여 성능이 향상되지만, 데이터가 기록되기 전에 손상 이벤트가 발생하면 데이터 손실로 이어질 수 있습니다. 커밋 시간을 줄이면 손상 이벤트로 인한 데이터 손실 가능성이 줄어들지만, 완전히 방지할 수는 없습니다.
    메인 EXT4의 커밋 시간을 변경하려면 file Raspberry Pi OS의 시스템에서는 \etc\fstab을 편집해야 합니다. file 어떻게 정의하는지 file 시스템은 시작 시에 마운트됩니다.
  • $sudo nano /etc/fstab

루트에 대한 EXT4 항목에 다음을 추가합니다. file 체계:

  • 커밋=

fstab은 다음과 같을 수 있습니다. 커밋 시간이 3초로 설정되어 있습니다. 커밋 시간을 별도로 설정하지 않으면 기본적으로 5초로 설정됩니다.

라즈베리파이, 더욱 탄력적인 라즈베리파이 만들기File-체계-

 

일시적인 file 시스템

신청서에 임시가 필요한 경우 file 저장소, 즉 애플리케이션이 실행되는 동안만 사용되고 종료 시 저장이 필요하지 않은 데이터인 경우 저장소에 대한 물리적 쓰기를 방지하기 위한 좋은 옵션은 임시 저장소를 사용하는 것입니다. file 시스템, tmpfs. 이것들은 file 시스템은 RAM 기반(실제로는 가상 메모리)이므로 tmpfs에 쓰여진 데이터는 물리적 저장소에 쓰여지지 않으며, 따라서 플래시 수명에 영향을 미치지 않으며 손상 이벤트로 인해 손상될 수 없습니다.
하나 이상의 tmpfs 위치를 생성하려면 /etc/fstab을 편집해야 합니다. file모든 것을 제어하는 file Raspberry Pi OS 기반 시스템. 다음 예ample는 저장소 기반 위치 /tmp 및 /var/log를 임시로 대체합니다. file 시스템 위치. 두 번째 examp표준 로깅 폴더를 대체하는 le는 전체 크기를 제한합니다. file 시스템을 16MB로 확장합니다.

  • tmpfs /tmp tmpfs 기본값,noatime 0 0
  • tmpfs /var/log tmpfs 기본값,noatime,size=16m 0 0

GitHub에서 RAM 로깅을 설정하는 데 도움이 되는 타사 스크립트도 있습니다. 이 스크립트는 미리 정의된 간격으로 RAM 기반 로그를 디스크에 저장하는 추가 기능을 제공합니다.

읽기 전용 루트 file 시스템

뿌리 file 시스템(rootfs)은 file 루트 디렉토리가 있는 디스크 파티션의 시스템이며 file 다른 모든 것이 있는 시스템 file 시스템이 부팅될 때 마운트됩니다. Raspberry Pi에서는 /이며, 기본적으로 SD 카드에 읽기/쓰기가 가능한 EXT4 파티션으로 위치합니다. 또한 /boot로 마운트되는 부팅 폴더가 있으며, 읽기/쓰기가 가능한 FAT 파티션입니다. rootfs를 읽기 전용으로 설정하면 모든 종류의 쓰기 접근이 차단되어 손상 이벤트에 훨씬 더 강해집니다. 그러나 다른 조치를 취하지 않으면 아무것도 쓸 수 없습니다. file 시스템이 전혀 작동하지 않으므로 애플리케이션에서 루트 파일 시스템에 데이터를 저장하는 것은 비활성화됩니다. 애플리케이션에서 데이터를 저장해야 하지만 읽기 전용 루트 파일 시스템을 원하는 경우, 일반적인 방법은 사용자 데이터 저장 전용 USB 메모리 스틱 등을 추가하는 것입니다.

메모
스왑을 사용하는 경우 file 읽기 전용을 사용할 때 file 시스템에서는 스왑을 이동해야 합니다. file 읽기/쓰기 파티션으로.

씌우다 file 체계

오버레이 file 시스템(overlayfs)은 두 가지를 결합합니다. file 시스템, 상위 file 시스템 및 하위 file 시스템. 이름이 두 시스템 모두에 존재하는 경우 file 시스템, 상위의 객체 file 시스템은 아래쪽에 있는 객체가 보이는 동안 표시됩니다. file 시스템은 숨겨져 있거나, 디렉터리의 경우 상위 객체와 병합됩니다. Raspberry Pi는 raspi-config에서 오버레이 파일 시스템(overlayfs)을 활성화하는 옵션을 제공합니다. 이렇게 하면 루트 파일 시스템(하위)이 읽기 전용이 되고, RAM 기반 상위 파일 시스템이 생성됩니다. file 시스템입니다. 이는 읽기 전용과 매우 유사한 결과를 제공합니다. file 시스템에서는 재부팅 시 모든 사용자 변경 사항이 손실됩니다. 명령줄 raspi-config를 사용하거나 데스크톱 Raspberry Pi Configuration 애플리케이션의 환경 설정 메뉴에서 overlayfs를 활성화할 수 있습니다.

또한 위에서 아래로 필요한 변경 사항을 동기화할 수 있는 overlayfs의 다른 구현도 있습니다. file 미리 정해진 일정에 따라 시스템. 예를 들어amp영어: le, 2시간마다 사용자의 홈 폴더 내용을 위에서 아래로 복사할 수 있습니다.이렇게 하면 쓰기 프로세스가 매우 짧은 시간으로 제한되어 손상 가능성이 훨씬 낮아지지만 동기화 전에 전원이 꺼지면 마지막 동기화 이후 생성된 모든 데이터가 손실됩니다.컴퓨트 모듈의 pSLC Raspberry Pi 컴퓨트 모듈 장치에 사용되는 eMMC 메모리는 MLC(Multi-Level Cell)로, 각 메모리 셀은 1비트를 나타냅니다.pSLC 또는 의사 단일 레벨 셀은 호환되는 MLC 저장 장치에서 활성화할 수 있는 NAND 플래시 메모리 기술 유형으로, 각 셀은 3,000비트만 나타냅니다.SLC 플래시의 성능과 내구성과 MLC 플래시의 비용 효율성 및 더 큰 용량 간의 균형을 제공하도록 설계되었습니다.pSLC는 셀에 데이터를 덜 자주 쓰면 마모가 줄어들기 때문에 MLC보다 쓰기 내구성이 더 높습니다. MLC는 약 10,000회에서 XNUMX회 정도의 쓰기 횟수를 제공하는 반면, pSLC는 SLC의 내구성 수준에 근접하는 훨씬 더 높은 쓰기 횟수를 달성할 수 있습니다. 이처럼 향상된 내구성은 pSLC 기술을 사용하는 장치의 수명을 표준 MLC를 사용하는 장치보다 더 길게 만듭니다.

MLC는 SLC 메모리보다 비용 효율적이지만, pSLC는 순수 MLC보다 성능과 내구성이 뛰어나지만, 용량이 줄어듭니다. pSLC로 구성된 MLC 장치는 각 셀이 두 개 이상의 비트가 아닌 한 개의 비트만 저장하기 때문에 표준 MLC 장치의 절반(또는 그 이하)의 용량을 갖게 됩니다.

구현 세부 사항

pSLC는 eMMC에서 향상된 사용자 영역(향상된 스토리지라고도 함)으로 구현됩니다. 향상된 사용자 영역의 실제 구현은 MMC 표준에 정의되어 있지 않지만, 일반적으로 pSLC로 구현됩니다.

  • 향상된 사용자 영역은 개념이고, pSLC는 구현입니다.
  • pSLC는 향상된 사용자 영역을 구현하는 한 가지 방법입니다.
  • 이 글을 쓰는 시점에서 Raspberry Pi 컴퓨트 모듈에 사용된 eMMC는 pSLC를 사용하여 향상된 사용자 영역을 구현합니다.
  • 전체 eMMC 사용자 영역을 향상된 사용자 영역으로 구성할 필요는 없습니다.
  • 메모리 영역을 향상된 사용자 영역으로 프로그래밍하는 것은 일회성 작업입니다. 즉, 실행 취소가 불가능합니다.

켜기
Linux는 mmc-utils 패키지에서 eMMC 파티션을 조작하는 명령 세트를 제공합니다. CM 장치에 표준 Linux OS를 설치하고 다음과 같이 도구를 설치하세요.

  • sudo apt install mmc-utils

eMMC에 대한 정보를 얻으려면(표시할 정보가 매우 많으므로 이 명령은 less로 연결됩니다):

  • sudo mmc extcsd read /dev/mmcblk0 | less

 경고
다음 작업은 일회성 작업으로, 한 번 실행하면 취소할 수 없습니다. 또한 모든 데이터가 삭제되므로 컴퓨트 모듈을 사용하기 전에 실행해야 합니다. eMMC 용량이 이전 값의 절반으로 줄어듭니다.

pSLC를 켜는 데 사용되는 명령은 mmc enh_area_set이며, 이 명령에는 pSLC를 얼마나 많은 메모리 영역으로 활성화할지 지정하는 여러 매개변수가 필요합니다. 다음은 예시입니다.ample는 전체 영역을 사용합니다. eMMC의 일부 영역 사용 방법에 대한 자세한 내용은 mmc 명령 도움말(man mmc)을 참조하세요.

라즈베리파이, 더욱 탄력적인 라즈베리파이 만들기File-체계-

기기를 재부팅한 후에는 운영 체제를 다시 설치해야 합니다. pSLC를 활성화하면 eMMC의 내용이 지워지기 때문입니다.

Raspberry Pi CM Provisioner 소프트웨어에는 프로비저닝 과정에서 pSLC를 설정하는 옵션이 있습니다. 이 옵션은 GitHub에서 확인할 수 있습니다. https://github.com/raspberrypi/cmprovision.

  • 오프디바이스 file 시스템/네트워크 부팅
    Raspberry Pi는 예를 들어 네트워크 연결을 통해 부팅할 수 있습니다.amp네트워크를 사용하는 le File 시스템(NFS). 즉, 장치가 첫 번째 작업을 완료하면tag커널과 루트를 로드하는 대신 e boot를 사용합니다. file SD 카드에서 시스템을 다운로드하는 경우 네트워크 서버에서 로드됩니다. 실행되면 모든 file 작업은 로컬 SD 카드가 아닌 서버에서 실행되며, 해당 절차에서 더 이상 역할을 하지 않습니다.
  • 클라우드 솔루션
    요즘 많은 사무 작업이 브라우저에서 이루어지고 모든 데이터는 클라우드에 온라인으로 저장됩니다. SD 카드에 데이터를 저장하지 않으면 안정성이 향상될 수 있지만, 상시 인터넷 연결이 필요하고 클라우드 제공업체에서 요금을 부과할 수 있다는 단점이 있습니다. 사용자는 Raspberry Pi OS에 최적화된 브라우저를 통해 정식 Raspberry Pi OS를 설치하여 Google, Microsoft, Amazon 등의 클라우드 서비스에 액세스할 수 있습니다. 대안으로, Raspberry Pi OS를 SD 카드 대신 중앙 서버에 저장된 리소스에서 실행되는 OS/애플리케이션으로 대체하는 씬 클라이언트 제공업체가 있습니다. 씬 클라이언트는 대부분의 애플리케이션, 민감한 데이터 및 메모리가 저장된 서버 기반 컴퓨팅 환경에 원격으로 연결하여 작동합니다.

결론

올바른 종료 절차를 따르면 Raspberry Pi의 SD 카드 저장 장치는 매우 안정적입니다. 이는 종료를 제어할 수 있는 가정이나 사무실 환경에서는 효과적이지만, 산업용으로 사용하거나 전원 공급이 불안정한 환경에서 Raspberry Pi 장치를 사용할 경우 추가적인 예방 조치를 통해 안정성을 향상시킬 수 있습니다.

간단히 말해, 신뢰성을 개선하기 위한 옵션은 다음과 같습니다.

  • 잘 알려져 있고 신뢰할 수 있는 SD 카드를 사용하세요.
  • 더 긴 커밋 시간을 사용하여 쓰기를 줄이고 임시를 사용합니다. file 오버레이 파일(overlayfs)이나 이와 유사한 것을 사용하는 시스템.
  • 네트워크 부팅이나 클라우드 스토리지와 같은 장치 외부 스토리지를 사용하세요.
  • SD 카드의 수명이 다하기 전에 교체하는 제도를 시행합니다.
  • UPS를 사용하세요.

Raspberry Pi는 Raspberry Pi Ltd의 상표입니다.
라즈베리파이(주)

출판사 마크
© 2020-2023 Raspberry Pi Ltd (구 Raspberry Pi (Trading) Ltd.)
본 문서는 크리에이티브 커먼즈 저작자표시-변경금지 4.0 International(CC BY-ND) 라이선스에 따라 제공됩니다.

  • 빌드 날짜: 2024-06-25
  • 빌드 버전: githash: 3e4dad9-clean

법적 고지 사항
RASPBERRY PI 제품에 대한 기술 및 신뢰성 데이터(데이터시트 포함)는 수시로 수정될 수 있으며("리소스") RASPBERRY PI LTD("RPL")에서 "있는 그대로" 제공되며 상품성과 특정 목적에의 적합성에 대한 묵시적 보증을 포함하되 이에 국한되지 않는 명시적 또는 묵시적 보증은 부인됩니다. 해당 법률에 허용되는 최대 범위 내에서 어떠한 경우에도 RPL은 계약, 엄격책임 또는 불법행위(과실 또는 기타 포함)에 따른 책임 이론에 관계 없이 리소스 사용으로 인해 발생하는 직접적, 간접적, 우발적, 특별, 모범적 또는 결과적 손해(대체 상품 또는 서비스의 조달, 사용, 데이터 또는 수익 손실, 사업 중단을 포함하되 이에 국한되지 않음)에 대해 책임을 지지 않습니다. 이는 그러한 손해의 가능성을 통보받았더라도 마찬가지입니다.

RPL은 언제든지 사전 고지 없이 RESOURCES 또는 RESOURCES에 설명된 제품에 대한 개선, 개선, 수정 또는 기타 수정을 할 권리를 보유합니다. RESOURCES는 적절한 수준의 설계 지식을 갖춘 숙련된 사용자를 대상으로 합니다. 사용자는 RESOURCES의 선택 및 사용과 RESOURCES에 설명된 제품의 모든 적용에 대한 전적인 책임을 집니다. 사용자는 RESOURCES 사용으로 인해 발생하는 모든 책임, 비용, 손해 또는 기타 손실에 대해 RPL을 면책하고 책임을 지지 않을 것에 동의합니다. RPL은 사용자에게 Raspberry Pi 제품과 함께 사용하는 경우에만 RESOURCES를 사용할 수 있는 권한을 부여합니다. RESOURCES의 다른 모든 사용은 금지됩니다. 다른 RPL 또는 제3자의 지적 재산권에 대한 라이선스는 부여되지 않습니다.

고위험 활동. Raspberry Pi 제품은 핵 시설, 항공기 항법 또는 통신 시스템, 항공 교통 관제, 무기 시스템 또는 안전에 중요한 애플리케이션(생명 지원 시스템 및 기타 의료 기기 포함)과 같이 실패 안전 성능이 필요한 위험한 환경에서 사용하도록 설계, 제조 또는 의도되지 않았습니다. 이러한 환경에서는 제품 고장으로 인해 사망, 개인 부상 또는 심각한 신체적 또는 환경적 손상이 직접 발생할 수 있습니다("고위험 활동"). RPL은 고위험 활동에 대한 적합성에 대한 명시적 또는 묵시적 보증을 구체적으로 부인하며 고위험 활동에 Raspberry Pi 제품을 사용하거나 포함하는 것에 대한 책임을 지지 않습니다. Raspberry Pi 제품은 RPL의 표준 약관에 따라 제공됩니다. RPL의 RESOURCES 제공은 RPL의 표준 약관(여기에 명시된 면책 조항 및 보증을 포함하되 이에 국한되지 않음)을 확장하거나 수정하지 않습니다.

자주 묻는 질문

  • 질문: 이 문서에서는 어떤 Raspberry Pi 제품을 지원하나요?
    답변: 이 문서는 Pi 0 W, Pi 1 A/B, Pi 2 A/B, Pi 3, Pi 4, Pi 400, CM1, CM3, CM4, CM5, Pico를 포함한 다양한 Raspberry Pi 제품에 적용됩니다.
  • 질문: Raspberry Pi 기기의 데이터 손상 가능성을 줄이려면 어떻게 해야 하나요?
    A: 쓰기 작업, 특히 로깅 활동을 최소화하고 커밋 시간을 조정하면 데이터 손상을 줄일 수 있습니다. file 이 문서에 설명된 시스템입니다.

문서 / 리소스

Raspberry Pi를 더욱 탄력적으로 만들기 File 체계 [PDF 파일] 사용자 가이드
Pi 0, Pi 1, 더욱 탄력적인 만들기 File 시스템, 더욱 탄력적 File 시스템, 회복력 File 체계, File 체계

참고문헌

댓글을 남겨주세요

이메일 주소는 공개되지 않습니다. 필수 항목은 표시되어 있습니다. *