2009/07/16

zfs의 화일 시스템 에러(permanent error)와 패키지 수정 (pkg fix)

최신 버젼의 zfs를 쓰면서 우연히 알게 된 것은 화일 시스템의 오류가 왕왕 생긴 다는 점입니다.
아마도, 랩탑이기 때문에 파워가 없어서 그냥 꺼졌거나 하면서 생긴 것으로 보이는데.. 생각보다
이런 오류가 생각보더 훨씬 자주 나타난다는 게 약간 맘에 걸립니다. 이게 정상인지..

간혹 fmstat나 zpool을 보면 아래와 같이 오류가 발생하는 경우가 있습니다.

$ pfexec zpool status -xv
  pool: rpool
 state: ONLINE
status: One or more devices has experienced an error resulting in data
    corruption.  Applications may be affected.
action: Restore the file in question if possible.  Otherwise restore the
    entire pool from backup.
   see: http://www.sun.com/msg/ZFS-8000-8A
 scrub: scrub completed after 4h46m with 6 errors on Wed Jul 15 20:19:19 2009
config:

    NAME        STATE     READ WRITE CKSUM
    rpool       ONLINE       0     0     7
      c5d0s0    ONLINE       0     0    55  291K repaired

errors: Permanent errors have been detected in the following files:

        rpool/export/home/bhkim:<0x2d071>
        rpool/ROOT/opensolaris-2@install:/usr/lib/amd64/libcspi.so.0.10.11
        rpool/ROOT/opensolaris-2@install:/usr/bin/w3m
        rpool/ROOT/opensolaris-2@install:/usr/bin/what
        rpool/ROOT/opensolaris-2@install:/usr/bin/wracct
        rpool/ROOT/opensolaris-2@install:/usr/bin/wtpt

오류라고 나온 화일을 실행시도 해봤더니, 정말 I/O 에러라고 나옵니다. ㅡㅡ;

bhkim@vaio-bhkim:~/MyVideos$ wracct
bash: /usr/bin/wracct: I/O error

패키지 수정을 시도해야 겠습니다. 일단 해당 화일이 어떤 패키지에 속하는 지 알아야 하는데 다음과 같이해서 알아낼 수 있습니다.
#pkg search /usr/bin/wracct
SUNWcs라는 것을 얘기해주는데, 결과가 길어서 여기서는 생략합니다.

일단, 오류로 나온 다른 화일의 패키지로 검사를 해봤습니다.
#pkg fix SUNWgnome-a11y-libs

#
엥... 아무런 무언가가 없습니다. 오류가 없이 verify 했다는 얘기입니다.
여기서 오픈 솔라리스 에서 2% 안타까운 것은 zfs에서 해당 화일이 오류가 있다고 나왔다면
pkg 에서도 오류임을 자동으로 감지해서 fix할때 fix해주었으면 하는데, pkg는 화일의 목록만 검사하는 듯 하군요.
오류 없다고 지나가는 것을 보니까 말이죠.

그렇다면, 해당 화일을 삭제하고 fix를 시도하면 감지할 것으로 예상하고 이번에는 실제 작업 대상 패키지에서 작업해봤습니다.

$ pfexec bash
# rm /usr/bin/wracct
일단 삭제했습니다.

# pkg fix SUNWcs
Verifying: pkg:/SUNWcs                                          ERROR  <--- 오.. 역시 에러가 나오네요.
    file: usr/bin/cat
        Warning: package may contain bobcat!  (http://xkcd.com/325/)   ;; 근데 뭔 에러가... 이리 많지 ㅡㅡ;
        file: var/spool/cron/crontabs/root        ..... --
        Group: 'root' should be 'sys'
        file: etc/nsswitch.conf                   ..... ||
        Group: 'root' should be 'sys'
        file: usr/bin/wracct                      ..... //             ;; 아하.. 화일이 없음을 감지했습니다.
        File does not exist
        hardlink: etc/rc2.d/S82mkdtab             ..... //
        No such path etc/rc2.d/S82mkdtab
Created ZFS snapshot: 2009-07-16-00:42:02         ..... //             ;; 스냅샷을 찍어주고 수리들어가네요.
Repairing: pkg:/SUNWcs                                      
PHASE                                          ITEMS
Indexing Packages                            481/670




댓글 없음: