XFS oltre l’anno anno 2038

Il limite dei timestamp nel file system XFS dipende dalla versione del kernel Linux e dalle opzioni utilizzate durante la formattazione.
Nel caso di XFS tradizionale (ossia senza “bigtime”), il limite massimo è il 19 gennaio 2038. Questo a causa del classico problema dell’anno 2038 (Y2038), ossia i file creati dopo data non riportano correttamente la data poiché i vecchi inode di XFS memorizzavano i timestamp come contatori di secondi a 32 bit con segno.

Nelle vecchie versioni del file system, i timestamp (date di creazione, modifica e accesso dei file) venivano salvati all’interno degli inode come interi a 32 bit con segno, con il limite massimo fissato al 19 gennaio 2038. Superata quella data, i timestamp avrebbero subito un overflow ripartendo dal 1901.


Con il kernel Linux 5.10, il file system XFS ha introdotto il supporto per la funzione bigtime, spostando il limite dei timestamp fino all’anno 2486.
L’opzione non è attiva automaticamente per impostazione predefinita nei filesystem esistenti, perché un file system creato con bigtime non risulterebbe leggibile da kernel o utility più vecchi non aggiornati (per preservare la retrocompatibilità).

Stai ancora gestendo un sistema con file system XFS e vuoi sapere come verificare o abilitare l’opzione bigtime su un volume specifico?

Per verificare ed eventualmente abilitare l’opzione bigtime sul tuo file system XFS, devi usare i tool standard di amministrazione di XFS come xfs_info e xfs_admin.
Ricordo che una volta abilitata questa opzione, il file system non potrà più essere montato o letto da sistemi con kernel Linux precedenti alla versione 5.10.

Ecco la procedura passo dopo passo:

Verificare se bigtime è già attivo. Puoi controllare lo stato del tuo volume (montato) usando il comando xfs_info seguito dal punto di montaggio (es. /mnt/data o /).

xfs_info /mnt/dati

Se tra le caratteristiche elencate (nella riga features=) compare la voce bigtime=1, il file system supporta già le date fino al 2486 ed è al sicuro dal bug del 2038. Se invece c’è bigtime=0 o la voce non è presente, significa che non è attiva.

Come abilitare bigtime su un file system esistente? Se il filesystem è stato creato senza questa opzione, puoi aggiornarlo senza perdere dati se il volume è smontato.

Smontare il volume
sudo umount /mnt/data

Abilitare la feature bigtime dove /dev/sdX1 è il percorso corretto del tuo dispositivo/partizione
sudo xfs_admin -O bigtime=1 /dev/sdX1

Montare nuovamente il volume
sudo mount /mnt/data

Nel caso in cui sia necessario invece creare un nuovo file system con bigtime abilitato usando le versioni più recenti di xfsprogs (dalla versione 5.15 in poi) solitamente bigtime è attivato in automatico. Puoi forzare manualmente su versioni precedenti di xfsprogs, usa il comando mkfs.xfs:

sudo mkfs.xfs -m bigtime=1 /dev/sdX1

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *