Por que a opção atime de mount sempre atualiza o atime dos arquivos como esperado?

5

Eu precisava detectar o acesso de leitura a certos arquivos, então eu precisava do sistema de arquivos para atualizar o atime atributo dos arquivos da maneira usual.

Opções de montagem padrão

No estado padrão, o sistema de arquivos não atualizou atime como esperado, embora eu não tenha usado a opção noatime :

$ cat /etc/fstab | grep '/home '
# /home was on /dev/sda7 during installation
UUID=d7e67903-f24d-45a7-be90-6a134c9c1ae9 /home         ext4    defaults      0     2

$ mount | grep '/home '
/dev/sda7 on /home type ext4 (rw)

$ cat /etc/mtab | grep '/home '
/dev/sda7 /home ext4 rw 0 0

O atime em um arquivo foi atualizado apenas algumas vezes. Mais tarde, percebi que o sistema de arquivos é montado com o novo relatime .

$ cat /proc/mounts | grep '/home '
/dev/sda7 /home ext4 rw,relatime,user_xattr,barrier=1,data=ordered 0 0

A solução óbvia não funciona

Portanto, parece que a opção relatime é o padrão no Ubuntu 12.04. A solução pareceu ser fácil - declare explicitamente a opção atime não padrão:

$ sudo mount -o remount,atime /home

Fiquei surpreso que as mount opções reais pareciam exatamente as mesmas como sem a opção atime .

$ mount | grep '/home '
/dev/sda7 on /home type ext4 (rw)

$ cat /etc/mtab | grep '/home '
/dev/sda7 /home ext4 rw 0 0

$ cat /proc/mounts | grep '/home '
/dev/sda7 /home ext4 rw,relatime,user_xattr,barrier=1,data=ordered 0 0

Na verdade, o sistema estava se comportando exatamente da mesma forma do que sem a opção atime .

Perguntas

O que está acontecendo? Por que não posso simplesmente usar a opção atime ? O que posso fazer para obter a funcionalidade normal atime ?

    
por pabouk 28.11.2013 / 16:27

1 resposta

8

Na verdade, há quatro cinco% opções relacionadas aatime de mount no Linux:

  • noatime - atime attribute (de arquivos e diretórios) é atualizado somente durante o acesso de gravação.
  • nodiratime - atime dos diretórios é atualizado somente durante o acesso de gravação, pode ser combinado com o relatime.
  • relatime / atime - atime parece ser agora um alias de relatime . Essa opção faz com que o atributo atime seja atualizado somente se o atime anterior for anterior a mtime ou ctime ou se o atime anterior tiver mais de 24 horas.
  • strictatime - Anteriormente era chamado de atime e, como tal, era a opção padrão. Isso faz com que o atributo atime seja atualizado com cada acesso de arquivo. (acessando dados de arquivos, não apenas os metadados / atributos)
  • lazytime - O Linux 4.10 adicionou uma nova opção: apenas os tempos de atualização (atime, mtime, ctime) na versão em memória do arquivo inode. Os dados no disco são atualizados com lentidão (veja man 8 mount para detalhes).

Desde o kernel Linux 2.6.30, a opção padrão é relatime . Se você deseja ter a funcionalidade atime original, use a opção strictatime . No caso apresentado, seria:

sudo mount -o remount,strictatime /home

Fontes

por pabouk 28.11.2013 / 16:27