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つだけであり、ファイルシステムが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。コロンで区切られた3番目のフィールドは次のテキストですFREE PPs:(例:)217 (222208 megabytes)match()一致するフィールド(と数字が必要です。ここでは成功を想定しています!一致は左かっこで始まるため、利用可能なMbの数を抽出するときは、RSTARTをスキップしてRLENGTHから1を減算します。

このスクリプトの出力を別のパイプラインの一部として使用する場合は、printf「Mb available \ n」部分ではなく数値のみを出力するようにステートメントを調整することをお勧めします。

関連情報