mirror chunk로부터 primary chunk를 복구하는 방법
Q4 디스크 장애로 인하여 특정 dbspace의 chunk가 down 되었습니다. 다행히 이 dbspace에는 mirroring이 되어 있어서 system 사용에는 문제가 없습니다. 장애가 생긴 디스크를 다시 교체한 후에 mirror chunk로부터 primary chunk를 복구하려 합니다.
A
디스크 미러링은 디스크 장애에 대비하여 같은 구조의 chunk를 "mirror chunk"라는 이름으로 하나 더 가지고 있도록 구성하는 것이며, 디스크 미러링을 한 경우라면 디스크 장애 발생시 시스템은 정상적으로 가동됩니다. 즉, Primary chunk에 장애가 생기면 mirror chunk가 primary chunk를 대신하여 서비스를 하게 됩니다. 이런 구조로 구성되어 있는 시스템에서는 primary chunk에 장애가 생겼을 때에는 mirror chunk로서 복구할 수 있으며, 반대의 경우도 가능합니다.
kor-k400:/bigfs> onstat -d
INFORMIX-OnLine Version 7.24.UC1 -- On-Line -- Up 01:03:10 -- 9096 Kbytes
Dbspaces
address number flags fchunk nchunks flags owner name
ce84e108 1 2 1 1 M informix rootdbs
1 active, 2047 maximum
Chunks
address chk/dbs offset size free bpages flags pathname
ce84e178 1 1 0 5000 2221 PO- /bigfs/chunk
ce84e250 1 1 0 5000 0 MO- /post01/byrhee/mchunk
1 active, 2047 maximum
위에서 볼 수 있는 것처럼 rootdbs에 미러링이 되어 있습니다. 어떤 장애로 인해서 rootdbs의 primary chunk인 /bigfs/chunk를 액세스할 수 없다면 다음과 같이 보여질 것입니다.
kor-k400:/bigfs> onstat -d
INFORMIX-OnLine Version 7.24.UC1 -- On-Line -- Up 00:00:13 -- 9096 Kbytes
Dbspaces
address number flags fchunk nchunks flags owner name
ce84e108 1 2 1 1 M informix rootdbs
1 active, 2047 maximum
Chunks
address chk/dbs offset size free bpages flags pathname
ce84e178 1 1 0 5000 2221 PD- /bigfs/chunk
ce84e250 1 1 0 5000 0 MO- /post01/byrhee/mchunk
1 active, 2047 maximum
primary chunk의 상태가 "PD"임을 알 수 있고, 이는 "Primary Down"을 의미합니다.
이 경우, 위에서도 말한 바와 같이 mirror chunk를 가지고 복구할 수 있습니다. 우선 장애가 발생한 chunk (여기서는 /bigfs/chunk)를 사용 가능하도록 한 후에 onspaces 명령을 사용하여 복구할 수 있습니다.
kor-k400:/bigfs> onspaces -s rootdbs -p /bigfs/chunk -o 0 -O
WARNING: bringing a down chunk into recovery state.
Do you really want to continue? (y/n)y
Verifying physical disk space, please wait ...
Chunk status successfully changed.
onspaces명령에서 -s 옵션을 주어 rootdbs의 chunk 중 /bigfs/chunk의 상태(status)를 OnLine (-O 옵션)으로 변경하라는 내용입니다. 이렇게 작업을 명령한 후 success 명령을 받으면 다시 onstat -d로 확인해 볼 수 있습니다.
kor-k400:/bigfs> onstat -d
INFORMIX-OnLine Version 7.24.UC1 -- On-Line -- Up 00:37:49 -- 9096 Kbytes
Dbspaces
address number flags fchunk nchunks flags owner name
ce84e108 1 2 1 1 M informix rootdbs
1 active, 2047 maximum
Chunks
address chk/dbs offset size free bpages flags pathname
ce84e178 1 1 0 5000 2221 PO- /bigfs/chunk
ce84e250 1 1 0 5000 0 MO- /post01/byrhee/mchunk
1 active, 2047 maximum
따라서 미러링을 한 dbspace라면 디스크 장애가 생겼을 때에도 mirror chunk까지 모두 장애가 발생하지 않는 한 서비스가 중단되지 않으며, 장애가 발생한 디스크를 복구할 수 있습니다. 여기서 주의해야 할 점은 한 쪽 디스크에 발생했을 때 mirror chunk까지 모두 장애가 발생하지 않도록 primary chunk로 사용하는 디스크와 mirror chunk로 사용하는 디스크를 서로 분리시켜 놓아야 한다는 점입니다. 물리적으로 같은 디스크에 primary와 mirror chunk를 같이 둔다면 한 쪽 디스크 장애만으로도 두 chunk를 동시에 액세스 못할 수 있으므로, 이런 경우라면 미러링의 효과를 전혀 볼 수 없을 것입니다.
이렇게 장애가 난 디스크를 복구하는 방법은 onspaces 명령 외에 onmonitor의 Dbspaces 메뉴의 Status 옵션을 선택하여서도 가능합니다.
|