Linux 에서 DAT 사용법

 

SCSI controller 를 linux 에서 인식시키는 방법.

modprobe <SCSI module 이름>

: modprobe initio

 

SCSI controller 및 연결된 장비 보는 방법.

J:~ # cat /proc/scsi/scsi

Attached devices:

Host: scsi0 Channel: 00 Id: 05 Lun: 00

   Vendor: HP       Model: C5683A           Rev: C005
   Type:   Sequential-Access                ANSI SCSI revision: 02

 

혹은 dmesg 명령.

 

scsi0 : Initio INI-9X00U/UW SCSI device driver; Revision: 1.03g

  Vendor: HP        Model: C5683A            Rev: C005

  Type:   Sequential-Access                  ANSI SCSI revision: 02

st: Version 20030403, bufsize 32768, max init. bufs 4, s/g segs 16

Attached scsi tape st0 at scsi0, channel 0, id 5, lun 0

st0: Block limits 1 - 16777215 bytes.

 

mt 사용법.

mt –f /dev/st0 status (첫번째 tape 장비 상태 보는 법)

mt –f /dev/st0 eject (첫번째 tape 장비안의 tape 꺼내기)

man mt 참고할 것.

 

tar 사용법.

tar cvf /dev/st0 /backup (/backup 을 tape 에 기록)

tar tvf /dev/st0 (tape 안의 내용을 봄)

tar xvf /dev/st0 (현재 folder 에 tape 내용을 복구)

man tar 참고할 것.

 

참고 문서: http://kldp.org/KoreanDoc/TapeDrive-KLDP

출처 : http://cafe.naver.com/lto/31

반응형
Posted by She쥐포s

2007. 11. 1. 17:36 Unix/HP-UX

Tape Backup 확인

# mt -f /dev/rmt/0mn rew
# mt -f /dev/rmt/0mn fsf 22     # Itanium의 경우 22, PA-RISC의 경우 1
# tar tvf /dev/rmt/0mn
 
/var/opt/ignite/recovery/latest/flist 파일 내용과 비교
반응형
Posted by She쥐포s

아래글을 보고 Shell에 적용을 해 봤습니다.

DATE=`expr \`date +%d\` + 1 - 1`
echo $DATE

아니면 바로
expr `date +%d` + 1 - 1

흐흐흐

--------------<아래는 퍼온글입니다>------------------
우연히 발견했습니다.

echo date("m");

하시면 결과가 09 이렇게 나오죠(지금이 9월이니까)
그런데 여기서 앞의 0을 제거하는 방법중 가장 쉬운건....

echo date("m")+1-1;

하니까 0이 제거되는군요. 하하핫.

http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=3999

반응형
Posted by She쥐포s

※ 이거 짜다가 머리털 뽑히는 줄 알았다..  뺑이쳤다
아뭏든 이래저래 하다보니 목적은 달성했다.

좀 가다듬어야 하는디...
# locale을 한글로
export LANG=ko_KR.eucKR

# 날짜 중 단자리의 날짜에서 0 떼어내기

DATE=`expr \`date +%d\` + 1 - 1`

# 달력 프로그램에서 년도 표시줄 떼고 요일 표시줄 떼고

cal | grep -v `date +%Y` | grep -v 월 > ./DAL

# 첫 칼럼에 ' ' 필요

sed 's@^@ @g' ./DAL > ./DAL2

# 마지막 칼럼에 ' ' 필요

sed 's@$@ @g' ./DAL2 > ./DAL

# awk로 매치되는 라인이 나올 때까지 if loop

awk '{ if ( $0 ~ / '"${DATE}"' / ) print NR }' ./DAL

사용자 삽입 이미지

반응형
Posted by She쥐포s

퍼왔습니다.
http://devfrog.egloos.com/tb/293560

awk 에서 shell 변수 사용하기

#!/bin/sh
if [ $# -ne 4 ]; then
    echo "Usage: log_cnt <file_name> <err_code> <log_point|0> <proc_hour>"
    exit
fi
cnt=1
if [ $3 -ne 0 ]; then
    cat $1 | awk 'BEGIN{FS=";"}{ if ( $10 == '"${2}"' && $7 == '"${3}"' ) print }' | grep ^$4 | wc -l
else
    while [ "$cnt" -ne 5 ]
    do
        echo "log point $cnt: c"
        cat $1 | awk 'BEGIN{FS=";"}{ if ( $10 == '"${2}"' && $7 == '"${cnt}"' ) print }' | grep ^$4 | wc -l
        cnt=`expr $cnt + 1`
    done
fi

-----
shell script 에서 awk 표현식 안에서 shell 의 input parameter 를 쓸 경우가 있다.
이때, awk 에서 shell 변수로 인식시키기 위해서는 ' " ${변수명} "  ' 과 같은 방식으로 사용해야 한다.

반응형
Posted by She쥐포s

2007. 11. 1. 15:16 Unix/HP-UX

LVM

1. LVM Disk Layout

- Boot Disk(Root Disk)

LIF Header(Logical Interchange Format)
LIF는 여러가지 HP computer system간에 파일교환을 위한 표준 mass storage Format으로서 root,swap,dump devices의 phygical volume에 존재하며 LIF Header정보는 mkboot명령어로 만들어진다.

BDRA(Boot Data Reserved Area)
이 영역은 root,primary swap,dump logical volume을 구성하기위한 정보뿐만 아니라 root file system을 mount하고 root volume group에 LVM disk의 위치와 size를 가지고 있다.

LIF Directory Area  
이 영역은 HPUX,LABEL,ISL,AUTO file등을 포함하고 있으며 mkboot명령어로 만들어진다.

# lifls -v -l /dev/dsk/c0t6d0 명령어로 볼수있다.

- Non Boot Disk(Data Disk)

PVRA(Physical Volume Reserved Area)
Physical Volume에 관한 정보를 포함한다. pvcreate명령으로 만들어진다.

VGRA(Volume Group Reserved Area)
전체 Volume Group에 대한 정보를 가지고 있으며 Volume Group에 속해있는 각각의 Physical Volume에는 VGRA의 복사본이 들어있다.
VGRA는 Volume Group의 quorum정보를 가지고 있는 VGSA(Volume Group Status Area)와  Volume Group을 구성하기 위해 필요한 device driver정보를 가지고 있는 VGDA(Volume Group Descriptor Area)영역이 있다.
         
User Data Area
이 영역은 모든 유저 데이타가 저장되는 곳으로서 file system,
virtual memory(swap),user application들이 들어있다. Volume Group이 만들어 질때 이 영역은 fixed size의 physical extent와 logical extent의 map으로 나뉘어진다.

Bad Block Relocation Area
이 영역은 bad block recovery mechanism에 관한 정보를 가지고 있다.

LVM Overhead
LVM에 사용되는 Data구조는 disk space에 대한 약간의 Overhead를 소비한다.

이 Overhead는 Bootable LVM disk는 2912Kb의 고정된 크기로 사용하며
Non Bootable LVM disk는 보통 400Kb를 사용하지만 Volume Group의 크기에 따라 다르다.

Non Bootable disk의 Overhead는 vgcreate명령어나 SAM에서 사용하는 parameter에 따라 다르며 만약 small extent size를 만들거나 많은 physical volume을 만들때는 LVM 데이타 구조는 더 커질것이다.

PE(Phygical Extent)
Logical Volume에 space를 할당하는 allocation의 기본단위이며 Default값은 4MB이다.
하나의 Phygical Volume에 포함된 연속적인 addressable한 disk block이며 Volume Group에서는 그 size가 항상 같다.

LE(Logical Extent)
하나의 logical volume에서 논리적으로 연속적인 logical block이며 Volume이 mirror가 되지 않았으면 Phygical Extent와 항상 일치한다. Root disk의 logical extent는 반드시 contiguous해야 하며 Data disk는 contiguous하지 않아도 된다.

2. LVM 구성을 위한 사전 정보수집 방법

# ioscan -fnkCdisk
# diskinfo /dev/rdsk/c0t5d0
# lssf /dev/dsk/c0t5d0
# strings /etc/lvmtab
# lvlnboot -v
# vgdisplay -v /dev/vg00
# lvdisplay -v /dev/vg00/lvol1
# pvdisplay -v /dev/dsk/c0t5d0

3. New Volume Group을 Create하는 방법

# vi vgcreate.sh
pvcreate -f /dev/rdsk/c0t5d0
mkdir /dev/vg01
mknod /dev/vg01/group c 64 0x010000
vgcreate /dev/vg01 /dev/dsk/c0t5d0
lvcreate -l 250 /dev/vg01 : (# lvcreate -L 1000 /dev/vg01 과 같다)
lvcreate -l 250 /dev/vg01
newfs -F vxfs /dev/vg01/rlvol1
newfs -F vxfs /dev/vg01/rlovl2
:wq

# sh vgcreate.sh
# mkdir /disk1
# mkdir /disk2
# vi /etc/fstab
# mountall 또는 # mount -a
# vgdisplay -v /dev/vg01 로 확인
# strings /etc/lvmtab 으로 확인

4. New Lvol을 Create하는 방법

# vgdisplay /dev/vg01

--- Logical volumes ---
   LV Name                     /dev/vg01/lvol1
   LV Status                   available/syncd
   LV Size (Mbytes)           1000
   Current LE                  250
   Allocated PE                250
   Used PV                     1

--- Physical volumes ---
   PV Name                     /dev/dsk/c0t8d0
   PV Status                   available
   Total PE                    508
   Free PE                     258

# lvcreate -l 258 /dev/vg01
  또는 (# lvextend -L 1032 /dev/vg01/lvol1)
# vgdisplay -v /dev/vg01 로 확인
# newfs -F vxfs /dev/vg01/rlvol2
# vi /etc/fstab 추가
# mountall

5. Lvol size를 Extend하는 방법

# vgdisplay /dev/vg01

--- Logical volumes ---
   LV Name                     /dev/vg01/lvol1
   LV Status                   available/syncd
   LV Size (Mbytes)           1000
   Current LE                  250
   Allocated PE                250
   Used PV                     1

--- Physical volumes ---
   PV Name                     /dev/dsk/c0t8d0
   PV Status                   available
   Total PE                    508
   Free PE                     258

# umount /dev/vg01/lvol1  또는 # umount /mountpoint
# lvextend -l 508 /dev/vg01/lvol1
  또는 (# lvextend -L 2032 /dev/vg01/lvol1)
# vgdisplay -v /dev/vg01 로 확인
# extendfs -F vxfs /dev/vg01/rlvol1
# vi /etc/fstab
# mountall

6. Lvol size를 Reduce하는 방법

# vgdisplay /dev/vg01

--- Logical volumes ---
   LV Name                     /dev/vg01/lvol1
   LV Status                   available/syncd
   LV Size (Mbytes)           2032
   Current LE                  508
   Allocated PE                508
   Used PV                     1

--- Physical volumes ---
   PV Name                     /dev/dsk/c0t8d0
   PV Status                   available
   Total PE                    508
   Free PE                     0

# /dev/vg01/lvol1의 data를 tar,cpio,fbackup등을 이용하여 full backup
# umount /dev/vg01/lvol1
# lvreduce -l 250 /dev/vg01/lvol1
# newfs -F vxfs /dev/vg01/rlvol1
# vgdisplay -v /dev/vg01
# mount -a
# tar,cpio,fbackup등을 이용하여 backup받은 data recover

7. Volume Group에 New Disk를 Extend하는 방법

# pvcreate -f /dev/rdsk/c0t8d0
# vgextend /dev/vg01 /dev/dsk/c0t8d0
# vgdisplay -v /dev/vg01 로 확인

만약 /dev/dsk/c0t8d0 와 /dev/dsk/c0t9d0 두개의 disk를 추가한다면...

# pvcreate -f /dev/rdsk/c0t8d0
# pvcreate -f /dev/rdsk/c0t9d0
# vgextend /dev/vg01 /dev/dsk/c0t8d0 /dev/dsk/c0t9d0
# vgdisplay -v /dev/vg01 로 확인
# strings /etc/lvmtab 으로 확인

 만약 /dev/dsk/c0t8d0 의 Alternative Pass가 /dev/dsk/c1t8d0 라면..

# pvcreate -f /dev/rdsk/c0t8d0
# vgextend /dev/vg01 /dev/dsk/c0t8d0 /dev/dsk/c1t8d0
# vgdisplay -v /dev/vg01
# strings /etc/lvmtab

8. Volume Group에서 Phygical Volume을 Reduce하는 방법

volume group /dev/vg01에서 phygical volume /dev/dsk/c0t1d0를 remove하려면..

# vgreduce /dev/vg01 /dev/dsk/c0t1d0  : /dev/vg01에 lvol이 없는경우
# strings /etc/lvmtab
# vgdisplay -v /dev/vg01

Mirrored된 vg01 volume group에서 missing PVs를 강제로 없애려면..

# vgreduce -f /dev/vg01
 Missing PVs 가 성공적으로 remove되면 다음과 같은 message가 나타난다.
           PV with key 0 sucessfully deleted from vg /dev/vg01
           Repair done, please do the following steps.....:
           1.  Save /etc/lvmtab to another file.
           2.  Remove /etc/lvmtab.
           3.  Use vgscan -v to recreate /etc/lvmtab.
           4.  NOW use vgcfgbackup(1M) to save the LVM setup.

9. Volume Group을 Remove하는 방법

 volume group /dev/vg01을 remove하려면..
 
# tar,cpio,fbackup,omniback등으로 remove할 volume group의 모든 lvol을 backup한다.
# lvremove /dev/vg01/lvol1  : vg01의 모든 lvol을 remove한다.
# lvremove /dev/vg01/lvol2
# vgreduce /dev/vg01 /dev/dsk/c0t7d0 : 이 명령어는 vg01에 2개 이상의 디스크가 존재할때 하나의 디스크만 남기고 모두 reduce한다.
# vgremove /dev/vg01
# strings /etc/lvmtab으로 확인

10. vgexport로 Volume Group을 Remove하는 방법

# umount /dev/vg01/lvol1
# umount /dev/vg01/lvol2
# vgchagne -a n /dev/vg01
# vgexport -m /tmp/vg01.map /dev/vg01
# strings /etc/lvmtab

11. Root Disk를 Mirroring하는 방법

root disk /dev/vg00의 phygical volume이 /dev/dsk/c0t6d0이고
또다른 disk /dev/dsk/c1t6d0를 추가하여 root disk mirroring을 하려면..

작업전에 먼저 HP MirrorDisk/UX Application을 Install한다.

# ioscan -fnkCdisk 로 /dev/dsk/c1t6d0의 HW Path확인
# vi root_mirror.sh
  pvcreate -B -f /dev/rdsk/c1t6d0
  vgextend /dev/vg00 /dev/dsk/c1t6d0
  mkboot /dev/dsk/c1t6d0
  mkboot -a "hpux -lq(10/1.6.0;0)/stand/vmunix" /dev/dsk/c1t6d0
  mkboot -a "hpux -lq(10/0.6.0;0)/stand/vmunix" /dev/dsk/c0t6d0
  setboot -a 10/1.6.0
  lvextend -m 1 /dev/vg00/lvol1 /dev/dsk/c1t6d0
  lvextend -m 1 /dev/vg00/lvol2 /dev/dsk/c1t6d0
  lvextend -m 1 /dev/vg00/lvol3 /dev/dsk/c1t6d0
  lvlnboot -R
:wq
# sh root_mirror.sh
# lvlnboot -v로 확인
# strings /etc/lvmtab으로 확인
# lvdisplay -v /dev/vg00/lvol3로 확인
# setboot 로  alternate boot path 확인

12. Non Root Disk(Data Disk)를 Mirroring하는 방법

작업전에 먼저 HP MirrorDisk/UX Application을 Install한다.

# vi non_root_mirror.sh
  pvcreate -f /dev/rdsk/c1t3d0
  pvcreate -f /dev/rdsk/c1t4d0
  pvcreate -f /dev/rdsk/c1t5d0
  vgextend /dev/vg01 /dev/dsk/c1t3d0
  vgextend /dev/vg02 /dev/dsk/c1t4d0
  vgextend /dev/vg03 /dev/dsk/c1t5d0
  lvextend -m 1 /dev/vg01/lvol1 /dev/dsk/c1t3d0
  lvextend -m 1 /dev/vg01/lvol2 /dev/dsk/c1t3d0
  lvextend -m 1 /dev/vg01/lvol3 /dev/dsk/c1t3d0
  lvextend -m 1 /dev/vg02/lvol1 /dev/dsk/c1t4d0
  lvextend -m 1 /dev/vg02/lvol2 /dev/dsk/c1t4d0
  lvextend -m 1 /dev/vg03/lvol1 /dev/dsk/c1t5d0
  lvextend -m 1 /dev/vg03/lvol2 /dev/dsk/c1t5d0
:wq
# sh non_root_mirror.sh
# vgdisplay /dev/vg01로 확인
# stings /etc/lvmtab으로 확인

13. Mirror된 Lvol을 Split하는 방법

# lvdisplay -v /dev/vg01/lvol1
# lvsplit -s backup /dev/vg01/lvol1  : -s option을 안주면 lvol1b로 생김
# fsck -F vxfs /dev/vg01/lvol1backup
# mkdir /backup
# mount /dev/vg01/lvol1backup /backup  : 이렇게 해서 mirror된 lvol을
backup할수 있다.

14. Split된 Lvol을 하나로 merge하는 방법

# umount /backup
# lvmerge /dev/vg01/lvol1backup /dev/vg01/lvol1  (# 순서에 주의)
  또는
# lvmerge /dev/vg01/lvol1b /dev/vg01/lvol1 : -s option을 안줬을 경우

15. A 시스템의 Disk를 Export하여 B 시스템에 Import하는 방법

A 시스템에 /dev/vg01 에있는 /dev/dsk/c0t1d0 를 떼어낸다면..

# umount /dev/vg01/lvol1
# vgchange -a n /dev/vg01
# vgexport -v -m /tmp/vg.map /dev/vg01
# B 시스템으로 /tmp/vg.map를 ftp한다.

B 시스템에서 이 디스크를 붙여서 # ioscan -fnkCdisk한
결과 /dev/dsk/c1t1d1으로 나타나고, 이 디스크를 /dev/vg02 로 만든다면 B 시스템에서 다음과 같이 작업한다.

# ioscan -fnkCdisk
# mkdir /dev/vg02
# mknod /dev/vg02/group c 64 0x020000
# vgimport -m /tmp/vg.map /dev/vg02 /dev/dsk/c1t1d1
# vgdisplay -v /dev/vg02
# vgcfgbackup /dev/vg02
# vi /etc/fstab
# mountall

16. Secondary Dump Device를 추가시키는 방법

Dump Disk는 반드시 root volume group에 포함되어야 하며 그러기 위해선 2GB또는 4GB등의 single disk가 있어야 한다. 만약 dump용으로 사용할 device가 /dev/dsk/c1t0d0라고 한다면..

# pvcreate -f /dev/rdsk/c1t0d0
# vgextend /dev/vg00 /dev/dsk/c1t0d0
# lvcreate -L 2000 -C y -r n /dev/vg00 :(/dev/vg00/lvol4가 만들어졌다면) Dump lvol은 반드시 contiguous 해야하며(-C y),bad block relocation이 Disable(-r n)되어야 한다.

# lvlnboot -v : 현재의 root,swap,dump정보확인
Boot Definitions for Volume Group /dev/vg00:
Physical Volumes belonging in Root Volume Group:
        /dev/dsk/c0t5d0 (4.5.0) -- Boot Disk
Boot: lvol1     on:     /dev/dsk/c0t5d0
Root: lvol3     on:     /dev/dsk/c0t5d0
Swap: lvol2     on:     /dev/dsk/c0t5d0
Dump: lvol2     on:     /dev/dsk/c0t5d0, 0

# lvlnboot -R : 현재의 root volume group configuration을 /etc/lvmconf에 backup함.
# lvrmboot -r /dev/vg00  : 현재의 root volume group의 root,swap,dump정보를 삭제함.

# lvlnboot -R
# lvlnboot -b /dev/vg00/lvol1
# lvlnboot -r /dev/vg00/lvol3
# lvlnboot -s /dev/vg00/lvol2
# lvlnboot -d /dev/vg00/lvol2  : primary dump영역 설정
# lvlnboot -d /dev/vg00/lvol4  : secondary dump영역 설정
# lvlnboot -v 로 확인

17. MC/ServiceGuard구축시 두 시스템간에 Disk를 Share하는 방법

H/W적으로 Disk들이 양쪽시스템에 연결되어 있다.

 A 시스템의 # ioscan -fnkCdisk결과 :
/dev/dsk/c0t1d0(4GB),/dev/dsk/c0t2d0(4GB)

 B 시스템의 # ioscan -fnkCdisk결과 :
/dev/dsk/c1t1d0(4GB),/dev/dsk/c1t2d0(4GB)

여기서, A 시스템의 /dev/dsk/c0t1d0 와 B 시스템의 /dev/dsk/c1t1d0,
A 시스템의 /dev/dsk/c0t2d0 와 B 시스템의 /dev/dsk/c1t2d0 가
서로 같은 Disk 이라면..
먼저 A 시스템에서 다음과 같이 작업을 실시한다.

# vi vgcreate.sh

pvcreate -f /dev/rdsk/c0t1d0
pvcreate -f /dev/rdsk/c0t2d0
mkdir /dev/vg01
mkdir /dev/vg02
mknod /dev/vg01/group c 64 0x010000
mknod /dev/vg02/group c 64 0x020000
vgcreate /dev/vg01 /dev/dsk/c0t1d0
vgcreate /dev/vg02 /dev/dsk/c0t2d0
lvcreate -L 4000 /dev/vg01
lvcreate -L 4000 /dev/vg02
newfs -F vxfs /dev/vg01/rlvol1
newfs -F vxfs /dev/vg02/rlovl1
:wq
# mkdir /disk1
# mkdir /disk2
# vi /etc/fstab
# mountall
# vgexport -s -p -m /tmp/vg01.map /dev/vg01 : volume group을 remove
# vgexport -s -p -m /tmp/vg02.map /dev/vg02 : 하지않고 map file을 받는다.

/tmp의 mapfile들을 B 시스템의 /tmp directory로 ftp한다.

B 시스템에서 다음과 같이 작업한다.

# mkdir /dev/vg01
# mkdir /dev/vg02
# mknod /dev/vg01/group c 64 0x010000
# mknod /dev/vg02/group c 64 0x020000
# vgimport -s -v -m /tmp/vg01.map /dev/vg01
# vgimport -s -v -m /tmp/vg02.map /dev/vg02

만약 A system에 mount된 volume group을 B시스템에서 mount하려면..

A 시스템에서

# umount /dev/vg01/lvol1
# umount /dev/vg02/lvol1
# vgchange -a n /dev/vg01
# vgchange -a n /dev/vg02

B 시스템에서

# vgchange -a y /dev/vg01 : vgchange만 available하게 해주면 상대방시스템에
# vgchange -a y /dev/vg02 : mount할 수 있다.
# mountall

18. Root Disk를 다른 New Disk로 변경하는 방법
: pvmove명령어 사용

/dev/vg00의 /dev/dsk/c0t6d0 root disk를 /dev/dsk/c0t5d0로 바꾼다면..

# pvcreate -B -f /dev/rdsk/c0t5d0
# mkboot /dev/dsk/c0t5d0
# mkboot -a -hpux (10/0.5.0;0)/stand/vmunix- /dev/dsk/c0t5d0
# vgextend /dev/vg00 /dev/dsk/c0t5d0
# pvmove /dev/dsk/c0t6d0 /dev/dsk/c0t5d0
# vgreduce /dev/vg00 /dev/dsk/c0t6d0
# shutdown -r -y 0

rebooting시 primary boot path를 10/0.5.0으로 변경하고 maintenance mode로 booting한다.

ISL> hpux -lm

# vgchange -a y /dev/vg00
# lvlnboot -b /dev/vg00/lvol1
# lvlnboot -r /dev/vg00/lvol3
# lvlnboot -s /dev/vg00/lvol2
# lvlnboot -d /dev/vg00/lvol2
# lvlnboot -R
# lvlnboot -v로 확인
# vgchange -a n /dev/vg00
# rm /etc/mnttab
# shutdown -r -y 0

19. Mirrored된 Disk를 분리하는 방법

/dev/vg01이 /dev/dsk/c0t5d0와 /dev/dsk/c0t6d0 두개의 disk로 mirror가 되있으며 vg01에서 /dev/dsk/c0t6d0를 떼어내려 한다면..

# vgdisplay -v /dev/vg01 로 확인
# strings /etc/lvmtab
# lvreduce -m 0 /dev/vg01/lvol1 /dev/dsk/c0t6d0
# lvreduce -m 0 /dev/vg01/lvol2 /dev/dsk/c0t6d0
# vgreduce /dev/vg01 /dev/dsk/c0t6d0
# strings /etc/lvmtab으로 확인
# lvdisplay -v /dev/vg01/lvol1로 확인
# lvdisplay -v /dev/vg01/lvol2로 확인

20. Mirrored된 Volume Group에서 Disk Fail이 발생한 Disk를 떼어내는 방법

/dev/vg01이 /dev/dsk/c0t5d0와 /dev/dsk/c0t6d0 두개의 disk로 mirror가 되있으며 /dev/dsk/c0t6d0 이 disk fail이 발생하여 이 디스크를 떼어내려 한다면..

# lvdisplay -v -k /dev/vg01/lvol1  : -k option으로 fail이 발생한 disk의 pvkey(Phygical Volume Number in VG)값을 알아야한다.
여기서 pvkey값이 2라고 한다면..

# lvreduce -m 0 -k /dev/vg01/lvol1 2
# lvdisplay -v -k /dev/vg01/lvol2  : pvkey값이 3이라면 한다면..
# lvreduce -m 0 -k /dev/vg01/lvo2 3
# vgdisplay -v /dev/vg01  : 여기서  -Cur PV- 의 값과 -Act PV-값을 확인한다.
# vgreduce -f /dev/vg01   : 만약 Cur PV값이 Act PV값보다 크면 -f option으로 queorum 정족수를 맞춰줘야 한다.
# mv /etc/lvmtab /etc/lvmtab.bak
# vgscan -v   : /etc/lvmtab file을 다시 생성한다.
# lvlnboot -R 또는 # lvcfgbackup /dev/vg01

21. Root Volume Group Size를 확장하는 방법

: Pree PE가 남아있는경우 Install CD 를 사용하는 방법

# vgdisplay -v /dev/vg00  : 확인결과 현재의 root인 /dev/vg00/lvol3의
"Current LE" 가 450 이고 남아있는 "Free PE"가 50 이라면..

ISL> hpux -is  : single user mode로 booting
# cd /
# find . -xdev | cpio -ocvxB > /dev/rmt/0m
# cd /stand
# find . -xdev | cpio -ocvxB > /dev/rmt/1m
또는
# mount /dev/vg01/lvo1 /root_backup
# cd /
# find . -xdev | cpio -pdumvx /root_backup
# cd /stand
# find . -xdev | cpio -pdumvx /stand_backup :  다른disk가 여유가 있다면..

또는

# fbackup -0uf /dev/rmt/0m -i / -i /stand
: /와 /stand만 cpio,fbackup등을 사용하여 full backup 받는다. 
# shutdown -r -y 0
                
# Install CD 를 사용하여 root size를 모두 확장하고 Install을 시작한뒤 약 5분뒤 swinstall mode가 진행되기 전에 ^C 를 쳐서 Shell mode로 나온다. 그다음 backup 받은 / 와 /stand를 cpio나 frecover로 data를 복구한다.

# cd /
# cpio -icvxB * < /dev/rmt/0m 
# shutdown -r y 0

22. Root Volume Group를 확장하는 방법

: New Disk를 추가하여 /var를 분리하는 방법

root volume group /dev/vg00의 device가 /dev/dsk/c0t6d0(2GB)이고 여기에 /dev/dsk/c0t5d0(2GB) disk를 더 추가하여 /var 를 분리한다면..

ISL> hpux -is    : single user mode로 booting

# pvcreate -f /dev/rdsk/c0t5d0
# vgextend /dev/vg00 /dev/dsk/c0t5d0
# lvcreate -L 1000 -C y -r n /dev/vg00
# newfs -F vxfs /dev/vg00/rlvol4
# mkdir /new_var
# mount /dev/vg00/lvol4 /new_var
# cd /var
# find . -xdev | cpio -pdumvx /new_var
# vi /etc/fstab                : /dev/vg00/lvo4 /var 추가
# rm -rf /var
# lvlnboot -R
# shutdown -r -y 0

23. Mirroring을 하지 않고 Root Disk 대체본을 만드는 방법

# pvcreate -B -f /dev/rdsk/c0t5d0
# mkdir /dev/vg09
# mknod /dev/vg09/group c 64 0x090000
# vgcreate /dev/vg09 /dev/dsk/c0t5d0
# mkboot /dev/rdsk/c0t5d0
# mkboot -a "hpux (8/12.5.0;0)/stand/vmunix" /dev/rdsk/c0t5d0
# lvcreate -L 100 -C y -r n /dev/vg09
# lvcreate -L 1000 -C y -r n /dev/vg09
# lvcreate -L 2000 -C y -r n /dev/vg09
# newfs -F vxfs /dev/vg09/rlvol3
# lvlnboot -b /dev/vg09/lvol1
# lvlnboot -r /dev/vg09/lvol3
# lvlnboot -s /dev/vg09/lvol2
# lvlnboot -d /dev/vg09/lvol2
# lvlnboot -R
# mkdir /new_stand
# mkdir /new_root
# mount /dev/vg09/lvol1 /new_stand
# mount /dev/vg09/lvol3 /new_root
# cd /stand
# find . -xdev | cpio -pdumvx /new_stand
# cd /
# find . -xdev | cpio -pdumvx /new_root
# cd /new_stand
# config system
# cp -p vmunix_test vmunix
# umount /new_stand
# umount /new_root

24. Mirrored with good vgcfgbackup Root Volume Group을 vgcfgrestore로 복구하는 방법

# shutdown 뒤 defective disk를 교체한 후  single user mode로 booting

ISL> hpux -is -lq

# pvcreate -B -f /dev/rdsk/c0t5d0
# vgcfgrestore -n /dev/vg00 /dev/rdsk/c0t5d0
# vgchange -a y /dev/vg00
# vgsync /dev/vg00
# shutdown -r -y 0

25. Mirrored with good vgcfgbackup Data Volume Group을
vgcfgrestore로 복구하는 방법

# shutdown 뒤 defective disk를 교체한 후  single user mode로 booting

ISL> hpux -is

# pvcreate -f /dev/rdsk/c1t5d0
# vgcfgrestore -n /dev/vg02 /dev/rdsk/c1t5d0
# vgchange -a y /dev/vg02   : 이때 data disk mirror resync가 시작된다.
: 만약 resync가 되지 않으면 # vgsync /dev/vg02를 해줘야 한다.
# shutdown -r -y 0

26. Data Volume Group /dev/vg02가 remove된 경우 복구 방법

# mkdir /dev/vg02
# mknod /dev/vg02/group c 64  0x020000
# mv /etc/lvmtab /etc/lvmtab.old
# vgscan -v
# vgchange -a y /dev/vg02

27. Data Volume Group이 LVM Fault로 인해 복구가 안될경우

만약 data volume group이 data는 남아 있으나 /etc/lvmconf에 vgcfgbackup file도 없고 정상적으로 data를 write할수 없을며 vgscan이나 vgimport로도 복구가 안될 경우..

이 경우에는 반드시 data volume group의 lvol size를 정확히 알고 있어야한다.
이 data volume group이 /dev/vg02이고 disk가 /dev/dsk/c0t7d0라고 하면..

# mkdir /dev/vg02
# mknod /dev/vg02/group c 64 0x020000
# pvcreate -f /dev/rdsk/c0t7d0
# vgcreate /dev/vg02 /dev/dsk/c0t7d0
# lvcreate -l 1000 /dev/vg02
     : 이 경우 과거의 vg02의 lvol size를 정확히 알고 있어야 한다.
     : 만약 size를 모른다면 data가 깨질수도 있다

# lvcreate -l 2000 /dev/vg02
# mount -a

이 경우 절대로 newfs를 해서는 안된다. 만약 newfs를 한다면 모든 data가 날아가 버릴것이다.

※ 출처 : http://blog.naver.com/find999.do?Redirect=Log&logNo=150002210045

반응형
Posted by She쥐포s

사용자가 지정한 횟수이상 로그인에 실패했을 경우 lock 거는 방법

○ /etc/pam.d/system-auth 파일에 다음 라인 추가

auth        required        /lib/security/pam_tally.so onerr=fail no_magic_root
account     required        /lib/security/pam_tally.so deny=지정횟수 no_magic_root reset
 
○ lock를 푸는 방법

# faillog -u 사용자명 -r

※ 출처 : http://hprc.co.kr/description.aspx?id=2007082007745748001

반응형
Posted by She쥐포s

2007. 11. 1. 14:32 Unix/HP-UX

Volume 합치기

○ 두개의 logical volume 이 있는 상황에서 하나의 logical volume으로 만들고자 한다.

# bdf                                                                  : 작업전 용량확인
# umount /fs1                                                      : 없앨 logical volume unmount
# lvremove /dev/vg01/lvol1                                   : logical volume 제거

The logical volume "/dev/vg01/lvol1" is not empty;
do you really want to delete the logical volume (y/n) : y
Logical volume "/dev/vg01/lvol1" has been successfully removed.
Volume Group configuration for /dev/vg01 has been saved in /etc/lvmconf/vg01.conf

# lvextend -L 51136 /dev/vg01/lvol2                          : logical volume 용량 확장
Logical volume "/dev/vg01/lvol2" has been successfully extended.
Volume Group configuration for /dev/vg01 has been saved in /etc/lvmconf/vg01.conf

# fsadm -F vxfs -b 51136M /fs2                                 : defragmentation
UX:vxfs fsadm: INFO: V-3-23585: /dev/vg01/rlvol2 is currently 31391744 sectors - size will be increased

# bdf                                                                     : 작업후 용량확인
# lvdisplay -v /dev/vg01/lvol2                                  : logical volume 정보보기

반응형
Posted by She쥐포s

○ Hard Links
  - 동일 Filesystem에서만 가능
  - Original file이 지워져도 사용가능(link된 file)
  - 같은 inode를 갖음

○ Symbolic links
  - Filesystem이 달라도 상관없음
  - Original file이 지워질 경우 access 안됨
  - 다른 inode를 갖음
  - Original File에 비해 access time이 느림(왜? 해당 파일에 대한 포인터(?)를 처리한 후
    access하므로)

반응형
Posted by She쥐포s

ittoolbox 메일리스트의 unixadmin-l 메일리스트를 보다보니 다음과 같은 내용이 있어
가져왔습니다.

Command Line의 인수로 패스워드로 받는 경우 Shell에서는 패스워드를 숨길 수가
없어 다음과 같은 방식으로 처리합니다.

--------------------<원본>-------------------------
#!/usr/bin/sh
# 일반 유닉스에서 변수를 초기화(?)하는 듯
TEST1=

# 문자열을 입력받기 위한 프롬프트 출력
echo "Enter TEST1:"

# 화면 출력 off
stty -echo

# TEST1에 해당하는 값을 읽음
read TEST1

# 화면 출력 on
stty echo

# 화면에 인수 출력
echo "TEST1=${TEST1}"

# 끝!
exit
--------------------<원본끝>-----------------------

위의 내용을 Linux에서 사용하도록 변형

#!/bin/sh
TEST1=
# -n 옵션으로 한 줄에 표시

echo -n "Enter TEST1:"
stty -echo
read TEST1
echo ""
stty echo
echo "TEST1=${TEST1}"
exit

다음은 실행시의 화면(※ Enter TEST1: 이후에는 표시되지 않음)

사용자 삽입 이미지

반응형
Posted by She쥐포s

블로그 이미지
She쥐포s
Yesterday
Today
Total

달력

 « |  » 2024.4
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

최근에 올라온 글

최근에 달린 댓글

글 보관함