Linux 시스템에 연결된 모든 저장 장치 찾기


32

주어진 머신에 장착 된 쓰기 가능 여부에 관계없이 모든 쓰기 가능한 저장 장치를 찾아야합니다.

이 작업을 수행 /dev하는 방법은 쓰기 가능한 장치 (hd * 및 sd *) 에 해당하는 모든 항목을 시도 하는 것입니다.

더 나은 해결책이 있습니까? 아니면이 문제를 고수해야합니까?



2
아마도 udisk를 사용하고 싶습니까?
derobert

나는하지 않습니다 단지 내가 찾고 있어요 - 하드 디스크가 시스템에있는 것을 발견하려는 모든 저장 장치
워렌

우리 모두 하드 디스크와 비슷한 것으로 생각합니다. 실제로 다른 의미가 있습니까? 테이프 드라이브, 프린터 등을 포함해야합니까?
derobert

2
@derobert-예, 따라서 "모든 저장 장치"의 제목 :)
warren

답변:


47

블록 스토리지 장치 에만 관심이 있다면 lsblk널리 사용 가능한 util-linux 패키지에서 사용할 수 있습니다.

$ lsblk -o KNAME,TYPE,SIZE,MODEL
KNAME TYPE   SIZE MODEL
sda   disk 149.1G TOSHIBA MK1637GS
sda1  part  23.3G 
sda2  part    28G 
sda3  part  93.6G 
sda4  part   4.3G 
sr0   rom   1024M CD/DVDW TS-L632M

사용 가능한 다른 많은 열을 사용하여 스크립팅에 적합합니다.


13

or 클래스의 lshw장치에 대한 세부 정보를 출력 하고 추출 할 수 있습니다 (다른 클래스는 스토리지 컨트롤러, scsi, sata, sas 등에 대한 세부 정보를 제공 할 수도 있음 ).disktapestorage

예 :

lshw -class disk -class tape

-short옵션은 멋진 요약을 제공합니다. 예를 들어 내 집 zfsonlinux 서버 / 워크 스테이션 / 실험 상자 (불행히도 테이프 장치 없음) :

# lshw 클래스 테이프 클래스 디스크 클래스 스토리지-짧은
H / W 경로 장치 클래스 설명
===================================================== =======
/ 0 / 100 / 4 / 0 스토리지 JMB362 SATA 컨트롤러
/ 0 / 100 / 5 / 0 scsi10 스토리지 JMB362 SATA 컨트롤러
/0/100/5/0/0.0.0 / dev / sdc 디스크 120GB Patriot Wildfire
/ 0 / 100 / b / 0 scsi1 스토리지 SAS2008 PCI-Express Fusion-MPT SAS-2 [팔콘]
/0/100/b/0/0.0.0 / dev / sdd 디스크 1TB WDC WD10EARS-00Y
/0/100/b/0/0.1.0 / dev / sde 디스크 1TB WDC WD10EACS-00Z
/0/100/b/0/0.2.0 / dev / sdf 디스크 1TB WDC WD10EACS-00Z
/0/100/b/0/0.3.0 / dev / sdg 디스크 1TB ST31000528AS
/0/100/b/0/0.4.0 / dev / sdh 디스크 1TB ST31000528AS
/0/100/b/0/0.5.0 / dev / sdi 디스크 1TB ST31000528AS
/0/100/b/0/0.6.0 / dev / sdj 디스크 1TB ST31000528AS
/ 0 / 100 / 11 scsi2 스토리지 SB7x0 / SB8x0 / SB9x0 SATA 컨트롤러 [AHCI 모드]
/ 0 / 100 / 11 / 0 / dev / sda 디스크 128GB Patriot Torqx 2
/ 0 / 100 / 11 / 1 / dev / sdb 디스크 1TB ST31000528AS
/ 0 / 1 scsi11 스토리지     
/0/1/0.0.0 / dev / sdk 디스크 1967MB SCSI 디스크
/0/1/0.0.1 / dev / sdl 디스크 SCSI 디스크
/0/1/0.0.2 / dev / sdm 디스크 SCSI 디스크
/0/1/0.0.3 / dev / sdn 디스크 SCSI 디스크
/ 0 / 2 scsi66 스토리지     
/0/2/0.0.0 / dev / sdo 디스크 SCSI 디스크
/ 0 / 3 scsi67 스토리지     
/0/3/0.0.0 / dev / sdp 디스크 4057MB SCSI 디스크

/ 0 / 1 장치는 실제로 USB 카드 리더기이며 (슬롯 중 하나에 2GB SD 카드가 연결되어 있음) / 0 / 2 장치는 충전 전용으로 안드로이드 폰에 연결되어 있습니다. 0/3 장치는 4GB USB 플래시 드라이브입니다.

lshw일반 텍스트, html, xml 및 json 출력을 생성 할 수 있습니다. 하드웨어 세부 사항을 sqlite 데이터베이스 형식으로 덤프 할 수도 있습니다.

데비안과 대부분의 다른 배포판 용으로 패키지되어 있습니다. 홈페이지와 소스는 http://ezix.org/project/wiki/HardwareLiSter에 있습니다.


5

이 명령을 시도하십시오

ls -l /dev /dev/mapper |grep '^b'

시스템의 모든 블록 장치를 나열합니다.


