Bulldozer™
11.05.04
조회 수 4218
추천 수 13
댓글 44

안녕하세요~^^


Bulldozer 입니다~^^

오늘이 세번째 제 글을 제가 퍼오는 순간이네요 ^^;;


두번의 글을 퍼오고나서 느낀점은... 역시... 이런 쪽은 관심도가 낮구나 OTL... ^^;; 허허 ^^;;

그래서 zygote process 와 JNI 에 관한 글은 퍼오는걸 포기하고 OTL...


그나마 관심이 있을실듯 한 file system 쪽 글을 퍼옵니다~^^

오래 전에 적었던 글이기 때문에 JFS 에 대한 내용은 빠져있습니다~

이 글을 적고난 이후에 JFS 는 별도로 글을 적었었기 때문이네요~ ^^


RFS, EXT, NILFS2 에 대한 간단한 개념정도일 뿐이며, 사실상 노하우라고 할만한 것은 못되는 자료입니다.

부끄럽네요 ㅠ_ㅠ


그리고 글에도 적었는데 file system 과 관련한 내용은 구글링을 통하면 아주아주 많은 자료를

직접 찾으실 수 있을겁니다~ +_+


글 읽어주신 분들 모두 감사합니다~ ^^

항상 행복하세요~ 내일은 어린이날~~~~ ^^;;


이번에도 제 블로그에 적은 글이기 때문에 다소 건방진 말투로 느껴지실 수 있습니다 ㅠ_ㅠ

이해해주세요~ ^^;;


-------------------------------------------------------------------------------------------------


오늘은 낮에 조금 시간적 여유가 있어서 안드로이드(리눅스) 파일 시스템에 대해 알아보았다.
구글링을 통해서 생각보다 짧은 시간 안에 많은 자료를 열어볼 수 있었다.
리눅스의 파일 시스템이 스마트폰을 사용하면서 주로 들었던 rfs/ext/nilfs 보다 엄청나게 많이 존재한다는 것을 알았다.
많은 부분을 봤지만 사실 지금 안드로이드 폰의 kernel 에 주로 적용하고 있는 file system 이 아닌 부분에는
눈이 잘 가지 않아서 자세한 내용보다는 적당히 개념정리만 하고 링크를 걸어 나중에 자세히 읽으려 한다.

워낙 문외한이다보니...
한가지 file system 에 대한 내용을 이해하기 위해서는 수 많은 기본적인 단어들의 의미부터 구글링을 해야하기 때문에
시간이 많이 소요되었다.
그리고 rfs 는 아무리 구글링을 해도 자세한 정보가 나오지 않았다.
단순히 NAND flash memory 에 최적화를 시킨 file system 이라는것이 전부였다.
그리고 file system 에 대해 글을 읽으면서 기존에 알고있던 개념들과는 다른 부분들을 확인할 수 있었으며,
지금 사용하는 file system 에 대한 의문들도 몇가지 생기게 되었다.
그 의문점들은 시간을 가지고 구글링을 통해 해답을 찾아볼 생각이다.
아무래도 리눅스와 관련된 여러가지 개념들은 구글링을 해본 결과 아주 쉽게 자료를 접할 수 있었기에
구글링만으로 나와 같은 초보가 원하는 수준의 답은 얻을 수 있을듯 하다.

*. RFS
RFS(Robust File System)은 삼성에서 독자적으로 개발한 NAND flash memory 용 file system 이다.
읽어본 글들에 따르면 읽기, 쓰기, 성능, 수명을 대폭 향상시켰으며, 필요한 data 만 골라 선택적으로 구동 시키는
linux 특유의 'demand paging function' 과 서로 연동하여 NAND flash memory 의 읽기 속도를 초당 데이터 전송속도
2MB 에서 최대 4MB 까지 향상시켰다고 한다. 그리고 쓰기 속도역시 초당 2MB 로 기존의 file system 보다 10배의
성능 향상을 이루어 냈다고 한다. 그리고 data 를 영역별로 구분하여 관리하는 '자동 파일할당 테이블'을 채용하였고,
wear-leveling 기능도 가지고 있다고 한다. 그리고 기본적으로 FAT32 file system 을 기반으로 앞의 내용들과 같은
journaling, wear-leveling 등의 기능을 추가한것이라고 한다.

