리눅스에서 외장fat32의 경우 fsck를 돌려야 할때를 어떻게 알죠?

doraq의 이미지

항상 하면 그만이겠지만....
리눅스 DVR관련 임베디드 시스템입니다. 가급적 빨리 정상 작동상태로 돌아와야죠.

외장USB를 붙일때마다 fsck.vfat을 하면 너무오래 걸립니다.
윈도우 같은경우 전원이 꺼진후 다시 켜면 윈도우가 chkdsk를 하잖습니까.
정상적인 종료일때는 안하구요(문제가 없어 너무 빨리끝난건진 모르겠음)
이런식으로 꼭 필료할때만 fsck를 하고 싶은데 그걸 알아내는 방법을 모르겠네요
모든 녹화시에 플레그를 두고 성공적으로 녹화를 종료했을때 ok표시를 하고, 머 이럴수도 있지만
윈도우가 그렇게 할거 같진 않구요.
뭔가 매번 아주 간단한 체크 방법이 있고 그걸로 chkdsk 실행여부를 판단하는걸로 보이는데
어떻게 하는지 아세요?

nthroot의 이미지

지금 고민하시는 목적으로 저널링이 개발된 걸로 알고 있는데요.
저널링이 안되는 파일시스템을 사용하면..낭패를 볼듯 싶은데요.
공부한지 오래되서 잘 기억은 안나지만 저널링 원리를 보시면
정상 종료 로그를 판단해서 복구 여부를 판단하거나 그런것 들을 본것 같네요.

------식은이 처------
길이 끝나는 저기엔 아무 것도 없어요. 희망이고 나발이고 아무 것도 없어.

doraq의 이미지

기존에 사용되는 시스템인데다 여러 회사가 같이 개발하는터라
FAT32를 바꿔 버리긴 쉽지않은 상황입니다.

pastime의 이미지

수퍼 블럭 내에 마운트 상태를 저장하는 영역(ext2_super_block.s_state)을 할당하여
마운트 시에 이 값을 0으로 지우고 (정상적인) 언마운트 시에 이 값을 다시 1로 씁니다.
만일 언마운트가 되기 전에 시스템이 종료되었다면 이 값이 0으로 남아있을테니
다음 번 부팅 시에 이 값을 살펴보고 fsck를 실행할지 안 할지 판단할 수 있습니다.

실제로 Windows에서는 어떤 방식을 이용하는지 모르겠지만
FAT32에서도 BPB 내의 reserved 영역 중 한 바이트를 이용하여
위와 비슷한 방식으로 관리할 수 있을 것입니다.

doraq의 이미지

FAT32 소스를 봤는데 그런건 없더라구요.
안쓰이는 변수를 잡아서 그렇게 사용도 가능은 할거같긴한데,
그러려면 mount, umount시점에 flag처리를 해야 하니까
mount/umount에 그 기능을 넣어주던가 아니면 flag처리를 하는 utility를
만들어 mount/umount직후에 처리를 해 주던가 해야겠네요.
구현은 되겠지만 깔끔하지 않은방식이라 고민좀 더 해보구요.

Iinux의 이미지

>> 수퍼 블럭 내에 마운트 상태를 저장하는 영역
이 방식을 사용하신다면
FAT 테이블 바로 옆에 섹터가 좀 남긴 할 겁니다.
거기 이용하시면 될 듯..

=====================

doraq의 이미지

혹시나 비슷한경우가 있는분이 있을지도 몰라 제 해결을 적어봅니다.

일단 제품은 PVR이라 파티션별로 녹화가 시작할때와 끝날때를 어딘가에(epprom) 적어뒀습니다.
부팅시에 그 곳에 open된걸로 적혀있으면 해당파티션을 fsck하고 아니면 pass..
간단하죠?
나름 파티션단위의 저널링이랄까요? 유치한 수준이긴하지만 만족해하더군요.
그 이전에는 켤때마다, HDD꽂을때마다 모든파티션을 항상 fsck했었거든요.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.