Obtendo no fsid no Linux? Ou uma maneira alternativa de identificar sistemas de arquivos?

2

Em um ambiente com diretórios pessoais montados automaticamente, de modo que o mesmo sistema de arquivos exportado por um servidor de arquivos possa ser montado várias vezes no cliente, eu gostaria de poder identificar de forma autoritária se dois pontos de montagem são de fato o mesmo sistema de arquivos. Isto é, se o servidor remoto exportar:

/home

E o cliente local tem:

# mount
fileserver:/home/l/lars on /home/lars type nfs (rw...)
fileserver:/home/b/bob on /home/bob type nfs (rw...)

Estou procurando uma maneira de identificar que /home/lars e /home/bob são, na verdade, o mesmo sistema de arquivos. Em teoria, isso é o que o resultado fsid da estrutura statvfs é para, mas em todos os casos, para ambos sistemas de arquivos locais e remotos, estou achando que o valor desse membro da estrutura é 0.

Isso é algum tipo de problema do lado do cliente? Ou os servidores NFS mais modernos simplesmente se recusam a fornecer um fsid útil?

O objetivo final de tudo isso é interpretar de forma robusta a saída do comando quota para sistemas de arquivos NFS. Por exemplo, dado o exemplo acima, executar quota como eu pode retornar algo como:

Disk quotas for user lars (uid 6580): 
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
otherserver:/vol/home0/a/alice
                     12  52428800 52428800               4  4294967295 4294967295        
fileserver:/home/l/lars
                9353032  9728000 10240000          124018       0       0        

... o problema aqui é que existe uma cota para mim em otherserver que é visível nos resultados do comando quota , mesmo que meu diretório pessoal esteja em um dispositivo diferente. Minhas O plano era pesquisar o fsid para cada ponto de montagem listado no quota output e verifique se corresponde ao fsid associado com meu diretório pessoal.

Parece que isso não funciona, então ... alguma sugestão?

    
por larsks 20.03.2012 / 03:33

1 resposta

3

Você pode usar o comando mountpoint . A opção -d imprime o número do dispositivo principal / secundário do ponto de montagem para stdout.

No seu caso, compare a saída de mountpoint -d /home/lars a mountpoint -d /home/bob .

[root@Fruity ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2             9.9G  2.5G  7.0G  26% /
/dev/sda1              97M   43M   50M  47% /boot
/dev/sda7             2.0G   68M  1.9G   4% /tmp
/dev/sda3             9.9G  2.8G  6.6G  30% /usr
/dev/sda6             6.0G  1.1G  4.6G  19% /var
/dev/sdb1             400G  263G  138G  66% /data
/dev/sdc1             150G  122G   29G  82% /images
nfs001:/data/chain    36G  1.2G   35G   4% /data/chain
nfs001:/data/src      36G  1.2G   35G   4% /data/src


[root@Fruity ~]# mountpoint -d /data/chain/
0:19

[root@Fruity ~]# mountpoint -d /data/src/
0:19

[root@Fruity ~]# mountpoint -d /data/
8:17
    
por 20.03.2012 / 03:51

Tags