AIX 시스템에서 FS의 여유 공간 정보

AIX 시스템에서 FS의 여유 공간 정보

나는 AIX 시스템에서 파일 시스템이 얼마나 많은 여유 공간을 갖고 있는지 알아내는 더 빠른 방법을 찾고 있습니다. 현재 나는 다음을 사용하고 있습니다 :

lsvg -o | lsvg -i -l
savevg:
LV NAME             TYPE       LPs     PPs     PVs  LV STATE      MOUNT POINT
logsave             jfs2log    1       1       1    open/syncd    N/A
rmanlvp             jfs2       282     282     1    open/syncd    /oradata/rman
opcon               jfs2       4       4       1    open/syncd    /opt/OpCon

이로써 나는 나의fs/옵션/opcon에 있습니다VGsave 그 다음에:

lsvg savevg
VOLUME GROUP:       savevg                   VG IDENTIFIER:  00f612c600004c000000014c2c91c0fb
VG STATE:           active                   PP SIZE:        1024 megabyte(s)
VG PERMISSION:      read/write               TOTAL PPs:      699 (715776 megabytes)
MAX LVs:            256                      FREE PPs:       217 (222208 megabytes)

파일 시스템의 여유 공간이 얼마나 되는지 직접 알 수 있는 방법이 있습니까?

답변1

다음 스크립트는 입력에 대해 몇 가지 온전성 검사를 수행한 후(파일 시스템이 하나만 있어야 하며 파일 시스템이 하나만 있어야 함) 필요한 정보를 검색하는 단계를 수행합니다.

  1. 주어진 파일 시스템에서 LV를 추출합니다.lsfs
  2. LV를 사용하여 VG를 추출합니다.lslv
  3. VG를 사용하여 여유 공간을 추출합니다.lsvg

스크립트는 다음과 같습니다.

#!/bin/sh

# input: a filesystem
# output: free MB in the containing VG

if [ "$#" -ne 1 ]
then
  printf "Usage: %s [ fs ]\n" "$0" >&2
  exit 1
fi

if ! /usr/sbin/lsfs -c "$1" > /dev/null 2>&1
then
  printf "Error: filesystem %s not found\n" "$1" >&2
  exit 2
fi

lv=$(/usr/sbin/lsfs -c "$1" |
        awk -F: 'NR == 2 {
                           split($2, fields, "/");
                           print fields[3]
                         }')
vg=$(LANG=C lslv "$lv" 2>/dev/null | awk '/VOLUME GROUP/ { print $6 }')
copies=$(LANG=C lslv "$lv" 2>/dev/null | awk '/^COPIES:/ {print $2}')
mb=$(LANG=C /usr/sbin/lsvg "$vg" |
  awk -F: '/FREE PP/ {match($3, /\([[:digit:]]*/); print substr($3, RSTART+1, RLENGTH-1)}')
printf "%d Mb available\n" "$((mb / copies))"

명확하지 않을 수 있는 코드 부분을 설명하세요.

  • 스크립트는 출력을 콜론으로 awk분할 lsfs하고 라인 2에서만 실행됩니다(라인 1이 헤더이기 때문입니다). 필드 2의 값은 와 유사하므로 /dev/opcon슬래시 fields를 기준으로 배열로 분할합니다. 요소 1은 비어 있고(첫 번째 요소 앞에는 아무것도 없습니다 /), 요소 2는 이고 dev, 요소 3은 입니다 opcon. 이는 우리가 원하는 LV 이름입니다.
  • 스크립트는 여유 공간 줄을 awk선택합니다 lsvg. 콜론으로 구분된 세 번째 필드는 다음의 텍스트입니다 FREE PPs:(예: ) 217 (222208 megabytes). match()일치하는 필드 (와 숫자가 필요합니다 . 우리는 여기서 성공을 가정합니다! 일치는 왼쪽 괄호에서 시작하므로 사용 가능한 Mb 수를 추출할 때 RSTART를 건너뛰고 RLENGTH에서 1을 뺍니다.

이 스크립트의 출력을 다른 파이프라인의 일부로 사용하려는 경우 printf"Mb available\n" 부분이 아닌 숫자만 출력하도록 명령문을 조정하는 것이 좋습니다.

관련 정보