как узнать, какие жесткие диски находятся в системе?

<p>мне нужно знать, какие жесткие диски доступны, включая те, которые не смонтированы и, возможно, не отформатированы. я не могу найти их в <code>dmesg</code> или <code>/var/log/messages</code> (слишком много для прокрутки). я надеюсь, что есть способ использовать <code>/dev</code> или <code>/proc</code> чтобы узнать эту информацию, но я не знаю как. я использую linux.</p>

<p>это сильно зависит от платформы. также разные методы могут по-разному относиться к случаям edge ("поддельные" диски разных типов, тома raid и т.д.).</p><p>в современных установках udev в подкаталогах <code>/dev/disk</code> есть символические ссылки на носители, которые позволяют искать диск или раздел по серийному номеру (<code>/dev/disk/by-id/</code>) по uuid (<code>/dev/disk/by-uuid</code>), по метке файловой системы (<code>/dev/disk/by-label/</code>) или по аппаратному подключению (<code>/dev/disk/by-path/</code>).</p><p>в linux 2.6 каждый диск и дискообразное устройство имеет запись в <code>/sys/block</code>. под linux с незапамятных времен диски и разделы перечислены в <code>/proc/partitions</code>. в качестве альтернативы вы можете использовать <a href="http://ezix.org/project/wiki/hardwarelister">lshw</a> : <code>lshw -class disk</code>.</p><p>linux также предоставляет утилиту <a href="http://linux.die.net/man/8/lsblk"><code>lsblk</code></a> , которая отображает древовидное представление томов хранилища nice (начиная с версии util-linux 2.19, отсутствует на встроенных устройствах с busybox).</p><p>если у вас есть утилита <code>fdisk</code> или <code>disklabel</code>, она может рассказать вам, на каких устройствах она может работать.</p><p>имена утилит для многих вариантов unix вы найдете в <a href="http://bhami.com/rosetta.html">rosetta stone for unix</a> , в частности в строках "перечислить конфигурацию оборудования" и "прочитать метку диска".</p>

<p><code>lsblk</code> выведет список всех блочных устройств. это хорошо подходит для сценариев:</p><pre><code>$ lsblk -io 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 lsblk присутствует в пакете util-linux и поэтому гораздо более универсален, чем предлагаемые альтернативы.

как насчетlshw -class disk 

 <a href="http://www.linuxintro.org/wiki/hwinfo">hwinfo помогает:> hwinfo --disk 21: ide 00.0: 10600 disk [created at block.245] unique id: 3ool.8mzxfawnuh8 parent id: w7y8.1t_0outzkp6 sysfs id: /class/block/sda sysfs busid: 0:0:0:0 sysfs device link: /devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0 hardware class: disk model: "hitachi hts54322" vendor: "hitachi" device: "hts54322" revision: "esbo" driver: "ahci", "sd" driver modules: "ahci" device file: /dev/sda device files: /dev/sda, /dev/disk/by-id/ata-hitachi_hts543225a7a384_e2021342gepg4j, /dev/disk/by-id/scsi-sata_hitachi_hts5432_e2021342gepg4j, /dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0, /dev/disk/by-id/wwn-0x5000cca614c6395e device number: block 8:0-8:15 bios id: 0x80 geometry (bios edd): chs 484521/16/63 size (bios edd): 488397168 sectors geometry (bios legacy): chs 1023/255/63 drive status: no medium config status: cfg=new, avail=yes, need=no, active=unknown attached to: #17 (sata controller) > hwinfo --block --short disk: /dev/sda hitachi hts54322 partition: /dev/sda1 partition /dev/sda2 partition /dev/sda3 partition /dev/sda4 partition /dev/sda5 partition 

@giles говорит, что это сильно зависит от платформы. вот один из таких примеров.я использую систему centos 5.5. эта система имеет 4 диска и 3ware raid-контроллер.в моем случае, lshw -class disk, cat /proc/scsi/scsi а также parted --list показывает контроллер raid (3ware 9650se-4lp). это не показывает фактические диски:показывает только 3ware raid контроллер, который предоставляет том/dev/sda:# lshw -class disk -disk description: scsi disk product: 9650se-4lp disk vendor: amcc physical id: 0.0.0 bus info: scsi@0:0.0.0 logical name: /dev/sda # cat /proc/scsi/scsi attached devices: host: scsi0 channel: 00 id: 00 lun: 00 vendor: amcc model: 9650se-4lp disk rev: 4.06 type: direct-access ansi scsi revision: 05 # parted --list model: amcc 9650se-4lp disk (scsi) disk /dev/sda: 2000gb чтобы увидеть диски, которые лежат внизу, мне пришлось установить утилиту tw_cli из 3ware и спросить сам контроллер.# tw_cli info c0 ... vport status unit size type phy encl-slot model ------------------------------------------------------------------------------ p0 ok u0 931.51 gb sata 0 - wdc wd1002fbys-02a6 p1 ok u0 931.51 gb sata 1 - wdc wd1002fbys-02a6 

