Montar um subdiretório de home em uma partição própria confunde o relatório de uso do disco

4

1. Situação

1.1 Dispositivos

Meu sistema de arquivos tem o seguinte arranjo

  • /dev/sda8 de 323 GiB está montado em /home
  • /dev/sda13 de 90 GiB está montado em /home/user2/storage

com a intenção original de separar o destino de / home / user2 / storage daquele de todo o resto. Ambos são partições lógicas. lsblk é citado abaixo.

1.2 Montagem

As instruções de montagem estão codificadas em /etc/fstab com as linhas

UUID=[that of /dev/sda8]  /home/  ext4  defaults 0 2
UUID=[that of /dev/sda13] /home/user2/storage  ext4  defaults 0 2

Em franqueza, copiei a última linha das outras instruções de montagem. Além disso, /etc é montado em outra partição. A saída de mount é citada abaixo.

2. Evidências

Esse arranjo teve alguns efeitos colaterais no modo como as ferramentas do sistema relatam o uso do disco.

Como consequência, não sei ao certo em quais diagnósticos devo confiar e com quanto espaço em disco eu posso contar.

Note que no computador em questão há um user1 e um user2 .

2.1 / dev / sda13 (armazenamento) visto de df

Usando df como usuário1 ou usuário2 fornece

  • df -h não mostra saída para /dev/sda13
  • df -ha mostra apenas - para o uso do disco de /dev/sda13

Se o usuário2 estiver conectado (e o diretório de armazenamento tiver sido montado)

  • sudo df -h /dev/sda13 (storage) mostra o uso do disco same (digamos 300GB) como df -h /dev/sda8 (home), embora sejam entidades diferentes e o tamanho usado é uma impossibilidade de armazenamento

else

  • sudo df -h /dev/sda13 (armazenamento) mostra um modesto uso de disco de 0,5 GiB, que eu posso ver como user1

2.2 / dev / sda13 (armazenamento) visto de gparted

Então, quando eu abro gparted , o tamanho usado é diferente dependendo se eu estou logado como user1 ou user2.

O valor relatado parece ser bom para o usuário2 (quem deve acessar o armazenamento), não para o usuário1 (que não deve tocar no armazenamento). No entanto, eu esperava obter informações justas, independentemente de quem eu sou, em termos de usuário. Por uma boa medida, nenhum dos valores reportados por gparted coincide com nenhum dos df's.

Observação secundária: os relatórios sobre /dev/sda8 (home) são consistentes em todos os aspectos.

3. Perguntas

Estou certo de que há uma lógica por trás desse comportamento aparentemente inconsistente.

  • Alguém explicaria isso?
  • Quaisquer indicações para implementar este arranjo do sistema de arquivos de maneira limpa, de modo que o relatório seja justo?

4.1 Informações adicionais

4.2 Saída de sudo df -h (user1,2)

Esta é a saída para o usuário 1

udev                          5,9G  8,0K  5,9G   1% /dev
tmpfs                         1,2G  1,3M  1,2G   1% /run
/dev/sda6                      48G  5,1G   41G  12% /
none                          4,0K     0  4,0K   0% /sys/fs/cgroup
none                          5,0M     0  5,0M   0% /run/lock
none                          5,9G  380K  5,9G   1% /run/shm
none                          100M   64K  100M   1% /run/user
/dev/sda9                      26G   23G  1,7G  94% /opt
/dev/sda11                     20G   11G  8,1G  57% /usr
/dev/sda12                    2,0G  1,2G  636M  66% /boot
/dev/sda8                     314G  298G  4,9G  99% /home
/dev/sda10                    4,8G  2,9G  1,7G  64% /var
/home/user1/.Private          314G  298G  4,9G  99% /home/user1

Quando o usuário2 é registrado na última linha é substituído ou complementado por

/home/user2/.Private          314G  298G  4,9G  99% /home/user2

4.2 Saída de sudo lsblk

NAME    MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda       8:0    0 698,7G  0 disk 
├─sda1    8:1    0   100M  0 part 
├─sda2    8:2    0  41,1G  0 part 
├─sda3    8:3    0     1K  0 part 
├─sda5    8:5    0   145G  0 part 
├─sda6    8:6    0  48,6G  0 part /
├─sda7    8:7    0   2,1G  0 part 
├─sda8    8:8    0 322,8G  0 part /home
├─sda9    8:9    0    22G  0 part /opt
├─sda10   8:10   0     5G  0 part /var
├─sda11   8:11   0    20G  0 part /usr
├─sda12   8:12   0     2G  0 part /boot
└─sda13   8:13   0    90G  0 part 
sr0      11:0    1  1024M  0 rom 

4.3 Saída de sudo mount

/dev/sda6 on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/cgroup type tmpfs (rw)
none 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)
none on /run/user type tmpfs (rw,noexec,nosuid,nodev,size=104857600,mode=0755)
none on /sys/fs/pstore type pstore (rw)
/dev/sda11 on /usr type ext4 (rw)
/dev/sda12 on /boot type ext4 (rw)
/dev/sda8 on /home type ext4 (rw)
/dev/sda9 on /opt type ext4 (rw)
/dev/sda10 on /var type ext4 (rw)
/dev/sda13 on /home/user2/storage type ext4 (rw)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)
rpc_pipefs on /run/rpc_pipefs type rpc_pipefs (rw)
systemd on /sys/fs/cgroup/systemd type cgroup (rw,noexec,nosuid,nodev,none,name=systemd)
nfsd on /proc/fs/nfsd type nfsd (rw)
/home/user1/.Private on /home/user1 type ecryptfs (ecryptfs_check_dev_ruid,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_unlink_sigs,ecryptfs_sig=...,ecryptfs_fnek_sig=...)
gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,user=user1)

4.4 Saída de sudo findmnt

TARGET   SOURCE FSTYPE OPTIONS
/dev/pts devpts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000

4.5 Saída de groups (user1,2)

user1 adm cdrom sudo dip plugdev lpadmin sambashare common

user2 sudo common

5. Retrospecção

O @sourcejedi forneceu uma resposta útil abaixo.

O que aconteceu é que o conteúdo do armazenamento de diretório / sempre foi salvo em sda8 como / home / user2 / storage, se user1 ou user2 estavam logados e montados em sda13 quando user2 efetuava login. Say storage / contains 100G, então 100G sempre foram executados em / dev / sda8 e algumas vezes em / dev / sda13.

Eu descobri isso montando / dev / sda13 em um novo / home / storage do arquivo / etc / fstab: Eu estava logado como user2 e todos os arquivos ainda estavam em / home / user2 / storage em / dev / sda8. Então, movi os arquivos para um diretório dentro da partição sda13, e referenciei tal diretório com um link simbólico de dentro de / home / user2, como sugerido.

Dessa forma, liberei esses 100G em sda8 e tenho um relatório confiável do tamanho do armazenamento / de df -h /dev/sda13 se sou usuário1 ou usuário2.

    
por XavierStuvw 08.06.2017 / 20:52

2 respostas

1

the file /etc/fstab is executed regardless of the user, I believe, hence I presume that the partitions are always mounted.

Sim, mas há uma interação com o uso de ecryptfs. O fstab é processado no momento da inicialização. A montagem ecryptfs é ativada no momento do login, após você digitar sua senha de descriptografia. A montagem ecryptfs mostrada na pergunta irá mascarar qualquer montagem existente em /home/user1 , por exemplo. Observe que isso seria um pouco mais aparente quando você usa a ferramenta findmnt recomendada para mostrar a hierarquia de montagens. (A saída mount é mais simples para obter a lista completa de opções de montagem).

Portanto, você precisa montar seu sistema de arquivos de armazenamento fora do diretório pessoal de qualquer usuário. Esteja ciente de que os arquivos fora de seu diretório pessoal não serão criptografados, a menos que você saiba como fazer isso manualmente. Você pode criar um link simbólico para ele, se desejado (por exemplo, ln -s /storage /home/user2/storage ). A maneira como está configurada agora não faz sentido algum, e também poderia quebrar outras coisas (eu suspeito sobre a ordem de desmontagem no desligamento).

Observe que a pergunta já era confusa para analisar, já que faltava a saída completa dos comandos df . Há outro caso de canto, que df /dev/sda1 mostrará o uso de /dev se sda1 não estiver montado. Se você olhar para strace df /dev/sda8 , verá que não acessa o nó do dispositivo; ele procura o diretório das montagens e chama statfs("/home", ...) . Eu preferiria executar df -h /home eu mesmo ...

... Eu não necessariamente espero que a saída seja menos confusa quando houver um sistema de arquivos sobre-montado como esse. O resultado de omissão ou - para sda13 (dependendo da opção -a ) sugere que df possui algum código para detectar o caso de montagem excessiva, mas não está funcionando em todos os casos. EDIT: relatado upstream .

    
por 02.10.2017 / 13:20
0

Eu acho que o seu problema são as permissões nesses arquivos, você poderia adicionar seus comandos user1 e user2 group ? Se eu não estiver errado, essas saídas mostrariam que elas não compartilham grupos comuns.

Outra maneira de ver valores reais seria usar todos esses comandos com a conta root , dessa forma você teria acesso privilegiado a toda a estrutura de arquivos. Você poderia, por favor, adicionar algumas informações sobre isso?

Espero que ajude a obter informações mais significativas.

    
por 09.10.2017 / 04:00