Por que meus dispositivos parecem ter links simbólicos, que estão vazios?

1

Estou descobrindo que não consigo montar um dispositivo, sdb.

No entanto, não vejo isso em montagens:

[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)

E não vejo montagens de links simbólicos apontando para ele:

[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

Quais são essas "setas" mágicas que apontam para ../sdb ? Parece que eles estão tornando o sdb "ocupado", de modo que não posso formatá-lo.

    
por jayunit100 04.02.2014 / 21:01

2 respostas

2

O problema aqui é que você está usando um curinga, junto com o que o comando grep esconde de você.

O shell expande o curinga para você, portanto, o ls vê o comando como ls /dev/autofs /dev/block /dev/bsg e assim por diante para cada arquivo e diretório que você tem em /dev/ . Você pode demonstrar o que o ls vê fazendo echo /dev/* para ver apenas como o shell expande o curinga.

Como um efeito colateral disso, todos os arquivos em todas as pastas em /dev/ também são listados. Como o comando ls (após o shell ter expandido o curinga) contém vários diretórios, cada diretório terá seu próprio título. Então a saída real parece algo como:

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

No entanto, a linha /dev/block está oculta pelo comando grep , portanto você não a vê. Experimente sem o grep e talvez usando less para ver claramente o que o ls está produzindo.

Para confundir mais, o 8:16 in 8:16 -> ../sdb é um nome de arquivo e não um timestamp ou qualquer outra coisa. /dev/block/8:16 é o nome de um dispositivo de bloco, que é vinculado a ../sdb ou /dev/sdb , por assim dizer.

Você pode parar ls dos subdiretórios de expansão especificando o d flag.

ls -altrhd /dev/* | grep sd

Ou, claro, por não colocar um curinga após /dev/ :

ls -altrh /dev/ | grep sd
    
por 04.02.2014 / 21:30
1

Primeiro de tudo, você não quer montar sdb , mas a partição que está no dispositivo, sdb1 . É por isso que você não pode montá-lo.

Quanto às flechas mágicas, elas não são mágicas ou flechas, o nome do arquivo é realmente o número após o horário:

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

As próprias setas são uma notação padrão para links simbólicos. O formato geral é:

link_name -> /path/to/target

Eles não estão realmente em /dev , mas em /dev/block e estão apontando corretamente para /dev/sdb , que é ../sdb de /dev/block ( .. é o diretório pai). A razão pela qual eles foram listados é porque você executou ls /dev/* em vez de ls /dev/ , então o conteúdo de todos os subdiretórios também foi listado.

Você pode verificar tudo isso executando:

$ 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
    
por 04.02.2014 / 21:23

Tags