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많은 옵션이 있으며 그 중 하나는 문제 출력과 같은 트리를 --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

관련 정보