GNU/Linux: 하드 디스크 매핑을 감지하는 방법은 무엇입니까?

GNU/Linux: 하드 디스크 매핑을 감지하는 방법은 무엇입니까?

두 개의 하드 드라이브가 있다고 가정해 보겠습니다.

  • 내부(GNU/Linux(Debian) 시작);

  • 외부(USB).

fdisk -l/dev/sda둘 다 감지하지만 어느 것이 이고 어느 것이 아닌지는 알려주지 않습니다 /dev/sdb. lsusb는 외부 USB 장치가 연결되어 있다는 것을 알려주지만, /dev/sda또는 에 매핑되었는지 여부는 알려주지 않습니다 /dev/sdb.

시스템에서 이 정보를 어떻게 얻나요?

답변1

ls -l /sys/class/block/sd?

이러한 sd?항목은 디스크가 컴퓨터에 연결되는 방식을 보여주는 심볼릭 링크입니다. /usb내부에는 USB 디스크가 있습니다.

udevadm info -a -n sda

커널이 직접 얻을 수 있는 모든 식별 정보를 보여줍니다 sda. 예를 들어 Intel 컨트롤러의 SATA 디스크의 경우 에서 로, SUBSYSTEMS=="scsi"USB 디스크의 경우 에서 으로 직접 연결되는 방식에 대해 자세히 알아봅니다 .SUBSYSTEMS=="pci", DRIVERS=="ahci"SUBSYSTEMS=="scsi"SUBSYSTEMS=="usb", DRIVERS=="usb-storage"

ls -l /dev/disk/by-*

에서는 /dev/disk/by-*하드웨어 연결( by-path), 전역적으로 고유한 식별자( by-uuid), 수동으로 선택한 레이블( by-label) 또는 제조업체 ID( )를 기준으로 by-id디스크를 찾을 수 있습니다.

답변2

내 Debian 컴퓨터(현재 Lubuntu)에서 나는 자주 사용합니다.testdisk -l (읽기: "작은 L 빼기")이 목적을 위해. 모든 배포판 testdisk에 사전 설치되어 있는 것은 아니지만 (잘 알려진 복구 도구) 대부분의 배포판에는 이 도구가 있어야 합니다.

제가 얼마 전에 배운 또 다른 훌륭한 도구는 다음과 같습니다 lsblk.

$ lsblk -d -io KNAME,TYPE,SIZE,MODEL

또는 HDD만 표시하려는 경우:

$ lsblk -d -io KNAME,TYPE,SIZE,MODEL | grep 'sd\w'

grep(\w는 필수는 아니지만 기본 구성에서 별칭이 지정된 배포판의 추악한 "반색" 출력을 방지합니다 grep --color=auto.)

또한 이 작은 목적을 위해 간소화하기로 결정한 (실제로는 매우 복잡한) 스크립트를 사용할 수도 있습니다.

https://serverfault.com/questions/64219/how-to-know-which-block-device-maps-to-which-physical-drive/548795#548795

답변3

최선의 답변은 확실하지 않지만 다음은 몇 가지 아이디어입니다.

/sys/class/block/sdX/device/model장치에서 보고한 제조사/모델 정보를 확인할 수 있습니다 . 예를 들어:

cat /sys/class/block/sda/device/model 
SAMSUNG HD161GJ

이것만으로도 어느 장치가 외부 장치이고 어느 장치가 내부 장치인지 식별하는 데 충분할 수 있습니다. dmesgUSB 장치의 경우 다음이 포함된 출력을 볼 수 있습니다 .

[ 2073.412999] scsi12 : usb-storage 2-1.8:1.0

이는 SCSI 버스 12를 USB 저장 버스로 식별합니다. 그런 다음 버스 12에서 SCSI 장치를 찾을 수 있습니다.

# dmesg | grep scsi12
[ 2074.488651] sd 12:0:0:0: Attached scsi generic sg6 type 0
[ 2076.592154] sd 12:0:0:0: [sdf] 30481152 512-byte logical blocks: (15.6 GB/14.5 GiB)
[ 2076.592639] sd 12:0:0:0: [sdf] Write Protect is off
[ 2076.592645] sd 12:0:0:0: [sdf] Mode Sense: 23 00 00 00
[ 2076.593142] sd 12:0:0:0: [sdf] No Caching mode page present
[ 2076.593147] sd 12:0:0:0: [sdf] Assuming drive cache: write through
[ 2076.596270] sd 12:0:0:0: [sdf] No Caching mode page present
[ 2076.596276] sd 12:0:0:0: [sdf] Assuming drive cache: write through
[ 2076.619078] sd 12:0:0:0: [sdf] No Caching mode page present
[ 2076.619084] sd 12:0:0:0: [sdf] Assuming drive cache: write through
[ 2076.619088] sd 12:0:0:0: [sdf] Attached SCSI removable disk

답변4

나는 Giles의 답변이 최고라고 생각하지만 완전성을 위해 이 답변을 추가하고 있습니다.

hdparm -i /dev/sda

그러면 컨트롤러 드라이버가 드라이브에서 얻는 몇 가지 기본 정보(모델 및 일련 번호 포함)가 표시됩니다. /dev장치에 대한 읽기 액세스 권한(예: 그룹 권한을 통해) 이 있는 경우 이 명령에는 루트가 필요하지 않습니다.

hdparm -I /dev/sda

그러면 드라이브에 대한 많은 고급 정보(모델 번호, 일련 번호, 가능한 모든 정보)가 표시됩니다. 이 명령에는 루트 권한이 필요합니다.

관련 정보