EROFS, 데이터 손상을 막기 위해 LZ4 롤링 압축 해제를 멈춘다

EROFS, 데이터 손상을 막기 위해 LZ4 롤링 압축 해제를 멈춘다

EROFS가 Linux 7.3에서 LZ4 롤링 압축 해제 기능을 일시적으로 비활성화합니다. 특정 압축 데이터에서 메모리 복사 과정이 꼬이면서 잘못된 데이터가 반환될 가능성이 확인됐기 때문입니다.

임베디드 기기나 컨테이너 이미지처럼 데이터를 주로 읽는 환경에서 많이 쓰이는 파일 시스템이라, 이번 조치가 특히 눈에 띕니다.

임베디드 시스템에서의 압축 해제 방식 변경에 따른 메모리 관리 및 성능 변화

임베디드 시스템에서의 압축 해제 방식 변경에 따른 메모리 관리 및 성능 변화
임베디드 시스템에서의 압축 해제 방식 변경에 따른 메모리 관리 및 성능 변화

기존 롤링 방식은 최근 복원한 데이터를 재사용해 메모리 사용량이 줄어드는 장점이 있었지만, LZ4 구현의 복사 방식과 맞물리면서 예상치 못한 문제가 발생할 수 있었죠. 그래서 개발진은 근본적인 해결책이 마련될 때까지 보다 안전한 압축 해제 방식을 사용하기로 했습니다.

대신 압축 해제 과정에서 필요한 임시 메모리가 늘어날 수 있어, 메모리가 제한적인 임베디드 환경에서는 성능 저하가 나타날 가능성이 있습니다. 최근 EROFS에는 압축 해제용 버퍼를 재사용하는 기능도 추가돼 메모리 부담을 덜어 줄 것으로 보입니다.

일반 데스크톱 사용자에게는 큰 영향이 없을 전망입니다. 다만 EROFS를 시스템 영역이나 컨테이너 이미지에 사용하는 서버·임베디드 장비에서는 커널 업데이트 후 메모리 사용량과 압축 해제 성능을 확인할 필요가 있습니다.

개발진은 데이터 무결성을 우선해 문제를 해결한 뒤, 안전성이 확인되는 대로 해당 최적화를 다시 적용할 예정입니다.

원문 뉴스 : Phoronix


🐧 Linuxroom의 생각 :

EROFS(Enhanced Read-Only File System)가 무엇이냐 하면, 화웨이(Huawei)라는 중국의 스마트폰 제조 회사에서 처음 개발한 파일 시스템입니다. Read-Only에서도 알 수 있듯, Linux에서 사용하기 위해 만들어진 읽기 전용 파일 시스템인 셈이죠.

기존의 유명한 파일 시스템들과 달리 수정은 불가능하고 읽기만 가능한 환경에 최적화 되어있습니다.

주요 특징으로서는, 높은 압축률과 빠른 속도라고 할 수 있는데요, 데이터를 효과적으로 압축해서 저장 공간을 절약하면서도, 필요한 순간에 딜레이 없이 빠르게 압축을 풀어서 데이터를 읽어오고, 낮은 메모리 사용량으로 용량이 작은 기기에서도 효율적으로 작동하도록 메모리 소비를 최소화 하는 특징이 있습니다.

보통 스마트폰에서 시스템 영역(사용자가 함부로 수정함녀 안되는 핵심 OS 영역)등에서 널리 사용됩니다. 또한 임베디드 기기 (차량용이라던지 스마트 가전 등)에서 많이 사용되곤 하죠.

뉴스에서 나왔듯 무슨일이 있었는지 간략하게 설명하자면,

상자에 담긴 짐(압축된 데이터)가 있습니다. 이 짐을 풀어야 하는 상황입니다.
원래대로라면 롤링 방식 이라고 해서 짐을 풀 때 "어라? 방금 푼 상자 내용물이랑 같네?" 하고, 이미 꺼내둔 물건을 그대로 재활용해서 쓰는 방식을 사용했습니다.
이 방식의 장점이라면 다시 꺼낼 필요가 없이 메모리가 절약되는 효과가 있었거든요.

그런데 문제점이 발생하게 됩니다. 특정 짐을 풀 때에, 물건을 복사해서 꺼내는 과정이 꼬여서 잘못된 물건(오류 데이터)가 나올 수 있는 치명적인 위험이 발견되었거든요.

이를 악용하면 악성 데이터를 주입할 수도 있기 때문에, 빠르게 수정이 되었습니다.

변경된 방식으로서는, 오류가 나면 안 되니, 일단 데이터를 놓아둘 임시 메모리를 넓게 사용하고, 안전하게 압축을 풀자 라는식으로 방침을 바꾼것이죠. 장점이라면 데이터가 꼬일 일이 없어 매우 안전하지만, 단점으로서는 메모리를 넓게 사용하다보니, 메모리가 부족한 기기에서는 작업 속도가 느려질 수 있는 리스크가 있습니다.

사실상 우리가 일반적으로 쓰는 풍부한 용량의 메모리를 가진 스마트폰에서는 별로 체감할 수 있는 차이는 없고, 소형 임베디드 기기나 메모리가 부족한 컨테이너 환경을 사용하는 사양이 낮은 서버를 운용할 경우에, 커널 업데이트를 하고 나면, 약간 느려질 수 있겠구나 라고 느낄 수 있다는 이야기 입니다.

결국엔 약간의 성능과 메모리를 희생하더라도 데이터가 깨지는 것을 막는 안전함(무결성)을 선택했다 라는 내용의 이야기인 셈이죠.


※ 각주

[1] EROFS: 저장 공간과 읽기 효율을 중시해 설계된 Linux 읽기 전용 파일 시스템입니다.

[2] LZ4: 압축과 압축 해제가 빠른 것이 특징인 데이터 압축 알고리즘입니다.

[3] 롤링 압축 해제: 최근에 복원한 데이터 일부만 유지하면서 전체 결과를 순서대로 되살리는 방식입니다.

[4] 메모리 복사: 컴퓨터 메모리의 한 영역에 있는 데이터를 다른 영역으로 옮기는 작업입니다.

[5] 임베디드 시스템: 가전제품, 자동차, 네트워크 장비처럼 특정 목적에 맞춰 만든 컴퓨터 시스템입니다.

[6] 컨테이너: 애플리케이션과 실행 환경을 묶어 다른 시스템에서도 일관되게 실행하도록 돕는 기술입니다.

[7] 커널: 하드웨어와 프로그램 사이에서 메모리, 파일, 장치 등을 관리하는 운영체제의 핵심 부분입니다.

[8] 파일 시스템: 저장 장치의 데이터를 파일과 디렉터리 구조로 관리하고 프로그램에 제공하는 구성 요소입니다.