LogFS
LogFS개발자 | 예른 엥겔, 프라사드 조시 |
---|---|
다른. | |
지원되는 운영 체제 | 리눅스 |
웹 사이트 | logfs.org/logfs/ at the Wayback Machine (2010-06-16) |
LogFS는 Linux 로그 구조의 확장 가능한 플래시 파일시스템으로 플래시 메모리의 대규모 디바이스에서 사용하기 위한 것입니다.Jörn[1] Engel에 의해 작성되었으며 일부는 CE Linux Forum에 의해 후원되었습니다.
LogFS는 2010년 5월 16일에 출시된 메인라인 Linux 커널 버전 2.6.34에서 도입되었습니다.2016년 12월 버전 4.10의 병합 기간 동안 코드베이스에서 제거되었는데, 이는 "수년간 유지보수가 되지 않았고 사용되지 [2]않은 것처럼 보이기 때문"이었다.
역사
2008년 11월[update] 현재 LogFS는 테스트 스위트 전체를 통과할 수 있을 정도로 성숙되어 있으며 2010년 5월 16일에 출시된 버전 2.6.34에서 메인라인 Linux 커널에 포함되어 있습니다.그러나 대규모 사용자층을 확보하지 못하고 2016년 12월 커널에서 삭제되었다.
작동
LogFS는 대용량 플래시 메모리 드라이브에서 JFFS2의 어려움에서 비롯되었습니다.LogFS는 드라이브에 inode 트리를 저장하지만 JFFS2는 저장하지 않으므로 마운트 시 전체 드라이브를 스캔하고 전체 트리를 RAM에 캐시해야 합니다.용량이 큰 드라이브의 경우, 스캔에 수십 초가 걸릴 수 있으며, 트리에는 많은 양의 메인 메모리가 소요될 수 있습니다.LogFS는 이러한 불이익을 피하지만 시스템 실행 중에 더 많은 작업을 수행하며 드라이브의 일부 공간을 사용하여 inode 트리를 유지합니다.
LogFS는 파일의 inode 트리를 드라이브에 저장합니다.즉, 파일에 쓸 때 트리의 각 상위 노드를 다시 작성해야 합니다.이는 "배회 트리" 업데이트에 의해 수행됩니다.루트 inode가 갱신될 때까지 트리 내에서 가장 낮은 노드(즉, 데이터)가 먼저 기입되고 각 노드가 트리 오름차순으로 기입됩니다.루트를 마지막으로 쓰면 업데이트의 원자성이 유지됩니다.
플래시 메모리 블록은 소거 단위이며 일반적으로 파일시스템 블록보다 큽니다.LogFS는 여러 파일 시스템 블록을 단일 플래시 메모리 블록에 패킹함으로써 이러한 차이를 처리합니다.플래시 메모리 블록의 마지막에 있는 「sum」엔트리는, 그 블록에 격납되어 있는 데이터를 기록합니다.플래시 메모리 블록의 모든 파일시스템 블록을 이동 또는 삭제하면 삭제하여 새로운 데이터에 사용할 수 있습니다.
플래시 메모리 드라이브의 피크 사용 시에는 플래시 메모리 블록에 유용한 데이터가 가득 차도록 데이터를 압축해야 합니다.이것은 가비지 수집에 의해 실현됩니다.LogFS의 가비지 수집 전략은 특정 방식으로 플래시 메모리 블록에 배치되는 파일 데이터에 의존합니다. 플래시 메모리 블록은 inode 트리에서 동일한 수준의 파일 데이터만 유지합니다.LogFS는 빈 플래시 메모리 블록을 1개만 사용하여 트리의 최상위 수준을 가비지 수집할 수 있습니다.2개의 빈 플래시 메모리블록을 사용하여 트리의 상위2개의 레벨을 가비지 수집합니다.또한 N개의 빈 플래시 메모리블록을 사용하여 트리의 모든 N레벨을 가비지로 수집할 수 있습니다.이 알고리즘은 최악의 경우 지수 시간이지만 최악의 경우는 드물기 때문에 소수의 플래시 메모리블록만 예약하면 됩니다.
「 」를 참조해 주세요.
레퍼런스
- ^ Jörn Engel; Robert Mertens (2005-09-18). "LogFS - finally a scalable flash filesystem" (PDF).
{{cite journal}}
:Cite 저널 요구 사항journal=
(도움말) - ^ Jonathan Corbet (2016-12-21). "4.10 Merge window part 2". Retrieved 2020-06-02.
The logfs filesystem, unmaintained for years and seemingly unused, has been removed from the kernel.