원문 : http://www.ischo.net -- 조인상 //시스템 엔지니어

+++++++++++++++++++++++++++++++++++++++++++++++++++++++


HP rp시리즈에서 mirror(lv-copy) 된 디스크 교체



[ 시나리오 ]

HP rp 시리즈 서버에서

/dev/dsk/c2t0d0 , /dev/dsk/c2t1d0  디스크 2개로 mirror vg 가 구성되어 있는 상태에서

두번째 디스크  /dev/dsk/c2t1d0  에서 Fail이 발생한 경우



[ 작업절차 ]

1. Fail이 발생한 디스크를 vg로 부터 제거

2. 물리디스크 교체

3. 다시 mirror vg 를 구성



1. Fail이 발생한 디스크를 vg로 부터 제거

1) lv에서 Fail이 발생한 디스크를 제거(lvreduce)


 - 전체 lv 리스트 확인

 # vgdisplay -v vg00 | grep "LV Name"
   LV Name                     /dev/vg00/lvol1

   LV Name                     /dev/vg00/lvol2
   LV Name                     /dev/vg00/lvol3
   LV Name                     /dev/vg00/lvol4
   LV Name                     /dev/vg00/lvol5
   LV Name                     /dev/vg00/lvol6
   LV Name                     /dev/vg00/lvol7

위 7개의 모든 LV 들에게서 물리디스크를 제거해야 함.


 - VG 구성 확인
# strings /etc/lvmtab

# lvdisplay -v -k /dev/vg00/lvol3


 - LV로부터 물리디스크를 분리

# lvreduce -m 0 /dev/vg00/lvol7 /dev/dsk/c2t1d0 
# lvreduce -m 0 /dev/vg00/lvol6 /dev/dsk/c2t1d0 
# lvreduce -m 0 /dev/vg00/lvol5 /dev/dsk/c2t1d0 
# lvreduce -m 0 /dev/vg00/lvol4 /dev/dsk/c2t1d0
# lvreduce -m 0 /dev/vg00/lvol3 /dev/dsk/c2t1d0 
# lvreduce -m 0 /dev/vg00/lvol2 /dev/dsk/c2t1d0
# lvreduce -m 0 /dev/vg00/lvol1 /dev/dsk/c2t1d0



2) VG 에서 물리디스크를 분리(vg reduce)

 - 현재 상태 확인

# vgdisplay -v /dev/vg00
: 여기서  -Cur PV- 의 값과 -Act PV-값을 확인한다. 두가지 값이 일치해야 함


 - VG로부터 물리디스크 분리

# cp /etc/lvmtab /etc/lvmtab.old

# vgreduce /dev/vg00 /dev/dsk/c2t1d0

확인
# vgdisplay -v /dev/vg00
# lvdisplay -v /dev/vg00/lvol1


 - lvmtab reconfig

# vgscan -v  
: /etc/lvmtab file을 다시 생성한다.
# lvlnboot -R 
또는
# lvcfgbackup /dev/vg01



2. 물리디스크 교체


1) Fail 이 발생한 두번째 디스크를 교체


2) 기존 special file을 제거

(H/W path 확인)

# ioscan -fnkC disk

disk      1  0/1/1/0.0.0    sdisk      CLAIMED     DEVICE       MAXTOR  ATLAS10K4_146SCA
                           /dev/dsk/c2t0d0     /dev/dsk/c2t0d0s2   /dev/rdsk/c2t0d0    /dev/rdsk/c2t0d0s2
                           /dev/dsk/c2t0d0s1   /dev/dsk/c2t0d0s3   /dev/rdsk/c2t0d0s1  /dev/rdsk/c2t0d0s3
disk      2  0/1/1/0.1.0    sdisk      CLAIMED     DEVICE       MAXTOR  ATLAS10K4_146SCA
                           /dev/dsk/c2t1d0   /dev/rdsk/c2t1d0


(제거)

# rmsf -H 0/1/1/0.1.0


3) 교체한 디스크 재인식

(reconfigure)

# ioscan -fnC disk


(special file 생성)

# insf -e -C disk



3. 다시 mirror vg 를 구성


1) PV 생성

# pvcreate -B -f /dev/rdsk/c2t1d0


2) root disk 미러

# vgextend /dev/vg00 /dev/dsk/c2t1d0
# strings /etc/lvmtab
# mkboot /dev/dsk/c2t1d0
# mkboot -a "hpux -lq(0/1/1/0.1.0)/stand/vmunix" /dev/dsk/c2t1d0


# lvextend -m 1 /dev/vg00/lvol7 /dev/dsk/c2t1d0
# lvextend -m 1 /dev/vg00/lvol6 /dev/dsk/c2t1d0
# lvextend -m 1 /dev/vg00/lvol5 /dev/dsk/c2t1d0
# lvextend -m 1 /dev/vg00/lvol4 /dev/dsk/c2t1d0
# lvextend -m 1 /dev/vg00/lvol3 /dev/dsk/c2t1d0
# lvextend -m 1 /dev/vg00/lvol2 /dev/dsk/c2t1d0
# lvextend -m 1 /dev/vg00/lvol1 /dev/dsk/c2t1d0



- 미러링중 모니터링 스크립트(잘 되고 있는지 얼마나 걸리는지 궁금하니까)

# vi view_progress.sh

while [ 0 ] ;
do

LIST=7

while [ ${LIST} -ne 0 ];
do
echo "/dev/vg00/lvol${LIST} : \c"
lvdisplay -v /dev/vg00/lvol${LIST} | grep -i stale | grep -v "LV Status" |  wc -l
LIST=`expr ${LIST} - 1`
done


sleep 10
clear

done


# ./view_progress.sh




3) 변경사항 저장 및 부팅순서 재설정


# lvlnboot -R


 - 부팅가능하도록 설정

# setboot 

# setboot -p 0/1/1/0.0.0
# setboot -a 0/1/1/0.1.0

# setboot 

Primary bootpath : 0/1/1/0.0.0
Alternate bootpath : 0/1/1/0.1.0

Autoboot is ON (enabled)