출처 : http://wireless.moba.co.kr/general/lecture/unix/lec4-3.htm 시스템 프로세스 관리 | ||||||||||||||||||||||
|
'Solaris 10'에 해당되는 글 4건
- 2008.01.02 솔라리스 시스템 프로세스 관리
- 2008.01.02 솔라리스 디스크 미러링 (RAID1)
- 2007.12.26 RAID1... 솔라리스..
- 2007.12.12 솔라리스 끄기
우선 기본적인 RAID1 설정법은 인터넷에 마니 돌고 있는것을 참조 합니다.
여기서 부터 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
저자 Sivakanth Mundru
적용 가능한 OS 버젼: Solaris 9 Operating System (OS), Solaris 8 OS 와 Solstice DiskSuite 4.2.1 Patch 108693-06 (SPARC 플랫폼)
주의: 모든 경우에 이 방법이 동작한다고 보장할 수는 없습니다. 몇가지 조작이 필요할 수도 있습니다.
다음 단계들은 랜덤한 컨트롤러와 타겟을 사용했습니다. 이것은 호스트 마다 다를 수 있습니다.
또한 같은 컨트롤러로의 미러링 보단 서로 다른 컨트롤러로의 미러링이 좋습니다.
1) 시작하기전에 중요한 것:
/etc/vfstab
과/etc/system
을 백업합니다:
cp -p /etc/system /etc/system.orig."date" cp -p /etc/vfstab /etc/vfstab.orig."date"
/etc/system
이 엉망이 될 경우 OK 프롬프트에서 boot -a
를 이용하여 복구가 가능합니다.:
/etc/system.orig."date"
2) 루트 디스크를 미러링 하기 위한 별도의 디스크가 있고 안에는 데이터가 존재하지 않아야 합니다.
3) "루트디스크"의 볼륨 데이터 베이스를 저장하기 위한 25M(10M도 상관 없습니다)의 작은 슬라이스를 만듭니다.
전 그냥 1G정도로 잡았습니다. 1TB 를 미러링 하는 관계로...
만약 루트 디스크에 전혀 공간이 없다면 swap 스페이스를 약간 지우고 다시 추가 하는 방법으로 공간을 확보합니다.
포멧으로 들어 가셔서서 해당 슬라이스 사이즈 줄이시고 추가 하시면 간단히 됩니다.
그리고 여기 원본 문서에는 소스 디스크와 타켓 디스크 명칭이 불분명 해서 .. 저의 기준으로
약간 수정하겠습니다.
소스 (c1d0s0) 타켓(c2d0s0) 입니다.
머신에서 작업이 별로 이루어지지 않고 있을때에 다음과 같이 작업합니다.
3.1) 스왑 상태를 보기 위해 다음 명령어를 사용합니다: swap -l
(스왑이 하나 이상의 슬라이스에 설정되 있다면 더 좋습니다.)
3.2) 다음과 같이 실행합니다:
swap -d swap-name ( /dev/dsk/c?ct?d?s?)
스왑 파티션의 용량이나 실린더 길이를 줄이기 위해 파티션 테이블을 변경합니다.
3.3) 다음과 같이 실행합니다:
swap -a swap-name ( /dev/dsk/c?t?d?s?)
4) 루트 디스크의VTOC (volume table of contents) 와 미러링할 루트 디스크는 동일해야 합니다.prtvtoc
와 fmthard
를 이용하여 VTOC를 복사합니다.
# prtvtoc /dev/rdsk/c1d0s0 | fmthard -s - /dev/rdsk/c2d0s0
5) 루트디스크의 작은 슬라이스에 메타데이타베이스를 생성합니다:
# metadb -f -a -c3 c1d0s6(Slice 6 is my small slice here) # metadb -a -c3 c1d0s6 (Slice 6 on rootmirror) 저는 이건 실행 안했습니다.
6) 이제 파티션테이블의 모든 슬라이스의 미러를 생성할 수 있습니다.
루트 또는 / 파티션을 위해:
# metainit -f d10 1 1 c1d0s0 # metainit d20 1 1 c2d0s0 (create a md d0 and attach one submirror) # metainit d0 -m d10 (반드시 소스 디스크를 넣어야 합니다.) (set up system files for root (/) metadevice, that is, changes to /etc/system and /etc/vfstab) # metaroot d0 # lockfs -fa (clear improper file locks on all mounted UFS file systems)
7) 다른 메타디스크의 네이밍 규칙을 따릅니다.. (이 소프트웨어를 사용해보지 않은 사람들을 위한 주의: 우리는 metaroot
와 lockfs
단계를 다른 파일시스템에서 사용하지 않을 것입니다.)
서브비러들은 10
, d20
, 과 같은 이름을 가집니다..
예를들어 d10
에서 1 은 서브미러의 번호이고, 0은 슬라이스 번호 입니다.
만약 스왑이 partition/slice 1에 있다면 다음과 같이 합니다:
# metainit -f d11 1 1 c?t?d?s1 # metainit d21 1 1 c?t?d?s1 # metainit d1 -m d11
8) 부트 디스크에 가지고 있는 파일 시스템 만큼 다음을 반복합니다.
9) /etc/vfstab
을 변경합니다. 루트의 md
엔트리는 metaroot
명령에 의해 이미 업데이트 되어 있습니다.
/etc/vfstab
의 샘플 카피는 다음과 같습니다:
#device device mount FS fsck mount mount #to mount to fsck point type pass at boot options # fd - /dev/fd fd - no - /proc - /proc proc - no - ##/dev/dsk/c1t1d0s1 - - swap - no - /dev/md/dsk/d1 - - swap - no - /dev/md/dsk/d0 /dev/md/rdsk/d0 / ufs 1 no - ##/dev/dsk/c1t1d0s7 /dev/rdsk/c1t1d0s7 /export/home ufs 2 yes - /dev/md/dsk/d7 /dev/md/rdsk/d7 /export/home ufs 2 yes - ##/dev/dsk/c1t1d0s3 /dev/rdsk/c1t1d0s3 /opt/uc4 ufs 2 yes - /dev/md/dsk/d3 /dev/md/rdsk/d3 /opt/uc4 ufs 2 yes - swap - /tmp tmpfs - yes -
10) dumpadm
을 이용하여 덤프 디바이스를 설정합니다. (이건 저도 못했습니다. ㅜ)
11) /etc/system
파일 안에 mdd
정보 섹션에 다음과 같은 엔트리를 추가합니다:
set md:mirrored_root_flag=1
만약 루트 디스크가 사용이 불가능해 진다면 루트 디스크의 데이타 베이스 또한 사용이 불가능해집니다.
솔라리스 볼륨 메니저는 50%이상의 데이타베이스에서 정상적으로 부팅 되고 몇몇 경우에는 부족한 데이타베이스 리플리카 숫자에 대한 에러가 발생합니다. 다음의 단계들은 적어도 50%이상의 카피에서 솔라리스 볼륨 매니저가 부팅 하기 위한 셋팅에 대해 설명합니다..
12) 다음과 같이 실행합니다:
sync; sync; init 6
13) 파일 시스템이 올라오면 다른 서브 미러들을 부착시킵니다:
# metattach d0 d20
(주의: "metattach"임을 유의하십시오 "metaattach"가 아닙니다.)
# metattach d1 d21
계속 나머지 서브 미러들에 대해 작업합니다.
14) 파일 시스템이 syncing됐는지 아닌지 알아보기 위해 다음과 같은 명령을 실행합니다:
metastat | grep progress
15) 기본, 미러링된 부트 디바이스의 패스를 지정해 줍니다:
ls -l /dev/dsk/c1t1d0s0 /dev/dsk/c1t0d0s0 lrwxrwxrwx 1 root root 43 Dec 23 17:51 /dev/dsk/c1t0d0s0 -> \ ../../devices/pci@1c,600000/scsi@2/sd@0,0:a lrwxrwxrwx 1 root root 43 Dec 23 17:51 /dev/dsk/c1t1d0s0 -> \ ../../devices/pci@1c,600000/scsi@2/sd@1,0:a # eeprom "nvramrc=devalias rootdisk /pci@1c,600000/scsi@2/disk@1,0 devalias rootmirror /pci@1c,600000/scsi@2/disk@0,0"
(ls -l 출력의 "sd" 에서"disk"로의 변화를 주의해서 보시기 바랍니다)
# eeprom "use-nvramrc?=true"
또한 부트 디바이스 값을 변경 시켜서 둘중에 하나가 사용불가능해 질때 다른 하나를 부팅 시킬 수 있습니다..
# eeprom boot-device="rootdisk rootmirror net"
16) syncing작업이 끝나면 루트 디스크를 제거 하고 시스템을 시험해 보시기 바랍니다.
여기서 잠깐.. 일단 부트 영역을 미러링 하기는 했지만...
솔라리스 10 x86버젼을 쓰시면 grub가 기본적으로 깔린다 이거죠;; (전 그랬습니다)
위에 처럼.. 해서 원본을 제거 하고.. 백업 디스크로 부팅을 하니..
안되더구요..
그냥 sparc 에선
installboot /usr/platform/`uname -i`/lib/fs/ufs/bootblk /dev/rdsk/c1d0s0
이렇게 하면 되는듯 했으나..
grub라서 이건.. 실행하면..
Error: installboot is obsolete. Use installgrub(1M)
이런걸 뿌립니다.. ㅡㅡ;
한동안 삽질 하다가..
installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c2d0s0 (타켓 디스크)
요놈이 있다는걸 알았습니다 .
grub 재 설치.. ㅡㅡ ;
음.. 저렇게 한방 날려주고 재부팅..
역시나... 안되더군요..
음... 그래서 다시 한번 고민을 했죠;;
바보 같이.. 파티션에 부트영역설정을 안해준거였습니다.
간단히 fdisk c2d0s0 (타켓디스크/부트영역슬라이스입니다.)
엔터;;; 그럼 이상한 영어 나옵니다. y 로 간단히 넘어가고;;
거기서 2번 누르시고 해당... 슬라이스 선택하시고... 5번 누르고 저장 하시면 됩니다 .
그러구 원본 빼고 부팅~~~
그럼 타켓으로 부팅이 됩니다.. 전 이렇게 해서 되었습니다.
인터넷에 이런 내용이 없어서 나름 고민 했습니다. 혹시나 안되더라도 너무 욕하지 마세요..
전 이렇게 해서 잘 쓰고 있습니다..
출처 : http://kr.sun.com/developers/solaris/techdocs/svm_mirroring.html
회색 글씨는 퍼온거구요..
나머지는 저의 ... ㅡㅡ 잡담입니다..
댓글을 달아 주세요
솔라리스 시스템을 종료하는 명령어들을 정리하였다.
# init 0
위 명령어는 시스템을 run level 0로 전환시킨다. /etc/rc0.d 스크립트를 실행하여 모든 서비스와 데몬을 종료하고 시스템을 PROM 모드로 전환한다.
# init 5
run level 5로 시스템을 전환한다. /etc/rc0.d 스크립트를 실행하여 모든 서비스와 데몬을 종료하고 시스템을 Power off 시킨다.
# init 6
run level 6로 시스템을 전환한다. /etc/rc0.d 스크립트를 실행하여 모든 서비스와 데몬을 종료하고 시스템을 재부팅한다. 이때 시스템은 PROM 모드 까지 내려 갔다가 다시 올라온다.
# reboot
시스템을 재부팅한다. /etc/rc0.d 스크립트는 실행하지 않고 시스템을 재부팅 한다.
# shutdown -i5 -y
시스템 사용자에게 시스템 종료를 알리는 경고 메시지를 출력하고 60초뒤에 시스템을 종료한다. -i 옵션은 run level을 설정하는 옵션으로 위 예제 에서는 run level 5로 시스템을 전환한다. 즉, 시스템을 Power off 시킨다. -y 옵션은 시스템을 종료할 때 나오는 모든 질문에 yes로 대답하라는 것이다.
-i 옵션을 지정해 주지 않으면 shutdown 명령어은 디폴트인 Single user mode로 시스템을 전환시킨다.
# halt
시스템을 PROM 모드로 바로 전환한다. /etc/rc0.d 스크립트는 실행하지 않는다.
# poweroff
시스템을 바로 Power off 시킨다.
※ 팁:
시스템을 종료하기 전에 반드시 sync 명령을 통해 커널 메모리 데이터를 디스크와 동기화 시켜주는 작업을 하자.
만약, sync 명령을 실행 시키지 않고 시스템을 종료하게 되면 다시 부팅 할 때 일명 디스크가 깨져 있을 수도 있다.
sync 명령어를 여러 번 실행하고 시스템을 종료하도록 하자.
댓글을 달아 주세요