Precisión de marcas de tiempo de archivos: ext3 con nanosegundos, ext4 con milisegundos

Precisión de marcas de tiempo de archivos: ext3 con nanosegundos, ext4 con milisegundos

La gente dice que ext3 admite una precisión de marca de tiempo de archivos de hasta segundos y ext4 de hasta nanosegundos.

Lo que sucede es que mi antiguo VPS que ejecuta Ubuntu 12.04 con un sistema de archivos ext3 siempre (hasta donde puedo recordar) admitió nanosegundos muy bien, así:

  File: `auth.log'
  Size: 147744      Blocks: 304        IO Block: 4096   regular file
Device: 800h/2048d  Inode: 32019       Links: 1
Access: (0640/-rw-r-----)  Uid: (  101/  syslog)   Gid: (    4/     adm)
Access: 2020-03-20 00:18:33.634687690 -0300
Modify: 2020-03-24 05:12:48.777610222 -0300
Change: 2020-03-24 05:12:48.777610222 -0300
 Birth: -

mountextracto:

/dev/sda on / type ext3 (rw,noatime,errors=remount-ro)

stat -f:

  File: "auth.log"
    ID: 5483af2794a91010 Namelen: 255     Type: ext2/ext3
Block size: 4096       Fundamental block size: 4096
Blocks: Total: 3870084    Free: 272230     Available: 75643
Inodes: Total: 923520     Free: 829980
root@mail:~# df -mT
Filesystem     Type     1M-blocks  Used Available Use% Mounted on
/dev/sda       ext3         15118 14055       296  98% /
devtmpfs       devtmpfs      1973     1      1973   1% /dev
none           tmpfs          395     1       395   1% /run
none           tmpfs            5     0         5   0% /run/lock
none           tmpfs         1973     0      1973   0% /run/shm

Ahora compré un nuevo VPS, lo actualicé a Ubuntu 20.04 (pre-beta), tiene un sistema de archivos montado como ext4.

  File: auth.log
  Size: 723967      Blocks: 1424       IO Block: 4096   regular file
Device: ca03h/51715d    Inode: 398412      Links: 1
Access: (0640/-rw-r-----)  Uid: (  104/  syslog)   Gid: (    4/     adm)
Access: 2020-03-24 00:00:05.676000000 -0300
Modify: 2020-03-24 05:14:56.644000000 -0300
Change: 2020-03-24 05:14:56.644000000 -0300
 Birth: -

mountextracto:

/dev/xvda3 on / type ext4 (rw,noatime,nobarrier,errors=remount-ro,stripe=32564)

Pero extrañamente stat -fdice que es ext3:

  File: "auth.log"
    ID: 7e8a03105e52b018 Namelen: 255     Type: ext2/ext3
Block size: 4096       Fundamental block size: 4096
Blocks: Total: 9857995    Free: 7434726    Available: 7007355
Inodes: Total: 2505120    Free: 2403794
root@mailnew:~# df -mT
Filesystem     Type     1M-blocks  Used Available Use% Mounted on
udev           devtmpfs       430     0       430   0% /dev
tmpfs          tmpfs           95     2        94   2% /run
/dev/xvda3     ext4         38508  9466     27373  26% /
tmpfs          tmpfs          473     0       473   0% /dev/shm
tmpfs          tmpfs            5     0         5   0% /run/lock
tmpfs          tmpfs          473     0       473   0% /sys/fs/cgroup
/dev/loop0     squashfs        54    54         0 100% /snap/lxd/11348
/dev/loop1     squashfs        92    92         0 100% /snap/core/8689
/dev/xvda1     ext4           727   183       502  27% /boot
tmpfs          tmpfs           95     0        95   0% /run/user/0

Mis preguntas son:

  1. ¿Por qué mi antiguo sistema ext3 admite una precisión de nanosegundos?

  2. ¿Por qué el nuevo ext4 está limitado a milisegundos? ¿Está realmente formateado como ext3?

  3. ¿Cómo puedo descubrir qué está mal y habilitar los nanosegundos en el nuevo?

Respuesta1

El soporte real para la resolución de nanosegundos frente a segundos depende del tamaño del inodo elegido en el momento del formato. Los inodos de 128 bytes solo admiten una segunda resolución, los inodos de 256 bytes admiten una resolución de nanosegundos. El controlador del sistema de archivos ext3 en el kernel en realidad ejecuta el módulo ext4 durante muchos años, por lo que admite marcas de tiempo de nanosegundos.

En cuanto a las marcas de tiempo con resolución de milisegundos, es probable que esto se deba a que la virtualización solo proporciona un reloj con resolución de ms para el sistema de archivos.

información relacionada