Как вывести список несмонтированных разделов жесткого диска и смонтировать их?

Ответы:

43

Вывод списка несмонтированных разделов

Для решения листинга отмонтированных разделов части, есть несколько способов - lsblk, fdisk, parted, blkid.

$ lsblk
NAME                             MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                                8:0    0 111.8G  0 disk 
└─sda1                             8:1    0 111.8G  0 part /
sdb                                8:16   0 232.9G  0 disk 
├─sdb1                             8:17   0   1.5G  0 part 
├─sdb2                             8:18   0 138.6G  0 part /media/WINDOWS
├─sdb3                             8:19   0   8.1G  0 part 
├─sdb4                             8:20   0     1K  0 part 
├─sdb5                             8:21   0  68.5G  0 part 
└─sdb6                             8:22   0   5.8G  0 part 
loop0                              7:0    0   100G  0 loop 
└─docker-8:1-1589297-pool (dm-0) 252:0    0   100G  0 dm   
loop1                              7:1    0     2G  0 loop 
└─docker-8:1-1589297-pool (dm-0) 252:0    0   100G  0 dm   
$ sudo fdisk -l
[sudo] password for xieerqi: 

Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders, total 234441648 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: 0x000b5321

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048   234440703   117219328   83  Linux

Disk /dev/sdb: 250.1 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders, total 488397168 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: 0x96360d50

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *        2048     3074047     1536000   27  Hidden NTFS WinRE
/dev/sdb2         3074048   293617502   145271727+   7  HPFS/NTFS/exFAT
/dev/sdb3       471437312   488396799     8479744   17  Hidden HPFS/NTFS
/dev/sdb4       293617662   471437311    88909825    5  Extended
/dev/sdb5       315830272   459382783    71776256   83  Linux
/dev/sdb6       459384832   471437311     6026240   82  Linux swap / Solaris

Partition table entries are not in disk order

Disk /dev/mapper/docker-8:1-1589297-pool: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders, total 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 65536 bytes / 65536 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/docker-8:1-1589297-pool doesn't contain a valid partition table
$ sudo parted -l                                                               
[sudo] password for xieerqi: 
Model: ATA Radeon R7 (scsi)
Disk /dev/sda: 120GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End    Size   Type     File system  Flags
 1      1049kB  120GB  120GB  primary  ext4         boot


Model: ATA TOSHIBA MK2555GS (scsi)
Disk /dev/sdb: 250GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type      File system     Flags
 1      1049kB  1574MB  1573MB  primary   ntfs            boot, diag
 2      1574MB  150GB   149GB   primary   ntfs
 4      150GB   241GB   91.0GB  extended
 5      162GB   235GB   73.5GB  logical   ext4
 6      235GB   241GB   6171MB  logical   linux-swap(v1)
 3      241GB   250GB   8683MB  primary   ntfs            hidden


Model: Linux device-mapper (thin-pool) (dm)
Disk /dev/mapper/docker-8:1-1589297-pool: 107GB
Sector size (logical/physical): 512B/512B
Partition Table: loop

Number  Start  End    Size   File system  Flags
 1      0.00B  107GB  107GB  ext4


$ sudo blkid
[sudo] password for xieerqi: 
/dev/sda1: UUID="86df21bf-d95f-435c-9292-273bdbcba056" TYPE="ext4" 
/dev/sdb1: LABEL="System" UUID="F4F688B2F68876A0" TYPE="ntfs" 
/dev/sdb2: LABEL="TI105866W0A" UUID="4EBAAE53BAAE36FD" TYPE="ntfs" 
/dev/sdb3: LABEL="HDDRECOVERY" UUID="BC4ED40D4ED3BDF8" TYPE="ntfs" 
/dev/sdb5: UUID="0ca7543a-5463-4a07-8bbe-233a7b0bd625" TYPE="ext4" 
/dev/sdb6: UUID="3a6e2270-19a2-49d7-aab3-5efb92d3b3d0" TYPE="swap" 
/dev/loop0: UUID="a3693b88-7899-4628-848d-d9012205cf56" TYPE="ext4" 
/dev/mapper/docker-8:1-1589297-pool: UUID="a3693b88-7899-4628-848d-d9012205cf56" TYPE="ext4" 
$ 

