
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: -
mount
extracto:
/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: -
mount
extracto:
/dev/xvda3 on / type ext4 (rw,noatime,nobarrier,errors=remount-ro,stripe=32564)
Pero extrañamente stat -f
dice 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:
¿Por qué mi antiguo sistema ext3 admite una precisión de nanosegundos?
¿Por qué el nuevo ext4 está limitado a milisegundos? ¿Está realmente formateado como ext3?
¿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.