스도가 헤어진다

스도가 헤어진다

파일 시스템이 없는 모든 디스크( mkfs파일 시스템에서 실행되지 않는 모든 디스크) 를 캡처하고 싶습니다.

다음을 시도했지만 여전히 운영 체제( sda )가 제공됩니다.

lsblk파일 시스템이나 다른 명령을 사용하지 않고 모든 디스크를 캡처하는 가장 좋은 방법은 무엇입니까?

  lsblk -f | egrep -v "xfs|ext3|ext4"
  NAME             FSTYPE      LABEL UUID                                   
  MOUNTPOINT
 fd0
  sda
 └─sda2           LVM2_member       v0593a-KiKU-9emb-STbx-ByMz-S95k-jChr0m
 ├─vg00-lv_swap swap              1beb675f-0b4c-4225-8455-e876cafc5756   
 [SWAP]
 sdg
 sdh
 sdi
 sdj
 sdk
 sr0

답변1

lsblk -o NAME,FSTYPE -dsn

그러면 자체적으로 파티션 홀더가 아닌(파티션 테이블이 없는) 블록 장치 목록이 인쇄됩니다. 감지된 파일 시스템 유형은 두 번째 열에 있습니다. 비어 있으면 인식된 파일 시스템이 없다는 의미입니다.

따라서 하나의 명령으로 원하는 출력을 얻으려면

lsblk -o NAME,FSTYPE -dsn | awk '$2 == "" {print $1}'

답변2

제 생각에는 가장 좋은 옵션은 FDISK입니다. 통사론:

fdisk -l | grep -i ^disk

답변3

parted 유틸리티를 사용하면 파일 시스템 유무에 관계없이 모든 디스크를 나열할 수 있습니다.

스도가 헤어진다

그런 다음 "무료 인쇄"를 입력하세요.

파티션된 드라이브와 파티션되지 않은 드라이브를 모두 인쇄합니다.

여기에 이미지 설명을 입력하세요.

답변4

다음 문장이 효과가 있는 것 같습니다. TYPE, PTTYPE, LABEL 또는 PARTLABEL이 포함된 블록 장치 이름을 제외한 모든 블록 장치 이름을 인쇄합니다. 마지막 두 개는 레이블이 있는 항목이 이미 사용 중일 가능성이 높기 때문입니다.

grep -v현재 알려진 파일 시스템 유형을 제외하는 목록을 사용하는 것보다 이것이 더 나은 접근 방식인 것 같습니다 .

blkid | awk -F': ' '!/ ((PT)?TYPE|(PART)?LABEL)="[^"]+"/ {print $1}'

참고: 결과 블록 장치 목록은 다음과 같습니다.아니요사용 중인 블록 장치에 있는 일반적인 플래그가 없다는 점을 제외하면 어떤 방식으로든 사용이 보장되지 않습니다. 그들은아마도사용되지는 않았지만 문제를 조사하는 데 더 많은 시간을 들이지 않고는 어떤 종류의 보장된 목록이라고 제안할 의향도 없습니다.

내 ZFS On Linux 시스템 중 하나에서 다음과 같은 출력이 생성됩니다.

# blkid | awk -F': ' '!/ ((PT)?TYPE|(PART)?LABEL)="[^"]*"/ {print $1}'
/dev/sdb9

이는 이 시스템에도 적용됩니다. /dev/sdb9포맷되지 않고 사용되지 않는 파티션입니다. 단일 디스크 ZFS 풀을 위한 디스크 끝에 있는 8MB 파티션입니다. (이것은 테스트를 위한 홈 머신입니다. 다른 작업을 위해 미러링된 드라이브가 필요하지만 아직 교체할 시간이 없었습니다.)


그런데 blkid러닝타임은 에 비해 짧습니다 lsblk.많은보고 있는 블록 장치의 유형을 식별하고 식별하려면 더 많은 작업이 필요합니다.

이는 수백 개의 드라이브/lvm 구성원/zvol 및 기타 블록 장치가 있는 서버에서만 눈에 띄게 나타날 수 있습니다.

예를 들어, 제가 운영하는 중형 서버(362개의 다양한 블록 장치 포함) 중 하나에서 blkid실행 시간은 약 2분이고 lsblk약 0.09초가 걸립니다. 블록 장치가 39개만 있는 또 다른 소규모 시스템(위에서 언급한 홈 테스트 박스)에서는 0.01초가 blkid걸린 데 비해 0.16초가 걸렸습니다 lsblk.

이 명령을 반복적으로 실행해야 하고 시간이 너무 오래 걸리는 경우 언제든지 blkdid임시로 출력을 tmpfile에 캐시할 수 있습니다. 예를 들어 캐시가 존재하지 않거나 30분보다 오래된 경우 캐시 파일( )을 생성하여 입력 등 blkid > /path/to/blkid.cache으로 사용합니다 .awk

관련 정보