複数のシステムからディスクサイズをインポートする

複数のシステムからディスクサイズをインポートする

編集する:
複数のマシンがあり、メインディスクの合計ストレージサイズを取得する必要があります。私が経験している問題は、一部のコンピュータで私のディスク名がまたは/dev/sdaということです/dev/md126p3。これらすべてのシステムでディスクサイズをどのように安定して取得できますか?

マシン1:

root@maximus:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/md126p3     20G  3,6G   15G  20% /
/dev/md126p2   1008M   89M  868M  10% /boot
/dev/md126p1     99M  238K   99M   1% /boot/efi

マシン2:

root@firefly:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        30G  2,8G   26G  10% /
/dev/sda2      1008M   61M  896M   7% /boot
/dev/sda1        20M  132K   20M   1% /boot/efi

マシン3:

root@backup:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/md0        7,3T  297G  6,6T   5% /
/dev/md1        733M   57M  623M   9% /boot

マシン4:

root@vmfarm1:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/md126p3     18G  8,0G  9,3G  47% /
/dev/md126p2    190M   87M   90M  50% /boot
/dev/md126p1    119M  121K  119M   1% /boot/efi

マシン5:

root@p12:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/dm-1       6.3T  4.8T  1.3T  80% /
/dev/sda2       237M   60M  166M  27% /boot

マシン6:

root@accountant:~# df -h
Filesystem            Size  Used Avail Use% Mounted on
rootfs                 20G  415M   19G   3% /
/dev/mapper/acc-root   20G  415M   19G   3% /
/dev/md0             1012M   70M  891M   8% /boot
/dev/mapper/acc-home   20G  313M   19G   2% /home
/dev/mapper/acc-opt    20G  6.2G   13G  33% /opt
/dev/mapper/acc-usr    20G  1.2G   18G   7% /usr
/dev/mapper/acc-var    20G  802M   18G   5% /var
/dev/mapper/acc-tmp    20G  172M   19G   1% /tmp

マシン7:

root@pve:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/dm-0        95G   74G   16G  83% /
/dev/fuse        30M   16K   30M   1% /etc/pve

マシン8:

root@barclay:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/md1p1      2.6T   77G  2.4T   4% /
/dev/md0        186M   36M  141M  21% /boot

古い質問:

私はfdisk -l全体のセクター値を取得しようとしています。 Debianオペレーティングシステムを使用してください。 fdisk -l は多くの情報を表示します。特定の単語/数字を削除する方法を見つける必要があります。デフォルトでは、最大「セクタ」数が必要です。私の現在のコンピュータについて。

 Device      Start         End     Sectors   Size Type
/dev/sda1    3072        6143        3072   1.5M BIOS boot
/dev/sda2    6144      506879      500736 244.5M Linux filesystem
/dev/sda3  506880 14064672767 14064165888   6.6T Linux filesystem

(これは他のコンピュータでも異なります)

それから

 fdisk -l | grep Linux | tail -1 

私にください。/dev/sda3 506880 14064672767 14064165888 6.6T Linux filesystem しかし、それは私が必要とするすべてではありません。私のコンピュータの1つでこれを切り取りましたが、「最後の4番目」を切り取ったり削除したりする方法が見つかりません。

私のテストマシンではこれを行うことができました。

fdisk -l | grep Linux | cut -d " " -f3 | tail -1 | awk '{$1=$1/(1024^2); print $1;}' | awk '{print int($1+0.5)}' | awk '{ print $1"GB" }' 

答え1

ディスクサイズを取得するには、次の値を使用できます。

cat /sys/block/sda/size

基本パーティションを識別するには、次のようにします。

 df | grep -E "\/$" | cut -d' ' -f1 | sed 's/[0-9]*//g'

/私の場合は、マウントされたディスクの名前が表示されます/dev/sda
その後、スクリプトを書く方法はあなた次第です。

古い回答

この場合は、単に以下を使用してください/sys

cat /sys/block/sda/subsystem/sda3/size 

以下を使用してセクタ数を指定します。

cat /sys/block/sda/subsystem/sda3/start

開始セクタ番号を取得します。

fdiskこれは、常にまったく同じではない項目を解析するよりもはるかに簡単です。この値は、単純なパターンを使用して簡単に取得できます。

cat /sys/block/sda/subsystem/sda*/size

答え2

努力する

fdisk -l | awk '/Linux/ { s=$(NF-4) ;} END { print s}'

どこ

  • /Linux/Linux行が選択されます。
  • { s=$(NF-4) ;}4番目のフィールドを最後のフィールドに設定します($4この場合も使用できます。
  • END最後に(もう入力がありません)
  • { print s}印刷してください。

編集する:

  • お客様のgrep ..| cut .. | awk^nコードは次のように短縮される場合があります。

    awk '/Linux/ { s=$4/(1024^2)  ;} END { printf "%d Gb\n",s}'
    
  • /2セクタは通常512バイトなので、Gbを取得するには別のセクタ(2で除算)を追加する必要があります。

答え3

使用:

最高のスコアを得るために部門別価値:

fdisk -l | awk '$6=="Linux" && v < $4{v=$4}END{print v}' 

答え4

ブロックデバイスをdfに渡すことに加えて、マウントポイントを渡すこともできます。実際、これはデフォルトの動作です。

# df /
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/root        8191416 6002396   2088840  75% /

ソース:dfマンページ:

df は、各ファイル名引数を含むファイルシステムの空きディスク容量を表示します。

関連情報