/dev/sdX가 USB 또는 HDD에 연결되어 있는지 어떻게 알 수 있나요?

/dev/sdX가 USB 또는 HDD에 연결되어 있는지 어떻게 알 수 있나요?

로컬 HDD인지 USB 플래시 드라이브인지 어떻게 알 수 있나요? 나는 루트 권한이 없는 방법을 선호합니다./dev/sdX

좋습니다. udevadm많은 도움이 됩니다.

로컬 하드 드라이브의 경우:

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 → Disk 입니다. (알아채다 -usb-).

udev 사용(나는 Debian을 실행합니다. 내 것은 내 udevadm것이 아닙니다 . 당신의 것은 다른 곳에 있거나, 당신의 것이거나 꺼져 있을 수 있습니다 ):/sbin$PATH$PATH

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

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

이미 설치했다면 lshwHuygens의 답변가능한또한 작동합니다:

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제거 가능한 장치를 확인하려면 출력 열 목록에 추가하십시오 ( 1해당되는 경우 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 카드 또는 기타 이동식 미디어일 수 있음).

관련 정보