/dev/sdX가 연결된 USB인지 HDD인지 어떻게 알 수 있나요?

/dev/sdX가 연결된 USB인지 HDD인지 어떻게 알 수 있나요?

로컬 HDD 또는 USB 키인지 어떻게 알 수 있나요 ? 나는 루트 권한 없이 이 작업을 수행하는 방법을 선호합니다./dev/sdX

네, udevadm많은 도움이 되었습니다:

로컬 HDD의 경우:

udevadm info --query=all --name=sdb | grep ID_BUS
E: ID_BUS=ata

USB 키의 경우:

udevadm info --query=all --name=sdc | grep ID_BUS
E: ID_BUS=usb

답변1

루트 권한 없이 알 수 있는 몇 가지 방법이 있으며 그 중 많은 방법이 까다롭습니다.

사용 /dev/disk/by-id:

find /dev/disk/by-id/ -lname '*sdX'

와 같은 응답이 나타나면 /dev/disk/by-id/usb-blah-blah-blahUSB 디스크입니다. 다른 접두사로는 ata, dm, memstick, scsi등이 있습니다.

사용은 /dev/disk/by-path크게 다르지 않습니다.

find /dev/disk/by-path/ -lname '*sdX'

당신은 다음과 같은 것을 얻게 될 것입니다 /dev/disk/by-path/pci-0000:00:1d.7-usb-0:1:1.0-scsi-0:0:0:0. 디스크로 연결되는 장치 경로를 보여줍니다. 이 경우 대략적인 경로는 PCI → USB → 디스크입니다. (참고 -usb-).

udev 사용(저는 Debian을 실행합니다. 내 udevadm파일은 /sbin내 파일에 있지 않습니다 $PATH. 귀하의 파일은 다른 곳에 있거나 있을 수 있습니다 $PATH.):

/sbin/udevadm info --query=all --name=sdX | grep ID_BUS

장치가 있는 버스 유형을 확인할 수 있습니다. 전체 정보 목록을 보려면 을 제거하세요 . | grep ID_BUS을 추가해야 할 수도 있습니다 .|less

설치 했다면 lshwHuygens의 답변5월또한 작동합니다:

lshw -class disk -class storage | less

그리고 디스크의 출력을 살펴보세요. 에서 sdX를 less시도 /하고 앞의 bus info줄을 살펴보십시오. 첫 번째 줄은 단지 라고 말하지만 scsi@…몇 줄 앞의 줄은 더 이해하기 쉬울 것입니다. 그런데 당신은 정말로~해야 한다슈퍼유저로 실행하면 적합하지 않을 수 있습니다. (증상: 제가 시도한 노트북에는 SATA 디스크가 나열되었지만 USB 디스크는 나열되지 않았습니다. sudo둘 다 나열된 상태로 실행 중입니다.)

이것보다 다소 직접적인 다른 것들도 있습니다.

답변2

(장치 전송 유형)을 lsblk보고하는 데 사용할 수 있습니다 .TRAN

lsblk -do name,tran

NAME TRAN
sda  sata
sdb  sata
sdd  usb

여기서 -d또는 --nodeps은 슬레이브를 인쇄하지 않음을 의미하고 -o name,tran/ --output name,tran는 장치 이름 및 장치 전송 유형만 나열함을 의미합니다. rm제거 가능한 장치를 확인하려면 출력 열 목록에 추가합니다 ( 1if true).

lsblk --nodeps --output NAME,TRAN,RM

NAME TRAN   RM
sda  sata    0
sdb  sata    0
sdd  usb     1

또는 -n헤더를 제거하려면(예: 특정 드라이브에 대한 전송 유형만 인쇄하려면):

lsblk -ndo tran /dev/sdb

sata

lsblk( 2.27및 최신 버전) 의 최신 버전은 JSON출력을 지원하므로 다음과 같은 작업도 수행할 수 있습니다.

lsblk -Jdo name,tran | jq -r '.blockdevices[] | select(.tran=="usb") | .name'

버스 에 연결된 블록 장치만 나열합니다 USB.

답변3

해결책을 알고 있지만 안타깝게도 루트 권한이 필요합니다. 어쨌든 여전히 유용하다고 생각할 수 있습니다.

sudo lshw -class disk -class storage

각 장치에 대해 논리적 이름(예: )과 버스 정보를 인쇄합니다 /dev/sda. USB 장치의 경우 'usb@1:2'와 같습니다.

샘플 출력:

[...]
  *-storage
       description: SATA controller
       physical id: d
       bus info: pci@0000:00:0d.0
       configuration: driver=ahci latency=64
[...]
     *-disk:0
          description: ATA Disk
          physical id: 0
          bus info: scsi@2:0.0.0
          logical name: /dev/sda
[...]
  *-scsi
       physical id: 3
       bus info: usb@1:2
       configuration: driver=usb-storage
     *-disk
          description: SCSI Disk
          physical id: 0.0.0
          bus info: scsi@6:0.0.0
          logical name: /dev/sdc
[...]

답변4

의 값을 읽으십시오 /sys/block/sdX/removable.

예를 들어:

$ cat /sys/block/sda/removable
0
$ cat /sys/block/sdc/removable
1

/dev/sdcUSB 키입니다(SD 카드나 기타 이동식 미디어일 수 있음).

관련 정보