1

Я обнаружил, что не могу смонтировать устройство, SDB.

Тем не менее, я не вижу это в креплениях:

[root@idh1 rhs-hadoop-install-0_61]# mount | grep --color dev
/dev/mapper/VolGroup-lv_root on / type ext4 (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
/dev/mapper/VolGroup-lv_home on /home type ext4 (rw)

И я не вижу никаких ссылок, указывающих на это:

[root@idh1 rhs-hadoop-install-0_61]# ls -altrh /dev/* | grep sd
brw-rw---- 1 root disk      8,  16 Feb  4 14:43 /dev/sdb
brw-rw---- 1 root disk      8,  17 Feb  4 14:43 /dev/sdb1
brw-rw---- 1 root disk      8,   0 Feb  4 14:43 /dev/sda
brw-rw---- 1 root disk      8,   2 Feb  4 14:43 /dev/sda2
brw-rw---- 1 root disk      8,   1 Feb  4 14:43 /dev/sda1
lrwxrwxrwx  1 root root    6 Feb  4 14:43 8:16 -> ../sdb
lrwxrwxrwx  1 root root    7 Feb  4 14:43 8:17 -> ../sdb1
lrwxrwxrwx  1 root root    6 Feb  4 14:43 8:0 -> ../sda
lrwxrwxrwx  1 root root    7 Feb  4 14:43 8:2 -> ../sda2
lrwxrwxrwx  1 root root    7 Feb  4 14:43 8:1 -> ../sda1

Что это за волшебные "стрелки", указывающие на ../sdb? Похоже, что они делают SDB "занят", так что я не могу отформатировать его.

2 ответа2

2

Проблема в том, что вы используете подстановочный знак вместе с тем, что скрывает от вас команда grep.

Оболочка расширяет шаблон для вас, поэтому ls видит команду как ls /dev/autofs /dev/block /dev/bsg и т.д. Для каждого файла и каталога, которые есть в вашем /dev/ . Вы можете продемонстрировать то, что видит ls , выполнив echo /dev/* чтобы просто увидеть, как оболочка расширяет подстановочный знак.

Как побочный эффект этого, все файлы во всех папках в /dev/ также перечислены. Поскольку ваша команда ls (после того как оболочка расширила подстановочный знак) содержит несколько каталогов, каждый каталог будет иметь свой собственный заголовок. Таким образом, фактический результат выглядит примерно так:

brw-rw---- 1 root disk      8,  16 Feb  4 14:43 /dev/sdb
brw-rw---- 1 root disk      8,  17 Feb  4 14:43 /dev/sdb1
brw-rw---- 1 root disk      8,   0 Feb  4 14:43 /dev/sda
brw-rw---- 1 root disk      8,   2 Feb  4 14:43 /dev/sda2
brw-rw---- 1 root disk      8,   1 Feb  4 14:43 /dev/sda1

...

/dev/block:
total 0
lrwxrwxrwx  1 root root    6 Feb  4 14:43 8:16 -> ../sdb
lrwxrwxrwx  1 root root    7 Feb  4 14:43 8:17 -> ../sdb1
lrwxrwxrwx  1 root root    6 Feb  4 14:43 8:0 -> ../sda
lrwxrwxrwx  1 root root    7 Feb  4 14:43 8:2 -> ../sda2
lrwxrwxrwx  1 root root    7 Feb  4 14:43 8:1 -> ../sda1

Однако строка /dev/block скрыта командой grep , поэтому вы ее не видите. Попробуйте без grep и, возможно, используйте less чтобы ясно увидеть, что ls .

Чтобы еще больше запутать, 8:16 в 8:16 -> ../sdb - это имя файла, а не метка времени или что-то еще. /dev/block/8:16 - это имя блочного устройства, которое является символической ссылкой на ../sdb или /dev/sdb как бы.

Вы можете остановить расширение ls подкаталогов, указав флаг d .

ls -altrhd /dev/* | grep sd

Или, конечно, не ставя подстановочный знак после /dev/:

ls -altrh /dev/ | grep sd
1

Прежде всего, вы не хотите монтировать sdb а раздел на устройстве, sdb1 . Вот почему вы не можете его смонтировать.

Что касается магических стрелок, они не являются волшебными или стрелками, имя файла на самом деле является числом после времени:

lrwxrwxrwx  1 root root    6 Feb  4 14:43 8:16 -> ../sdb
                                          ----
                                            |-> File name   

Сами стрелки являются стандартным обозначением для символических ссылок. Общий формат:

link_name -> /path/to/target

На самом деле они находятся не в /dev а в /dev/block и правильно указывают на /dev/sdb который является ../sdb из /dev/block (.. является родительским каталогом). Причина, по которой они были перечислены, заключается в том, что вы запустили ls /dev/* вместо ls /dev/ поэтому было также указано содержимое всех подкаталогов.

Вы можете проверить все это, запустив:

$ ls -lath /dev/sd*
brw-rw---- 1 root disk      8,  16 Feb  4 14:43 /dev/sdb
brw-rw---- 1 root disk      8,  17 Feb  4 14:43 /dev/sdb1
brw-rw---- 1 root disk      8,   0 Feb  4 14:43 /dev/sda
brw-rw---- 1 root disk      8,   2 Feb  4 14:43 /dev/sda2
brw-rw---- 1 root disk      8,   1 Feb  4 14:43 /dev/sda1

$ ls -lath /dev/block/sd*
lrwxrwxrwx  1 root root    6 Feb  4 14:43 8:16 -> ../sdb
lrwxrwxrwx  1 root root    7 Feb  4 14:43 8:17 -> ../sdb1
lrwxrwxrwx  1 root root    6 Feb  4 14:43 8:0 -> ../sda
lrwxrwxrwx  1 root root    7 Feb  4 14:43 8:2 -> ../sda2
lrwxrwxrwx  1 root root    7 Feb  4 14:43 8:1 -> ../sda1

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .