주어진 머신에 장착 된 쓰기 가능 여부에 관계없이 모든 쓰기 가능한 저장 장치를 찾아야합니다.
이 작업을 수행 /dev
하는 방법은 쓰기 가능한 장치 (hd * 및 sd *) 에 해당하는 모든 항목을 시도 하는 것입니다.
더 나은 해결책이 있습니까? 아니면이 문제를 고수해야합니까?
주어진 머신에 장착 된 쓰기 가능 여부에 관계없이 모든 쓰기 가능한 저장 장치를 찾아야합니다.
이 작업을 수행 /dev
하는 방법은 쓰기 가능한 장치 (hd * 및 sd *) 에 해당하는 모든 항목을 시도 하는 것입니다.
더 나은 해결책이 있습니까? 아니면이 문제를 고수해야합니까?
답변:
블록 스토리지 장치 에만 관심이 있다면 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
사용 가능한 다른 많은 열을 사용하여 스크립팅에 적합합니다.
or 클래스의 lshw
장치에 대한 세부 정보를 출력 하고 추출 할 수 있습니다 (다른 클래스는 스토리지 컨트롤러, scsi, sata, sas 등에 대한 세부 정보를 제공 할 수도 있음 ).disk
tape
storage
예 :
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에 있습니다.
lsblk
모든 블록 저장 장치를 나열합니다.
fdisk -l
에 나열된 모든 장치의 모든 파티션을 나열합니다. /proc/partitions
lshw -short
시스템의 모든 하드웨어 (파이어 와이어 제외)에 대한 정보를 제공합니다.
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가 공식 저장소에 없습니다 .
나는 그것을 발견 fdisk
하고 lsblk
데비안 설치 프로그램의 가상 터미널에서 사용할 수 없습니다. 이 경우 blkid
블록 스토리지 장치에 대한 UUID를 가져 오는을 사용 합니다.
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
위의 출력에서 문의 데이터는 일련 번호를 포함합니다
로컬 및 공유 스토리지를 찾는 데 사용한 몇 가지 명령은 다음과 같습니다.
로컬 스토리지
lsblk | grep -v '^loop'
공유 스토리지
findmnt -D | grep -v '^tmpfs' | grep -v '^/'
OR
df -kh | grep -v '^tmpfs' | grep -v '^/'
loop
와 tmpfs
파티션을. 따라서 위와 같이 grep을 사용하여 출력을 청소하는 것이 좋습니다.