IT

[AIX] awk 명령어를 이용한 VG, PV, LV 조회 명령어 본문

SE/AIX

[AIX] awk 명령어를 이용한 VG, PV, LV 조회 명령어

섬법 2025. 2. 21. 22:09

1. VG, PV, LV 조회 명령어

lsvg 명령어에 -p, -l 옵션을 이용해 PV와 LV를 조회할 수 있다.

이때, awk 명령어를 이용해 한 줄의 명령어로 한 번에 pv와 lv를 조회할 수 있다.

lsvg -o |awk '{print "lsvg -p " $1 "; lsvg -l " $1}' |sh

 

(1) lsvg -o

vg목록 중 활성화 vg표시(vary on 상태인 vg)

 

(2) awk

텍스트를 행, 단어 별로 처리하는 명령어

$1: 현재 줄의 첫 번째 필드 출력

 

(3) lsvg -p [vg명]

해당 vg의 pv를 출력

 

(4) lsvg -l [vg명]

해당 vg의 lv를 출력

 

(5) sh

생성된 명령어를 쉘에서 실행

이거 없으면 그냥 명령어를 출력만 함

 

▶ 즉, lsvg -o 를 통해 나온 vg목록을 lsvg -p, lsvg -l 뒤에 붙여서 명령어로 실행함.

 

실행 결과

[test:root] / > lsvg -o |awk '{print "lsvg -p " $1 "; lsvg -l " $1}' |sh
appvg:
PV_NAME           PV STATE          TOTAL PPs   FREE PPs    FREE DISTRIBUTION
hdisk3            active            199         0           00..00..00..00..00
hdisk4            active            199         0           00..00..00..00..00
hdisk5            active            199         0           00..00..00..00..00
hdisk6            active            199         0           00..00..00..00..00
hdisk7            active            199         0           00..00..00..00..00
hdisk13           active            199         0           00..00..00..00..00
hdisk14           active            199         0           00..00..00..00..00
hdisk15           active            199         0           00..00..00..00..00
hdisk16           active            199         0           00..00..00..00..00
hdisk17           active            199         0           00..00..00..00..00
hdisk9            active            199         0           00..00..00..00..00
hdisk18           active            199         0           00..00..00..00..00
hdisk19           active            199         0           00..00..00..00..00
hdisk20           active            199         0           00..00..00..00..00
hdisk11           active            199         87          07..00..00..40..40
hdisk12           active            199         19          00..00..00..00..19
appvg:
LV NAME             TYPE       LPs     PPs     PVs  LV STATE      MOUNT POINT
webapplv            jfs2       600     1200    8    open/syncd    /webapp
1homelv        	    jfs2       919     1838    10   open/syncd    /1home
tscanlv             jfs2       20      40      2    open/syncd    /tscan
imsivg:
PV_NAME           PV STATE          TOTAL PPs   FREE PPs    FREE DISTRIBUTION
hdisk8            active            199         0           00..00..00..00..00
imsivg:
LV NAME             TYPE       LPs     PPs     PVs  LV STATE      MOUNT POINT
imsilv              jfs2       199     199     1    open/syncd    /imsi
rootvg:
PV_NAME           PV STATE          TOTAL PPs   FREE PPs    FREE DISTRIBUTION
hdisk0            active            558         434         111..62..38..111..112
hdisk1            active            558         426         111..54..38..111..112
rootvg:
LV NAME             TYPE       LPs     PPs     PVs  LV STATE      MOUNT POINT
hd5                 boot       1       2       2    closed/syncd  N/A
hd6                 paging     32      64      2    open/syncd    N/A
hd8                 jfs2log    1       2       2    open/syncd    N/A
hd4                 jfs2       16      32      2    open/syncd    /
hd2                 jfs2       16      32      2    open/syncd    /usr
hd9var              jfs2       16      32      2    open/syncd    /var
hd3                 jfs2       16      32      2    open/syncd    /tmp
hd1                 jfs2       4       8       2    open/syncd    /home
hd10opt             jfs2       4       8       2    open/syncd    /opt
pkglv               jfs2       8       16      2    open/syncd    /package
lg_dumplv           sysdump    8       8       1    open/syncd    N/A
ptflv               jfs2       10      20      2    open/syncd    /ptf

 

근데 이렇게 보면 너무 붙어있어서 보기 힘들기 때문에 다음과 같은 명령어를 사용하면 좀 더 가독성이 좋다.

 

lsvg -o |awk '{print "echo \"VG: " $1 "\"; lsvg -p " $1 ";echo \"LVs:\"; lsvg -l " $1 "; echo"}' |sh

 

위 명령어에 echo를 추가해서 vg, lv 앞에 VG:, LVs:를 추가하고 줄을 바꾼다.

 

실행 결과

[test:root] / >  -p " $1 ";echo \"LVs:\"; lsvg -l " $1 "; echo"}' |sh                                        <
VG: appvg
appvg:
PV_NAME           PV STATE          TOTAL PPs   FREE PPs    FREE DISTRIBUTION
hdisk3            active            199         0           00..00..00..00..00
hdisk4            active            199         0           00..00..00..00..00
hdisk5            active            199         0           00..00..00..00..00
hdisk6            active            199         0           00..00..00..00..00
hdisk7            active            199         0           00..00..00..00..00
hdisk13           active            199         0           00..00..00..00..00
hdisk14           active            199         0           00..00..00..00..00
hdisk15           active            199         0           00..00..00..00..00
hdisk16           active            199         0           00..00..00..00..00
hdisk17           active            199         0           00..00..00..00..00
hdisk9            active            199         0           00..00..00..00..00
hdisk18           active            199         0           00..00..00..00..00
hdisk19           active            199         0           00..00..00..00..00
hdisk20           active            199         0           00..00..00..00..00
hdisk11           active            199         87          07..00..00..40..40
hdisk12           active            199         19          00..00..00..00..19
LVs:
appvg:
LV NAME             TYPE       LPs     PPs     PVs  LV STATE      MOUNT POINT
webapplv            jfs2       600     1200    8    open/syncd    /webapp
1homelv             jfs2       919     1838    10   open/syncd    /1home
tscanlv             jfs2       20      40      2    open/syncd    /tscan

