Linux find all disks

Find all storage devices attached to a Linux machine [closed]

I have a need to find all of the writable storage devices attached to a given machine, whether or not they are mounted. The dopey way to do this would be to try every entry in /dev that corresponds to a writable devices ( hd* and sd* ). Is there a better solution, or should I stick with this one?

Since you talk about them maybe being mounted, I guess you want a list of partitions, not just of disks?

partitions are fine, too, yes 🙂 .. if I know the partitions, I’ll also know what physical devices are available

@warren — oh no. They still should be closed. As you as the post owner want this moved you should flag it for moderator attention. The fact that you want it moved will carry some weight.

7 Answers 7

/proc/partitions will list all the block devices and partitions that the system recognizes. You can then try using file -s to determine what kind of filesystem is present on the partition, if any.

There’s kind of a limit on what you can do from a shell. Most of the other suggestions that are higher rated either don’t work from a shell, won’t work unless dbus is running, or will list devices that aren’t actually present/configured. This is just faster than checking all the /dev devices.

You can always do fdisk -l which seems to work pretty well, even on strange setups such as EC2 xvda devices.

Here is a dump for a m1.large instance:

root@ip-10-126-247-82:~# fdisk -l Disk /dev/xvda1: 10.7 GB, 10737418240 bytes 255 heads, 63 sectors/track, 1305 cylinders, total 20971520 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/xvda1 doesn't contain a valid partition table Disk /dev/xvda2: 365.0 GB, 365041287168 bytes 255 heads, 63 sectors/track, 44380 cylinders, total 712971264 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/xvda2 doesn't contain a valid partition table Disk /dev/xvda3: 939 MB, 939524096 bytes 255 heads, 63 sectors/track, 114 cylinders, total 1835008 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/xvda3 doesn't contain a valid partition table 
root@ip-10-126-247-82:~# mount /dev/xvda1 on / type ext4 (rw) proc on /proc type proc (rw,noexec,nosuid,nodev) sysfs on /sys type sysfs (rw,noexec,nosuid,nodev) fusectl on /sys/fs/fuse/connections type fusectl (rw) none on /sys/kernel/debug type debugfs (rw) none on /sys/kernel/security type securityfs (rw) udev on /dev type devtmpfs (rw,mode=0755) devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620) tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755) none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880) none on /run/shm type tmpfs (rw,nosuid,nodev) /dev/xvda2 on /mnt type ext3 (rw) 
root@ip-10-126-247-82:~# cat /proc/partitions major minor #blocks name 202 1 10485760 xvda1 202 2 356485632 xvda2 202 3 917504 xvda3 

Side Note

How fdisk -l works is something I would love to know myself.

Читайте также:  Какую линукс выбрать новичку

Источник

6 Different Ways to List Hard Drives in Linux

This detailed guide will give you enough information to start using Emacs, and enough extra to make you want more.

There are several ways to list all the hard drives present in a system through Linux command lines.

Keep in mind a hard drive could be physically connected, virtually connected or even emulated (for example: when you use storage devices such as EMC, Sun or IBM).

Here are some different commands which can list the hard drives, keep in mind there are others but these are probably the most commonly used and easy to get the job done.

Listing Hard Drives in Linux

Please note that some of these commands are actually disk partitioning tools and listing disk partition is one of their features.

Let’s see what commands you can use to show disk info in Linux.

1. df

The df command in Linux is probably one of the most commonly used. It lists the actual “disk space usage” and it can give you information about what hard disks (or current disk space) is being used in the entire system.

The most common way to use it is with the -h argument which means “human readable” (because we are not machines, right?):

[email protected]:~$ df -h Filesystem Size Used Avail Use% Mounted on udev 7.8G 0 7.8G 0% /dev tmpfs 1.6G 3.5M 1.6G 1% /run /dev/sda2 468G 204G 242G 46% / tmpfs 7.8G 109M 7.7G 2% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup /dev/loop0 7.5M 7.5M 0 100% /snap/canonical-livepatch/54 /dev/loop1 90M 90M 0 100% /snap/core/6034 /dev/loop2 5.0M 5.0M 0 100% /snap/canonical-livepatch/50 /dev/loop4 90M 90M 0 100% /snap/core/6130 /dev/loop3 4.8M 4.8M 0 100% /snap/canonical-livepatch/49 /dev/loop5 89M 89M 0 100% /snap/core/5897 /dev/sda1 511M 6.1M 505M 2% /boot/efi tmpfs 1.6G 16K 1.6G 1% /run/user/121 tmpfs 1.6G 44K 1.6G 1% /run/user/1000

As you can see, the first column is the current logic name (or the name you can find it within your system), the second column is how big is each of them, the third column is how much is currently used (in bytes), the fourth column is how much is currently available in each for usage (in bytes), the fifth column is how much is used (in %) and the sixth and last column is where is it physically mounted in your Linux system.

2. fdisk

