O cluster conta com duas unidades para armazenamento:

/home
Sistema de arquivos NFS para armazenamento de dados de pré e pós processamento. Todos os usuários possuem uma área limitada por cota de disco no molde "/home/<username>". A cota padrão para todos é de 100GB de espaço e 1000K arquivos.
 
/lustre
Sistema de arquivos de alto desempenho para uso como scratch durante o processamento de dados. Todos os usuários possuem uma área neste sistema no molde "/lustre/<username>". Durante os trabalhos (jobs) as atividades de disco deverão ser direcionadas para este sistema. A cota padrão para todos é de 100GB de espaço e 300K arquivos.
 
Para consultar o espaço em disco disponível e a cota de arquivos utilize o comando "cotas":
 
[fulano@icex ~]$ cotas
 
                  ***** /home/fulano *****
Disk quotas for user fulano (uid 9999): 
     Filesystem   space   quota   limit   grace   files   quota   limit   grace
10.148.10.100:/mnt/nfs
                  2049M    100G    110G             197   1000k   1100k        
 
                 ***** /lustre/fulano *****
Disk quotas for user fulano (uid 9999):
     Filesystem    used   quota   limit   grace   files   quota   limit   grace
    /mnt/lustre  95.43M    100G    110G       -      47  307200  317440       -
 
 
No exemplo acima o usuário fulano está utilizando 2GB (2049M) de um total de 100GB disponível em seu home (NFS) além de 197 arquivos (inodes) do total de 1000K.
No lustre ele utiliza 95.43M do total de 100GB e 47 arquivos (inodes) de um total de 300K.
Caso os valores limites sejam ultrapassados a mensagem "Disk quota exceeded" será exibida.
 
***** ATENÇÃO! *****
 
O uso incorreto do sistema de arquivos lustre pode apresentar excesso de operações de disco (IO), ou seja: leitura, escrita, status, abrir e fechar arquivos, copiar, mover, etc. Isso resulta em uma grande queda de desempenho que atinge a todos os usuários do cluster Euler.

O lustre é um sistema de arquivos paralelo distribuído destinado a armazenar grandes porções de dados de forma eficiente para aplicações HPC (High Performance Computing). Analisando o comportamento dos usuários neste sistema de arquivos no cluster Euler, decidimos divulgar e estimular algumas boas práticas a fim de garantir alto desempenho a todos:

1- Evite ter um grande número de arquivos em um único diretório
Ao abrir um arquivo, seja para leitura ou gravação, é criado um bloqueio no diretório que o contém. Quando muitos arquivos em um mesmo diretório precisam ser abertos ocorre contenção e perda de desempenho. Procure dividir um grande número de arquivos (centenas ou milhares) em vários subdiretórios para minimizar o problema.
 
2- Evite utilizar arquivos pequenos
Acessar arquivos pequenos no Lustre não é eficiente, ao invés disso procure concentrar seus dados em arquivos maiores e consequentemente em menor quantidade.

3- Evite utilizar "ls -l"
O comando ls -l exibe informações como propriedade, permissão e tamanho de todos os arquivos e diretórios. As informações sobre propriedade e permissão são armazenadas em cache, ao contrário das informações sobre tamanho do arquivo que necessitam de muito mais trabalho para serem acessadas. Um comando "ls -l" em um diretório com muitos arquivos pode levar muito tempo para ser concluído.
Caso queira constatar a existência de um arquivo utilize apenas "ls <arquivo>". Se a listagem longa for imprescindível, execute no arquivo específico: "ls -l <arquivo>".
 
4- Otimize seu código
Essa é a dica mais importante. Evitar operações desnecessárias e redundantes é fundamental para se atingir desempenho. Isso também se aplica às operações de disco. Procure minimizar a frequência de gravação e leitura de dados em disco, aumentando o espaçamento entre as operações de IO e evitando gravação desnecessária de dados.

5- /home também pode sofrer sobrecarga de uso
O sistema de arquivos NFS que serve o home dos usuários é destinado ao armazenamento de dados de pré e pós processamento e possui desempenho muito inferior ao lustre, portanto evite operações de IO diretamente na partição NFS (/home/<username>) durante a execução de códigos no Euler. O armazenamento de dados durante o processamento deve ser feito no lustre de acordo com as instruções descritas acima.
Esperamos que cada usuário priorize estas boas práticas a fim de garantir um sistema rápido e eficiente para todos. O sistema será monitorado constantemente para identificar práticas fora dessas premissas.