Linuxオペレーティングシステムのハードディスクを確認する方法

Linuxオペレーティングシステムのハードディスクを確認する方法

Bashスクリプトには、オペレーティングシステム固有のディスク(Linux / RHELシステムの実行)のみをキャプチャする必要があるコードの場所がたくさんあります。

私たちはLinuxバージョンを使用しており、7.2/7.5/7.6/7.9ほとんどの場合、マシンにはテラバイトサイズのディスクなどを含むデータまたはデータベースサーバーを格納するための追加のディスクがあります。

通常、次の cli を使用してオペレーティングシステムのディスクをキャプチャします。

os_disk=` lsblk -l | grep part | awk '{print $1}' | sed s'/[0-9]/ /g' | sort -u | head -1 `

追加のパーティションディスクがない場合は機能しますが、次の例に示すように、追加のパーティションディスクがある場合は機能します。

NAME             MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                8:0    0   1.8T  0 disk /data/sdb
sdb                8:16   0   1.8T  0 disk /data/sdc
sdc                8:32   0   1.8T  0 disk /data/sdd
sdd                8:48   0   1.8T  0 disk /data/sde
sde                8:64   0   1.8T  0 disk
├─sde1             8:65   0 931.3G  0 part
└─sde2             8:66   0 931.7G  0 part
sdf                8:80   0   1.8T  0 disk /data/sdg
sdg                8:96   0   1.8T  0 disk /data/sdh
sdh                8:112  0   1.8T  0 disk /data/sdi
sdi                8:128  0   1.8T  0 disk /data/sdj
sdj                8:144  0   1.8T  0 disk /data/sdk
sdk                8:160  0   1.8T  0 disk /data/sdl
sdl                8:176  0   1.8T  0 disk /data/sdm
sdm                8:192  0   1.8T  0 disk /data/sdn
sdn                8:208  0   1.8T  0 disk /data/sdo
sdo                8:224  0 557.9G  0 disk
├─sdo1             8:225  0   500M  0 part /boot
└─sdo2             8:226  0 557.4G  0 part
  ├─VGPO-lvm_root 253:0    0   100G  0 lvm  /
  ├─VGPO-lvm_swap 253:1    0    16G  0 lvm  [SWAP]
  └─VGPO-lvm_var  253:2    0   100G  0 lvm  /var

それから私達は間違った結果を得るでしょう。 OSディスクは次のような結果をsde得る必要があります。sdo

 os_disk=` lsblk -l | grep part | awk '{print $1}' | sed s'/[0-9]/ /g' | sort -u | head -1 `
 echo $os_disk
 sde

したがって、この場合、マシンが仮想マシンでも物理マシンでもよい場合は、オペレーティングシステムディスクを提供する別の方法を見つける必要があります。

答え1

システムのマウントポイントにマウントされたパーティションを含むディスクを見つけることができます。例えば /boot:

lsblk -ls | awk '$NF == "/boot" { m = 1; next } m && $NF == "disk" { print $1 ; exit}'

これは以下にも当てはまります/

lsblk -ls | awk '$NF == "/" { m = 1; next } m && $NF == "disk" { print $1 ; exit}'

これlsblkにより、リストモード(-l)を使用して解析を簡素化し、ツリー(-s)を反転して、探しているパーティションの後に親ディスクが表示されるようにします。

答え2

findmnt注文がありますか?私はfindmntスクリプトからルートファイルシステムのデバイスをインポートしました。

findmnt -ensP -M /

/etc/fstabテストマシンで検索して生成する:

TARGET="/" SOURCE="/dev/nvme0n1p1" FSTYPE="ext4" OPTIONS="rw,discard,errors=remount-ro,x-systemd.growfs"

これは「リスト」形式のデフォルト出力フィールドです。私のスクリプトはカスタム出力フィールドセットを定義し、印刷順序も設定します。

findmnt -ensP -o SOURCE,TARGET,FSTYPE,SIZE,UUID,LABEL -M /

生産:

SOURCE="/dev/nvme0n1p1" TARGET="/" FSTYPE="ext4" SIZE="39.2G" UUID="1ca031f6-4004-4f8d-a861-532a0158c91f" LABEL=""

findmnt多くのオプションがあり、その1つは問題の出力などのツリーを--tree作成することです。lsblk

上記で使用したオプションは次のとおりです。
-e- 特定のフィールドの値を「評価」してデバイスに変換します。 (-eSOURCEフィールドを除くSOURCE="UUID=1ca031f6-4004-4f8d-a861-532a0158c91f"
-n- 出力にヘッダー行がない
-s- /etc/fstabを読み込む(または-m/ etc / mtabを読み込む)
-P- "Pair"形式で出力FIELD="VALUE"(シェルスクリプトで解析する方が簡単だと思います)
-M- 次の出力制限 このマウントポイントにマウントされたファイルシステム

多くの柔軟性を提供する他のオプションもたくさんあります。たとえば、-t ext4検索をext4ファイルシステムに制限します。

最後の注意: findmntマウントされたファイルシステムに関する情報(経由)/etc/mtabまたは/etc/fstabリストに記載されているファイルシステムに関する情報(マウントまたはマウントされていない)を見つけます。インストールされていないか存在しないものが見つかりません。これには、以前のバージョンが/etc/fstab必要または必要になることがあります。lsblkblkid

関連情報