-- journaling --
memory 에 직접적으로 data 를 쓰지 않고 system 에 반영될 data 의 변경 사항을 원형 버퍼에 log 로 남기고, 주기적으로
file system 에 commit 시킨다. 쉽게 그냥 data 를 쓰기 전에 journal 을 통하여 변경 사항을 log 로 남김으로써, data 의
index 와 같은 역할을 하는 metadata의 손상을 막아준다고 한다. journaling 에도 여러가지 mode 가 존재하는데 이 부분은
아래 ext 계열의 file system 내용에서 나올것이므로 넘어간다. (journal = disk 의 연속된 영역에 있는 전용 순환 log)

-- wear leveling --
momory 내의 특정 block 에 data 기 지속적으로 쓰여지지 않고 골고루 분배되어 data 의 입력 및 출력이 이루어 지도록
만들어 주는 기능이다. NAND flash memory 의 경우 data 의 입력 및 출력의 회수에 따라 bad block 이 발생 할 수 있는데
발생 가능성을 낮출 수 있는 개념으로 생각이 된다. nilfs2 의 경우가 wear leveling 의 개념에서 본다면 아주 좋은듯 보인다.

*. EXT
EXT(Extended File System) 은 흔히 부두 패치와 테그라크 패치를 통해서 스마트폰을 사용하는 사람들에게는
익숙한 file system 이다. 부두 패치와 테그라크 패치는 /system, /data, /dbdata, /cache 의 4개 영역을 rfs -> ext4 converting
시킨다. 그리고 자양펌을 사용하는 경우는 /data 가 외장메모리 영역으로 치환 되면서 ext3 로 mount 된다.
주로 ext2, ext3, ext4 로 구분하여 알려져 있는데, 완전히 다른 file system 이 아니라 지속적으로 version up 이 되고 있는
하나의 file system 이다. 최신의 ext series 가 ext4 file system 이라고 보면 된다. VFS switch 를 최초로 사용한
file system 이며, ext3 부터 journaling 의 개념이 도입되었다. 그리고 ext4 에는 ext3 에서 발전하여 계층화된 접근 방식을
통해 작은 file 을 효율적으로 나타내며, extend tree 를 사용하여 대용량 file 도 효율적으로 나타낼 수 있다고 한다.
주로 사용되는 ext4 에서는 지정된 크기의 file 을 사전 할당 및 초기화가 가능하며, block 할당 지연 과 multi block 할당
기능을 지원한다고 하는데 주로 내용은 block 에 data 를 입력 및 출력을 시키는데 최적화를 꾀하는 기능들로 보인다. 그리고 file system 내의 조각을 줄여주는 기능이 있는데, 완벽하지는 못하며 추가적으로 온라인 조각모음 도구를 지원한다고 한다.
journaling mode 에는 여러가지가 존재하는데 ext4 에서는 writeback mode(metadata 만 journaling), ordered mode(metadata 가 journaling 된 후 journal 을 바탕으로 metadata 가 기록될 때 data 도 기록), journal mode(metadata 와 data 모두 journaling) 라는 3 가지가 있다. 마지막 journal mode 의 경우는 data 가 journal 을 통과하기 때문에 i/o 속도 측면에서는 가장
느리지만 가장 안정적인 mode 라고 한다.

-- VFS switch --
상위 계층 file system 사용자의 기본 file system 에 대한 세부 사항을 추상화 하는 계층이며, VFS 를 통해서 linux 는 지정된 linux system 내에서 지원하는 여러가지 file system 을 지원할 수 있다고 한다.

