오늘은 바쁜 일과를 마치고, 금요일이어서 시간좀 내어봤습니다.
먼저 말씀드리지만,
본 내용은 안정성보다는 보다 빠른 겔스의 성능을 위해 테스트한 것, 그리고 간략한 정보들을 올려드리는 것임을 밝혀드립니다.
저를 이상한 사람으로 생각치 말아주시고, hardcore 테스터정도로 생각해주세요~ ㅡㅡ;;;
ext3/4의 특징중의 하나가 journal 인데요, 요즈음 voodoo나 tegrak나 또는 떡|벼리님의 핵펀치 외장패치등을 적용하고, mount정보를 보시면,
해당파티션의 마운팅정보 중 data=writeback 이나 data=ordered 등의 journal mode 옵션을 보실수 있을겁니다.
journaling모드는 3가지가 있습니다.
자세한 설명을 드리면 글이 너무 길어지고 지루하므로, 간략하게 요약하고, 추후에 각 특징들을 자세하게 올리겠습니다.
data=writeback : 이론적으로 데이타 저널링을 수행하지 않음. JFS 파일시스템과 유사한 저널링을 제공
메타데이타만 저널링하고나서, 기록되는 데이타는 저널링하지 않고 곧바로 기록됨. 제일좋은 ext4성능
최근에 변경된 파일이 예상치 못한 재부팅 발생 시, 손상됨
<메타데이타란?> 파일이나 디렉토리의 추가, 삭제, 크기변화등에 대한 구조를 관리하는 체계 데이타임.
data=ordered : 메타데이타와 데이타블록을 트랜잭션이라는 하나의 단위로 그룹핑함. 연관된 데이타블록들을 먼저쓰고나서 메타데이타를 기록.
writeback 모드의 파일손상문제를 효과적으로 해결. Writeback모드보다 느리지만 전체데이타저널링은 빠름.
data=journal : 전체 데이타와 메타데이타를 모두 저널링함.
데이타는 한번이 아닌 두번 기록되기 때문에, 가장 안정적이지만 가장 느린 저널링 모드임.
상기와 같이 ext4의 저널모드는 3가지인데요, 가장 빠른 성능을 나타내는 writeback모드, 과연 저널을 하지 않을까요?
일반적으로 그렇게 알고 있지만, 사실은 writeback모드도 저널링을 수행합니다. 바로 메타데이타를 저널링하죠.
또한 안정성에 있어서도 최근에 변경된 파일시스템이, 갑작스러운 재부팅발생시에는 손상됩니다.
요즘 겔스의 파일시스템을 ext4등으로 포맷하면서, 가장 좋은 성능을 보여주는 writeback모드를 많이들 사용합니다.
이는 최상의 Performance를 이루기 위함인데요, 이부분에서 중요한 점은 바로 "어짜피 갑작스러운 재부팅시에는 최근의 파일시스템이 손상" 된다는 것입니다.
상기와 같은 경우에 어짜피 손상될 파일시스템이므로, writeback모드보다도 더욱 빠른 모드, 즉 저널을 아예수행하지 않도록 하면 writeback모드보다 더욱 빠르다는 것을 생각할 수 있습니다.
이에, XDA포럼에서도 어떤 개발자가 no journal을 적용했는데요, 우려했던 것보다는 안정성에 대해서 문제는 없다고 하더군요.
그리고 베터리의 효율성도 향상된다고 하는데, 저는 잘 모르겠습니다.
그래서 저도, No Journal을 적용해봤습니다.
약 5일정도 내장부분만 사용해봤는데, 문제발생은 없었습니다. 그래서 오늘은 외장파티션까지도 모두 EXT4nj를 적용해보았습니다.
문제가 발생할지는 모르지만 일단 발생할때까지 사용해보겠습니다. 문제발생 확률을 최대화 하기 위해(최악의 조건으로 테스트), 가용할수 있는 영역들을 외장SD카드로 마운트해봤습니다.
EXT4NJ.(No Journal)
부연설명을 드리니 어쩔수없이 글이 길어졌군요.
아래에 제 겔스에 EXT4nj를 적용하기 전의 파일시스템특징과, 적용한 후의 파일시스템 특징을을 보실수 있습니다.
좀 거창해보이긴 하지만, 오늘부로 테스트 들어가겠으며, 상기의 저널링 모드의 종류와 no journal 에 대한 이해와, 적용이 가능하다는 정도만 이해하시고 넘어가면 좋을듯합니다. ^^
[ No Journal 적용전의 파일시스템 특징 : has_journal 이 적용되어 있음 ]
[ 내장 ext4통포맷 + 외장 ext4 마운트패치(바인딩) : has_journal 을 remove했음]
[외장 ext4 바인딩영역 : /data/data, /data/app, /data/dalvik-cache, /data/system, /system/fonts, /system/media 등 6개 부분]
몇가지 정보만 기억해주셨으면 감사하겠습니다.