Можно использовать немного AWKмагии, чтобы проанализировать вывод, lsblkчтобы вывести список всех размонтированных разделов:

$ lsblk  --noheadings --raw | awk '$1~/s.*[[:digit:]]/ && $7==""'              
sdb1 8:17 0 1.5G 0 part 
sdb3 8:19 0 8.1G 0 part 
sdb4 8:20 0 1K 0 part 
sdb5 8:21 0 68.5G 0 part 
sdb6 8:22 0 5.8G 0 part

Или в качестве альтернативы:

$ lsblk --noheadings --raw -o NAME,MOUNTPOINT | awk '$1~/[[:digit:]]/ && $2 == ""'                                       
sdb1 
sdb2 
sdb3 
sdb4 
sdb5 

Что именно там происходит, так это то, что мы перечисляем все

строки, в которых первый столбец начинается с буквы s(потому что так обычно называются диски) и заканчивается числом (которые представляют разделы). В моем предыдущем выводе вы могли видеть, что у меня есть другие файловые системы, например, для docker, поэтому в приведенной выше команде мы избавляемся от всех ненужных вещей.

Монтажные перегородки

Я обнаружил, что это mountможет быть требовательно: ему нужно знать точную файловую систему, его нужно запускать от имени пользователя root и т. Д. udisksctl mount -b /dev/sXYЭто гораздо лучшая команда, ее можно запускать как обычный пользователь и автоматически монтировать в /media/$USER/папку. Например,

$ udisksctl mount -b /dev/sdb5 
Mounted /dev/sdb5 at /media/xieerqi/0ca7543a-5463-4a07-8bbe-233a7b0bd625.
Сергей Колодяжный
источник
2

sudo blkid -o list

перечислит все смонтированные и не смонтированные разделы. Кроме того, вы можете использовать mountи, dfчтобы увидеть все точки монтирования.

mount -t type device destination_dir

может быть использован для монтирования вашего устройства / раздела.

Рон
источник
Это список только смонтированных разделов. Размонтированные не включены.
Suncat2000
2

Чтобы ответить на ваш первый вопрос, запустите:

sudo parted -l

Если они нормально смонтированы, просто запустите:

mount -a

Со страницы руководства пользователя mount: Команда

mount -a [-t type] [-O optlist]

(обычно приводится в загрузочном скрипте) вызывает монтирование всех файловых систем, упомянутых в fstab (правильного типа и / или имеющих или не имеющих надлежащих параметров), как указано, за исключением тех, чья строка содержит ключевое слово noauto.

Если они обычно не смонтированы, вы должны указать опции для монтирования.

JimLohse
источник
и чтобы быть понятным, mountкоманда должна быть sudo mount <options>такой же, если она запускается не как root, или вы получаете: mount: это может сделать только root
JimLohse
Я слишком новичок, чтобы прямо комментировать ответ @ Serg, но он довольно исчерпывающий, по крайней мере, я могу его высказать! Обязательно посмотрите на его ответ, особенно на udisksctl mount -b /dev/sXYкоманду, которую может запустить обычный пользователь, очень круто.
JimLohse
2

Вот что я разработал для перечисления несмонтированных томов:

lsblk  --noheadings --raw | awk '{print substr($0,0,4)}' | uniq -c | grep 1 | awk '{print "/dev/"$2}'
доллар
источник
1
Не могли бы вы расширить свой ответ примерами того, как он используется?
WinEunuuchs2Unix
0

Вы также можете использовать,

blkid -c /dev/nul | awk -F: '{print $1}'

чтобы получить список всех смонтированных разделов, а затем использовать Lsblkдля проверки того, чего не было в смонтированном списке.

Суфиян Гори
источник