*. NiLFS2
nilfs 계열의 second version 이 nilfs2 이다. 아직은 실험적인 file system 이라고 한다. nilfs 는 journaling file system 이 아니며,
LFS(Log-structured File System) 의 한 종류이다. LFS 는 우리가 스마트폰에 사용하는 NAND flash memory 에 아주 적합한 file system 이라고 한다. 그 이유는 한정적인 data i/o 회수를 모든 NAND flash memory 의 block 은 가지고 있는데,
LFS 는 전체 장치의 여러 위치에 data 를 쓰고 지우기 때문에 우수하게 wear-leveling 을 수행한다고 볼 수 있기 때문이다.
nilfs2 의 경우 garbage collection 의 기능이 강화되고, snapshot 기능을 포함하고 있다. log 형태로 구조화 되어 있기 때문에
새롭게 쓰여지는 data 는 log 의 head 부위에 쓰여지게 되며, 그 이전의 data 는 garbage collection 을 하지 않는 한 그대로
남아있게 된다. 기존의 data 가 존재하기 때문에 원하는 시점으로 돌아가서 data 를 epoch 할 수 있게 된다.
요즘 nilfs2 를 /data 영역에 적용하는 부두 nilfs2 kernel 을 갤럭시 S 유저들이 많이 사용한다. 하지만 nilfs file system 에 대해
명확히 어떠한 이유로 장점이 있는지는 잘 모르는듯 하다. 간단하게는 일단 nilfs2 는 rfs 나 ext 계역 과는 다르게 journaling 을
하지 않는다. 그리고 momory 전체를 log 구조화 하였기 때문에 block 을 찾아가면서 data 를 지우고 쓰지 않는다. 연속적으로
data 를 쭉 써내려 가버리면 된다. 그렇기 때문에 당연히 rfs 나 ext 계열보다 속도가 빠를 수 밖에 없다. 그리고 garbage 를
발생 시마다 collection 하지 않는다는 개념을 생각한다면 중간에 두 가지 일을 하지 않고 연속적으로 쓰기만 한다고 생각하면
당연히 속도가 빠르다는걸 알 수 있다. 그리고 garbage 에 대해서는 이것을 단순한 말그대로 쓰레기 라고 생각하는 듯하다.
이것은 쓰레기가 아니고, 최신의 data 가 쓰여져 있는 log 부분 이전에 기존 data 부분이 할당된 block 을 지워주는 것이다.
필요없어진 data 를 저장하고 있는 block 을 지우고 필요한 최신의 data 를 포함한 block 만을 정리하는 것이다.
protection period 지정을 통하여 필요한 시점 이내의 data 포함 block 만을 남겨두고 그 이전의 block 들을 깔끔히 지우는
것이다. garbage collection 을 도와주는 application 인 nilfs2GC 설정 application 을 이용하면 쉽게 GC 를 처리할 수 있다.
장점이 많지만 garbage 를 수동으로 처리해 줘야하고 아직은 그 안정성에 대한 확실한 검증이 부족하다는 단점을 분명히
내포하고 있는 file system 인듯 하다. 자세한 내용을 알고 나니 nilfs2 file system 이 더욱 매력적으로 느껴지는 동시에
아직은 안정성의 검증이 필요하다는 부분이 마음에 걸리는게 사실이다.

이 이외에도 exofs, jfs2, xfs, btrfs, ceph, jffs2, yaffs, cramfs 등의 많은 file system 에 대해 읽을 수 있었다.
하지만 이 모든 내용을 적기에는 큰 의미도 없고, 아직 개념정리정도만 하였기 때문에 적지 않았다.
혹시 나중에 스마트 폰에서 지금의 rfs, ext, nilfs 이외에 file system 을 적용하는 경우가 생긴다면 그때 그 file system
부분만 따로 추가하여 적을 생각이다.


-------------------------------------------------------------------------------------------------------------


초보가 자꾸 노하우 게시판에 들락날락 하는것 같아 좀 민망하네요 ^^;;

그래도 혹시 제가 알고 적어놓았던 것들이 어느 한분에게라도 도움이되고

뭔가 이런 쪽으로 좀 더 궁금증을 갖게되는 계기가 되었으면 하는 마음에 올린것이니 이해해 주세요~^^


첫 번째 글 init process-1

http://matcl.com/s/?mid=freeboard&category=9003&document_srl=2580601


두 번째 글 init process-2

http://matcl.com/s/?mid=freeboard&category=9003&document_srl=2643307


글 읽어주셔서

감사합니다~ ^_________^