VG: imsivg
imsivg:
PV_NAME           PV STATE          TOTAL PPs   FREE PPs    FREE DISTRIBUTION
hdisk8            active            199         0           00..00..00..00..00
LVs:
imsivg:
LV NAME             TYPE       LPs     PPs     PVs  LV STATE      MOUNT POINT
imsilv              jfs2       199     199     1    open/syncd    /imsi

VG: rootvg
rootvg:
PV_NAME           PV STATE          TOTAL PPs   FREE PPs    FREE DISTRIBUTION
hdisk0            active            558         434         111..62..38..111..112
hdisk1            active            558         426         111..54..38..111..112
LVs:
rootvg:
LV NAME             TYPE       LPs     PPs     PVs  LV STATE      MOUNT POINT
hd5                 boot       1       2       2    closed/syncd  N/A
hd6                 paging     32      64      2    open/syncd    N/A
hd8                 jfs2log    1       2       2    open/syncd    N/A
hd4                 jfs2       16      32      2    open/syncd    /
hd2                 jfs2       16      32      2    open/syncd    /usr
hd9var              jfs2       16      32      2    open/syncd    /var
hd3                 jfs2       16      32      2    open/syncd    /tmp
hd1                 jfs2       4       8       2    open/syncd    /home
hd10opt             jfs2       4       8       2    open/syncd    /opt
pkglv               jfs2       8       16      2    open/syncd    /package
lg_dumplv           sysdump    8       8       1    open/syncd    N/A
ptflv               jfs2       10      20      2    open/syncd    /ptf

 

2. 디스크 용량 조회

디스크 목록은 lspv명령어 또는 lsdev -Cc disk 를 통해 확인 가능

lspv
lsdev -Cc disk

근데 디스크 용량은 나오지 않는다.

 

디스크 용량은 bootinfo -s [디스크명]으로 확인 가능

bootinfo -s hdisk0

 

따라서 awk를 이용해 디스크 용량을 한 번에 조회할 수 있다.

lsdev -Cc disk |awk '{print "echo \"DISK: " $1 "\"; bootinfo -s " $1}' |sh

실행결과

[test:root] / > lsdev -Cc disk |awk '{print "echo \"DISK: " $1 "\"; bootinfo -s " $1}' |sh
DISK: hdisk0
286102
DISK: hdisk1
286102
DISK: hdisk2
286102
DISK: hdisk3
102400
DISK: hdisk4
102400
DISK: hdisk5
102400
DISK: hdisk6
102400
DISK: hdisk7
102400
DISK: hdisk8
102400
DISK: hdisk9
102400
DISK: hdisk10
102400
DISK: hdisk11
102400
DISK: hdisk12
102400
DISK: hdisk13
102400
DISK: hdisk14
102400
DISK: hdisk15
102400
DISK: hdisk16
102400
DISK: hdisk17
102400
DISK: hdisk18
102400
DISK: hdisk19
102400
DISK: hdisk20
102400

위에서 숫자는 MB단위로 hdisk0은 250GB이다.

 

맨 뒤에 sh 안 쓸 경우

[test:root] / > lsdev -Cc disk |awk '{print "echo \"DISK: " $1 "\"; bootinfo -s " $1}'
echo "DISK: hdisk0"; bootinfo -s hdisk0
echo "DISK: hdisk1"; bootinfo -s hdisk1
echo "DISK: hdisk2"; bootinfo -s hdisk2
echo "DISK: hdisk3"; bootinfo -s hdisk3
echo "DISK: hdisk4"; bootinfo -s hdisk4
echo "DISK: hdisk5"; bootinfo -s hdisk5
echo "DISK: hdisk6"; bootinfo -s hdisk6
echo "DISK: hdisk7"; bootinfo -s hdisk7
echo "DISK: hdisk8"; bootinfo -s hdisk8
echo "DISK: hdisk9"; bootinfo -s hdisk9
echo "DISK: hdisk10"; bootinfo -s hdisk10
echo "DISK: hdisk11"; bootinfo -s hdisk11
echo "DISK: hdisk12"; bootinfo -s hdisk12
echo "DISK: hdisk13"; bootinfo -s hdisk13
echo "DISK: hdisk14"; bootinfo -s hdisk14
echo "DISK: hdisk15"; bootinfo -s hdisk15
echo "DISK: hdisk16"; bootinfo -s hdisk16
echo "DISK: hdisk17"; bootinfo -s hdisk17
echo "DISK: hdisk18"; bootinfo -s hdisk18
echo "DISK: hdisk19"; bootinfo -s hdisk19
echo "DISK: hdisk20"; bootinfo -s hdisk20

이렇게 위처럼 명령어로 실행되는 게 아니고 그냥 출력됨.

'SE > AIX' 카테고리의 다른 글

[AIX] MAX LPs 늘리기  (0) 2025.03.08
[HMC] hscroot password 변경  (0) 2025.02.20