поскольку оба " <a href="https://unix.stackexchange.com/questions/75620/can-i-see-what-hdd-i-have-installed">могу ли я увидеть, какой жесткий диск у меня установлен? " и " <a href="https://unix.stackexchange.com/questions/8497/how-do-i-determine-the-make-model-of-my-storage-devices">как определить марку и модель моих устройств хранения данных? " помечены как дубликаты этого вопроса я удивлен, что никто не упомянул hdparm и smartctl. рассматривая несколько машин, кажется, что любая из них (если она не обе) часто обнаруживается уже установленной в стандартных (даже старых) дистрибутивах linux.# smartctl -i /dev/sda smartctl 6.1 2013-03-16 r3800 [i686-linux-3.9.9-301.fc19.i686.pae] (local build) copyright (c) 2002-13, bruce allen, christian franke, www.smartmontools.org === start of information section === model family: toshiba 2.5" hdd mk..56gsy device model: toshiba mk1656gsy serial number: 60pkt43ct lu wwn device id: 5 000039 2919874b6 firmware version: lh013d user capacity: 160 041 885 696 bytes [160 gb] sector size: 512 bytes logical/physical device is: in smartctl database [for details use: -p show] ata version is: ata8-acs (minor revision not indicated) sata version is: sata 2.6, 3.0 gb/s local time is: mon jul 22 11:13:37 2013 cest smart support is: available - device has smart capability. smart support is: enabled # hdparm -i /dev/sda /dev/sda: model=toshiba mk1656gsy, fwrev=lh013d, serialno=60pkt43ct config={ fixed } rawchs=16383/16/63, trksize=0, sectsize=0, eccbytes=0 bufftype=unknown, buffsize=16384kb, maxmultsect=16, multsect=16 curchs=16383/16/63, cursects=16514064, lba=yes, lbasects=312581808 iordy=on/off, tpio={min:120,w/iordy:120}, tdma={min:120,rec:120} pio modes: pio0 pio1 pio2 pio3 pio4 dma modes: sdma0 sdma1 sdma2 mdma0 mdma1 mdma2 udma modes: udma0 udma1 udma2 udma3 udma4 udma5 advancedpm=yes: unknown setting writecache=enabled drive conforms to: unspecified: ata/atapi-3,4,5,6,7  signifies the current active mode как обычно, проверьте man-страницу для большего количества вариантов.

я использую fedora 14 и lshw здесь недоступно (по крайней мере, по умолчанию). однако в моем случае я использовал fdisk -l команда (как пользователь root), чтобы получить следующий вывод:disk /dev/sda: 8589 mb, 8589934592 bytes 255 heads, 63 sectors/track, 1044 cylinders, total 16777216 sectors units = sectors of 1  512 = 512 bytes sector size (logical/physical): 512 bytes / 512 bytes i/o size (minimum/optimal): 512 bytes / 512 bytes disk identifier: 0x0006a697 device boot start end blocks id system /dev/sda1  2048 1026047 512000 83 linux /dev/sda2 1026048 16777215 7875584 8e linux lvm disk /dev/sdb: 8589 mb, 8589934592 bytes 255 heads, 63 sectors/track, 1044 cylinders, total 16777216 sectors units = sectors of 1  512 = 512 bytes sector size (logical/physical): 512 bytes / 512 bytes i/o size (minimum/optimal): 512 bytes / 512 bytes disk identifier: 0x00000000 disk /dev/sdb doesn't contain a valid partition table disk /dev/dm-0: 6509 mb, 6509559808 bytes 255 heads, 63 sectors/track, 791 cylinders, total 12713984 sectors units = sectors of 1  512 = 512 bytes sector size (logical/physical): 512 bytes / 512 bytes i/o size (minimum/optimal): 512 bytes / 512 bytes disk identifier: 0x00000000 disk /dev/dm-0 doesn't contain a valid partition table disk /dev/dm-1: 1543 mb, 1543503872 bytes 255 heads, 63 sectors/track, 187 cylinders, total 3014656 sectors units = sectors of 1  512 = 512 bytes sector size (logical/physical): 512 bytes / 512 bytes i/o size (minimum/optimal): 512 bytes / 512 bytes disk identifier: 0x00000000 disk /dev/dm-1 doesn't contain a valid partition table 

я <a href="https://unix.stackexchange.com/a/241745/9689">нашел в другом ответе se , inxi инструмент как очень удобный:inxi -dxx drives: hdd total size: 810.2gb (42.9% used) id-1: /dev/sdc model: st3160827as size: 160.0gb serial: 5mt2hmh6 id-2: /dev/sdb model: wdc_wd3200jd size: 320.1gb serial: wd-wcamr1302926 id-3: /dev/sda model: st380817as size: 80.0gb serial: 4mr2ewbe id-4: /dev/sdd model: st3250824as size: 250.1gb serial: 9nd08gkx 

sfdisk -l предоставит вам подробную информацию об аппаратных/физических дисках, даже если они не смонтированы.программа предустановлена на все варианты linux, которые я использовал, но вы должны иметь права root, чтобы использовать ее.

многие из перечисленных команд помогут вам найти диски, которые уже были распознаны системой при загрузке. с современными приводами вы можете найти что-то, что вы вставили, когда машина была запущена и работала (я так и сделал). мне нравится совет от <a href="http://fredericiana.com/2010/06/15/hot-plugging-a-sata-drive-under-linux/">http://fredericiana.com/2010/06/15/hot-plugging-a-sata-drive-under-linux/ :<blockquote> попробуйте выполнить повторное сканирование хостов scsi (каждый порт sata отображается как шина scsi): echo "0 0 0">/sys/class/scsi_host/host/scan </blockquote>... затем вы можете использовать ваши утилиты linux, такие как fdisk, чтобы показать вам информацию о найденных дисках.

это сработало для меня:fdisk -l 2>/dev/null | grep "disk /" | grep -v "/dev/md" | awk '{print $2}' | sed -e 's/://g' </code></pre>

<p><code>sudo gparted</code> покажет все это в графическом интерфейсе.</p><p>(вы не указали, что вам нужно сделать это в терминале, поэтому мне интересно, почему этого решения не было.)</p>