댓글 44
  • ?
    dydx™
    11.05.04
    추천합니다 ^^
  • ?
    어엌후~ 추천까지~ +_+
    감사합니다~^^

    해장님 초보탈출 글의 2탄??은 잘 추진 중인지 궁금하네요 +_+
  • ?
    두천사님 내일이 공휴일이군요 +_+
    내일 출근을 안하기 위해... 눈치작전 중입니다 ^^;; 허허 ^^;;
    그래도 이번달은 중간에 쉬는 날들이 +_+ 있어서~
    마음이 한결 가벼운?? 듯 합니다 ^^

    항상 행복하세요~^^
  • ?
    Luce™
    11.05.04
    음 Nilfs2 의 작동방식이나 nilfs_cleanrd.conf의 역할 같은 팁글이 올라와도 좋을듯합니다
  • ?
    제가 궁금해서 읽어보았던 글을 토대로 단순히 개념정리만 해놓은 글입니다 ^^
    과찬이세요~ ^^;;
    암튼~
    댓글 감사합니다~^^
  • ?
    조언 감사합니다~ 루체님~^^
    nilfs2 쪽에 제가 아는한 가장 잘 알고 계시는 분 중 한분이신데요 +_+
    맛클에도 올려주셨지만 전 그 전에 루체님 블로그에서 pdf 자료를 읽었었답니다 +_+
    루체님과 데카덴트 님 두분이 댓글이나 글로 적어주셨던 글들을 모아 놓기만해도
    nilfs_cleanrd.conf 와 그 외에 모든 nilfs2 에 대한 내용을 담을 수 있을텐데요~^^
  • ?
    방울속안개
    11.05.04
    어려워요...어려워요^^ 개발자영역으로 발돋움 하시는겁니까?하하하^^
  • ?
    방울속안개님 오랜만이네요 ^^
    개발자영역이라뇨 ㅠ_ㅠ 당치도 않습니다 ^^;;
    위에도 적었듯이 구글링을 조금만 한다면 더 많은 내용을 쉽게 찾을 수 있는
    단순 개념정도의 글일 뿐입니다 OTL... ^^;;
  • ?
    티나
    11.05.04
    설명을 들어보면 RFS가 제일 좋아보이는데 제일 느리는게 참 신기함
  • ?
    Sign
    11.05.04
    정말 위에 티나님 말대로 설명은 RFS가 젤 좋아보여요 : )
  • ?
    음... 제가 이글 저글 읽어본 자료에 의하면 RFS 가 결코 안좋은 것은
    아니라고 생각이 들었습니다~^^
    단지 갤럭시 S 의 모비낸드와 궁합이 안좋았다고
    개인적으로는 생각하고 있습니다~^^
    원낸드에 최적화된 파일시스템이라고 하니까요~^^
  • ?
    도저님 좋은정보감사드림니다.^^ 추천꽝~
  • ?
    개인적으로 괜찮은 file system 이라고 생각하는데... 음...
    갤투에서 삼성이 버렸다죠... 허허허 ^^;;
  • ?
    어잌후~ 유틸리티맨님~ ^^
    감사합니다~
    추천까지 +_+
    항상 발빠른 업뎃 소식을 전해주시는 유틸리티맨님
    언제나 감사합니다 ^^
  • ?
    수고하셨습니다..
    전 읽어도 이런게 잇는거구나..밖에 모르겟네요 캬캬
    무뇌한인가??캬캬
  • ?
    수고는요 ^^
    예전에 이런쪽 관심으로 공부하면서 적어놓았던 글을 옮겨온것 뿐인데요^^
    댓글 감사합니다. 소심아잉님~ ^^
  • ?
    택이아빠
    11.05.04
    감사합니다. 불도저님^^ 모바일로 차근차근 보고있습니다. 앞으로도 자주 올려주시면 좋겠습니다~^^
  • ?
    스크랩과 선추천후 댓글 여전히 전 먼 이야기로 들리지만

    엮시 아는게 힘이네요 ㅜㅜ

    아 힘이없어요 전 ㅜㅜ

    그래도 포기는 안해야죠 아자아자 화이팅~!

    좋은 자료 감사드립니다^^
  • ?
    jacobs3
    11.05.04
    좋은 글 잘보았습니다~
  • ?
    YONG.S™
    11.05.04
    불도져님에 글들은 빼놓지않구 열심히 읽구 있답니다!!

    오늘 올려주신글도 정말 많은 도움이 될것같네요~틈나는데로 몇번정독 할께요~~

    알구서 하는거와 모르구 하는거는 많은차이가 있겠죠...불도져님에 글을 읽는 것만으로도

    저에게는 많은도움이 되니 저에겐 불도져님두보구 글두읽구 일석이조가 아닐까십네요!!

    유게에서 불도져님 글을 볼수있어 기분좋네요~자주볼수있었으면 좋겠네요

    오늘 방가웠습니다..^^*
  • ?
    똥꼬아프면치과로
    11.05.04
    불도져 님..감사 드립니다..+_+

    역시 이런 좋은 글은.....감사만이...크크크....퐝퐝 하고..갑니다..:^)
  • ?
    갤코v
    11.05.04
    좋은내용 좋은글 잘 읽고 갑니다 ^^
  • profile
    LavI
    11.05.04
    절...로그인하게만들다니.....작심 삼일만에 잠수를 깨게하시다니!!!!

    추천을 안할수가없군요=ㅁ=허허허
  • ?
    택이아빠님~ ^^
    핑크테마 +_+ 너무 너무 기대됩니다 ^^
    차근차근 보고계시다니... 부끄럽네요 ^^;; 허허 ^^;;
  • ?
    감사합니다~^^
    위에도 썼듯이 이 글은 개념에 대한 간략한 정리 수준의 글입니다~^^
    관심을 갖고 계신분들이 많이 나타나 주시면 좋겠네요 ^^
  • ?
    넵~ 감사합니다~^^
    부끄럽네요 ㅠ_ㅠ
  • ?
    yong.s 님 +_+
    감사합니다~^^

    항상 좋은 자료들 감사히 사용하고 있는거 아시죠? ^^
    사실 아무것도 아닌 글인데 이렇게 관심을 가져주시니 제가 너무 감사합니다~^^
  • ?
    똥꼬아피면치과로님~ ^^
    오랜만이네요~ +_+

    부끄럽습니다 ^^;;
    그리고 댓글 감사합니다 ^^
  • ?
    갤코v 님 댓글 감사합니다~^^

    많은 분들이 여러방면으로 관심의 범위를 넓혀갔으면 좋겠습니다~^^
    하긴... 제가 그러질 못하고 있지만요 OTL... ^^;;
    일단은 먹고 살아야하기에 ^^;;
  • ?
    LavI 님~ ^^
    요즘 휴클 중이셨군요~ 너무 안보이신다 했었네요 ^^
    추천 +_+ 감사합니다~^^

    바쁘시더라도 항상 여유를 가지시길 바래요~^^
    음... 이거... 두천사님께서 저보고 해주셨던 이야기인데요 ^^;; 허허 ^^
  • ?
    오호..^^ 드디어 올라왔군요.., ^^ 세번째 정보도 너무나도 감사합니다~~~
    좋은글 너무나도 감사합니다~!~
  • ?
    카무이님~ ^^
    항상 관심가져 주셔서 감사합니다 ^^

    갤스2에 푹 빠지셨을텐데요~ +_+
    저도 요즘 자꾸 뽐뿌가 ㅠ_ㅠ

    오늘 사무실 옆 차장님께서 신청하고 오셨더군요~ 58차인가? ^^;;
    그 분 갤2를 만지다가 뽐뿌가 올지도 모르겠습니다~^^
    감사합니다~^^
  • profile
    LavI
    11.05.04
    어쩌다보니 명성도하위회원에서 눈팅유저로 강등됐어요..크크크

    근데;;신기한건....제니가 조금씩오르고있어요;;후덜덜~~~

    여유있는 저를 보고싶으시다면 트위터를 확인해보세요..크크크
  • ?
    쑨덱
    11.05.04
    와.. 감사합니다~ 이런 궁금했던 내용이었는데.... 흐흐
    도저님 때문에 좀 더 많은걸 알게 되네요.. ^^
  • ?
    ^^ 감사합니다~^^

    이런쪽으로도 많은 분들이 관심을 가져주시길 바라는 마음에
    제 블로그 글을 하나씩 가져오고 있는데~ 효과가 있었으면 좋겠네요~^^
  • ?
    트위터는 종종 눈팅하고 있답니다~^^
    LavI 님의 발도장들 +_+ ^^;;
  • ?
    영웅2
    11.05.04
    잘보았습니다^^
  • ?
    영웅2 님~^^
    댓글 감사합니다~^^

    그래도 init process 나 그런 쪽보다는 file system 쪽이 많은 분들이
    관심을 갖고 계시는 부분인듯 하네요~^^
  • ?
    머리에 뭔가를 남겨보려고 용써봅니다. 초짜가 바로 이해하기엔 무리가 있는듯 보이지만, 열번찍어 안넘어가는 나무 없... 을것이라 생각하며 또 노려보러!!후후후후 누가 이기나...;; 좋은 정보 감사합니다.^^
  • ?
    ^^ 힘내세요~~~^^
    자꾸 노려보다보면 조금은 도움이 될 수 있는 내용일겁니다 ^^
    조만간 jfs 에 대해 적었던 글이나 zygote process 에 대한 글도 업어 올 예정입니다~^^
    그것도 노려봐 주세요~^^;;
  • ?
    감사합니다!~
  • ?
    감사합니다!~
  • ?
    감사합니다!~
  • ?
    갈구냐
    13.02.23
    좋은정보 감사드립니다.~
댓글 쓰기 권한이 없습니다.
정렬 목록 검색 쓰기
등록된 글이 없습니다.
1 - 2