5

lsblk각 장치가 읽기 전용인지 여부와 함께 모든 블록 장치를 나열 하는 데 사용할 수 있습니다 .

그런 다음 사용할 수 있습니다 grepawk읽기 전용되지 않은 블록 장치의 이름을 인쇄 :

lsblk -d -n -oNAME,RO | grep '0$' | awk {'print $1'}

이것은 이전에 큰 확장입니다 대답
워렌

4

lsblk 모든 블록 저장 장치를 나열합니다.

fdisk -l 에 나열된 모든 장치의 모든 파티션을 나열합니다. /proc/partitions

lshw -short 시스템의 모든 하드웨어 (파이어 와이어 제외)에 대한 정보를 제공합니다.


3

derobert에 대한 응답에 따라,이 목록은 드라이브와 테이프 것을 무언가를 찾고, 경우 프린터를 , 당신은에 관심이있을 수 있습니다 lsdev, lsusb하고 lspci.


물론, 그것은 네트워크 연결 스토리지를 찾지 못할 것입니다 :-(
derobert

1
그때fdisk -l
콜론

2

다음 명령을 시도 할 수 있습니다.

file /dev/disk/by-id/* | awk -F'/' 'NR>1{print "\047/dev/"$NF}' | sort | uniq

1
lshw를 사용하여 블록 및 테이프 장치 클래스를 나열하는 것과는 어떤 차이점이 있습니까?
n611x007

2

hwinfo 를 사용 하여 모든 디스크를 나열 할 수 있습니다 ( documentation ).

hwinfo --block --short 개요를 제공합니다.

disk:
  /dev/sdb             WDC WD3200AAKS-7
  /dev/sda             SAMSUNG HD103UJ
partition:
  /dev/sdb1            Partition
  /dev/sdb2            Partition
  /dev/sda1            Partition
cdrom:
  /dev/sr1             TSSTcorp DVD+-RW TS-H653B
  /dev/sr0             HL-DT-ST DVD-ROM GDRH20N

hwinfo --disk 각 디스크에 대한 자세한 내용을 제공합니다.

참고 : Ubuntus 14.04 이상과 같은 일부 Linux 배포에서는 hwinfo가 공식 저장소에 없습니다 .


0

나는 그것을 발견 fdisk하고 lsblk데비안 설치 프로그램의 가상 터미널에서 사용할 수 없습니다. 이 경우 blkid블록 스토리지 장치에 대한 UUID를 가져 오는을 사용 합니다.


-1

RAID 장치를 의미한다면 hdparm smartctl 등을 사용하여 올바른 결과를 얻을 수 없습니다. 이러한 도구는 하드웨어 수준에서 알고 싶다면 OS 수준 인 / dev를 찾고 megacli와 같은 도구가 필요하기 때문에 나는 megacli로 디버깅하는 데 사용

    [root@ns3539186 ~]# /opt/megaraid/megacli -LDPDInfo -aAll |grep "Virtual Disks\|RAID Level\|State"
Number of Virtual Disks: 2
RAID Level          : Primary-1, Secondary-0, RAID Level Qualifier-0
State               : Optimal
Foreign State: None
Media Type: Solid State Device
Foreign State: None
Media Type: Solid State Device
RAID Level          : Primary-1, Secondary-0, RAID Level Qualifier-0
State               : Optimal
Foreign State: None
Foreign State: None

디스크의 일련 번호를 얻으려면

[root@ns3539186 ~]# /opt/megaraid/megacli -PDList -aAll | egrep 'Slot\ Number|Device\ Id|Inquiry\ Data|Raw|Firmware\ state' | sed 's/Slot/\nSlot/g' |grep "Da                    ta\|Slot\|Raw"
Slot Number: 0
Raw Size: 447.130 GB [0x37e436b0 Sectors]
Inquiry Data: PHYS733402Z0480BGN  INTEL SSDSC2KB480G7                     SCV10100
Slot Number: 1
Raw Size: 447.130 GB [0x37e436b0 Sectors]
Inquiry Data: PHYS733402YV480BGN  INTEL SSDSC2KB480G7                     SCV10100
Slot Number: 2
Raw Size: 3.638 TB [0x1d1c0beb0 Sectors]
Inquiry Data: K3GJTYMB            HGST HUS726040ALA610                    A5GNT920
Slot Number: 3
Raw Size: 3.638 TB [0x1d1c0beb0 Sectors]
Inquiry Data: K3GHW57B            HGST HUS726040ALA610                    A5GNT920

위의 출력에서 ​​문의 데이터는 일련 번호를 포함합니다


-1

로컬 및 공유 스토리지를 찾는 데 사용한 몇 가지 명령은 다음과 같습니다.

로컬 스토리지

lsblk | grep -v '^loop'

공유 스토리지

findmnt -D | grep -v '^tmpfs' | grep -v '^/'

OR

df -kh | grep -v '^tmpfs' | grep -v '^/'

6 년 전에 이미 제안하고 승인 한 동일한 도구를 제안하는 이유는 무엇입니까?
워렌

OS가 변화하고 있기 때문에 지금은 많은 수 looptmpfs파티션을. 따라서 위와 같이 grep을 사용하여 출력을 청소하는 것이 좋습니다.
미안 아스 밧 아마드

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.