XFS、GlusterFS v5.5および2038年問題


1

たとえば、保持日を2071に設定するために、デフォルトの保持期間を試しました。FUSEから、またブリックレベルでも、保持はすべてのノードで2071に設定されました。さらにstorage.ctime、タイムスタンプもに保存されるように、オプション を有効にしましたmdata xattr。しかし、しばらくしてから、ブリックレベルで atime(保持を保存する)が1934年に切り替えられたことを確認しました。

stat /gluster/brick1/glusterbrick/data/file3.txt
  File: /gluster/brick1/glusterbrick/data/file3.txt
  Size: 5             Blocks: 16         IO Block: 4096   regular file
Device: 830h/2096d    Inode: 115         Links: 2
Access: (0544/-r-xr--r--)  Uid: ( 2000/    gluster)   Gid: ( 2000/
gluster)
Access: 1934-12-13 20:45:51.000000000 +0000
Modify: 2019-04-10 09:50:09.000000000 +0000
Change: 2019-04-10 10:13:39.703623917 +0000
 Birth: -

FUSEから正しいatimeを取得します:\

stat /gluster/volume1/data/file3.txt
  File: /gluster/volume1/data/file3.txt
  Size: 5             Blocks: 1          IO Block: 131072 regular file
Device: 2eh/46d    Inode: 10812026387234582248  Links: 1
Access: (0544/-r-xr--r--)  Uid: ( 2000/    gluster)   Gid: ( 2000/
gluster)
Access: 2071-01-19 03:14:07.000000000 +0000
Modify: 2019-04-10 09:50:09.000000000 +0000
Change: 2019-04-10 10:13:39.705341476 +0000
 Birth: -

XFSは32ビットのタイムスタンプ値のみをサポートしていることがわかります。そのため、atime2071 に設定することはできません。しかし、最初は2071年でしたが、YEAR-2038の問題により1934年に切り替えられました。私は次のことを自問しています:
1. atime2038を超えるXFS を設定できるのはなぜですか?
2.そして、なぜこれatimeがしばらくして1970年より低い時間に切り替わったのですか?

私はすべてをSLES15マシンで行いました。xfsprogsはバージョン4.15で、Glusterはv5.5です


興味深い質問。ただし、Linuxディストリビューションとソフトウェアのバージョンについて詳しく説明することをお勧めします。John Titorをループに入れることを忘れないでください。;)
ルイFリベイロ

私はバージョンと配布情報を追加
ダービッツを

@RuiFRibeiroジョン・タイターは誰ですか?ループの意味は?質問をすみませんが、私はここで完全に新しいです
デビッド

「タイターは、フロリダ州タンパに本拠を置く2036年からアメリカの兵士であると主張しました。政府のタイムトラベルプロジェクトに割り当てられ、1975年に戻ってIBM 5100コンピューターを回収しました。 UNIXの2038年のバグに対処した2036年」。
ルイFリベイロ

Allrigthはは、私は;-)理解
ダービッツ

回答:


0

LastAccessの日付がブリックレベルで変更される理由と、XFSがINT32フィールドに2070を保存できる日付などを含む理由は次のとおりです。

タイムスタンプを2038をはるかに超えてatimeに設定でき、それらも通常のシステムツールを介して表示されるのは驚くべきことです。しばらくすると、値が変化し、1902年から1969年の範囲にマッピングされることが観察されました。2038を超える定常atimeの最初の成功した設定は、タイムスタンプのメモリ内表現に対応していると思われます。これにより、2038を超える設定が可能になります。一方、XFSのオンディスク表現では、2038の最大値のみが許可され、上記の値は、1902〜1969の範囲にマップされます。署名されたint32 これは私がこのスレッドから取ったものです:https : //lkml.org/lkml/2014/6/1/240

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.