fdisk is another common option among sysops. It currently lists the different partitions (which is related to hard drives as a hard drive can be divided into several partitions) in your system.

[email protected]:~$ fdisk -l Disk /dev/loop0: 7.5 MiB, 7811072 bytes, 15256 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 /dev/loop1: 89.5 MiB, 93818880 bytes, 183240 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 /dev/loop2: 4.9 MiB, 5148672 bytes, 10056 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 /dev/loop3: 4.7 MiB, 4919296 bytes, 9608 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 /dev/loop4: 89.5 MiB, 93835264 bytes, 183272 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 /dev/loop5: 88.2 MiB, 92483584 bytes, 180632 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 /dev/sda: 477 GiB, 512110190592 bytes, 1000215216 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 Disklabel type: gpt Disk identifier: 129F4EE6-2A54-4639-BFCA-2CC09DFC8566 Device Start End Sectors Size Type /dev/sda1 2048 1050623 1048576 512M EFI System /dev/sda2 1050624 1000214527 999163904 476.4G Linux filesystem 

This will return the entire amount of space (in GB or MB), the entire amount of bytes and the entire amount of sectors per each partition and as a summary, it also gives you the start and end sectors, the amount of disk space (in Bytes) and the type of partition.

Читайте также:  Xerox 3345 драйвер линукс

Tip: Usually a SATA disk is labelled with sd.

3. lsblk

This one is a little more sophisticated but gets the job done as it lists all block devices. It will give you a very simple list of all devices:

[email protected]:~$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT loop0 7:0 0 7.5M 1 loop /snap/canonical-livepatch/54 loop1 7:1 0 89.5M 1 loop /snap/core/6034 loop2 7:2 0 4.9M 1 loop /snap/canonical-livepatch/50 loop3 7:3 0 4.7M 1 loop /snap/canonical-livepatch/49 loop4 7:4 0 89.5M 1 loop /snap/core/6130 loop5 7:5 0 88.2M 1 loop /snap/core/5897 sda 8:0 0 477G 0 disk ├─sda1 8:1 0 512M 0 part /boot/efi └─sda2 8:2 0 476.4G 0 part /

It is probably more visual than the others as it even shows the partitions per each disk in a visual way (like the sda in the example above). It also gives information about the total size per each partition and disk and the physical location for each. This is very commonly used when you need to mount things to be used (like a USB stick or similar) so you can know where is it in order to proceed to mount it.

4. cfdisk

cfdisk is probably the most advanced one in GUI (Graphical User Interface), as it is absolutely visual and interactive. It allows at first to list all disks/partitions in your system but it also allows you to manage them by selecting them and then applying actions such as “Delete”, “Resize”, “Type” (to change partition Type) and “Write” changes done to partitions.

It also gives you very friendly information about each partition and disk as it gives you where does each partition cylinders start and ends, amount of sectors used by each one and the full size of each one with its type. It won’t give you for example how much is used or free to use.

Читайте также:  Asus fn key linux

5. parted

This one is similar to previous ones mentioned, it lists all partitions and allows to manage them. Its main difference is that it also informs you the brand and model of your hard disks and even the type of connectivity used in it (scsi, sata, etc) and total disk size.

[email protected]:~$ sudo parted -l Model: ATA LITEON CV1-8B512 (scsi) Disk /dev/sda: 512GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 538MB 537MB fat32 EFI System Partition boot, esp

6. sfdisk

This is very similar to fdisk, however sfdisk allows you to see both physical and logical volumes and also gives you a “summary” of the actual physical volumes’ partitions with the cylinders (start and end), sectors, size and type.

Probably the “s” is for “super”, as it is a fdisk with super powers:

[email protected]:~$ sudo sfdisk -l Disk /dev/loop0: 88.2 MiB, 92483584 bytes, 180632 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 /dev/loop1: 4.7 MiB, 4919296 bytes, 9608 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 /dev/loop2: 4.9 MiB, 5148672 bytes, 10056 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 /dev/loop3: 89.5 MiB, 93818880 bytes, 183240 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 /dev/loop4: 7.5 MiB, 7811072 bytes, 15256 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 /dev/loop5: 89.5 MiB, 93835264 bytes, 183272 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 /dev/sda: 477 GiB, 512110190592 bytes, 1000215216 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 Disklabel type: gpt Disk identifier: 129F4EE6-2A54-4639-BFCA-2CC09DFC8566 Device Start End Sectors Size Type /dev/sda1 2048 1050623 1048576 512M EFI System /dev/sda2 1050624 1000214527 999163904 476.4G Linux filesystem

These commands should allow you to at least see what logical volumes, partitions and hard drives you have in your system and make use of this information for whatever reason you need it, being this just to know more or manipulate any of these.

Most of these commands also give you managing capabilities to modify and manipulate partitions at your will, so make sure to use them with responsibility.

If you like checking system information, do read the article about getting processor information in Linux command line.

If you have any questions or suggestions, do let me know in the comment section.

Источник

Оцените статью
Adblock
detector