예를 들어 보존 날짜를 2071로 설정하는 등 기본 보존 기간을 시도했습니다. WORMing을 하면 모든 것이 괜찮은 것 같습니다. 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에서 올바른 시간을 얻습니다.\
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비트 타임스탬프 값만 지원한다는 것을 발견했습니다. 따라서 atime
2071로 설정하는 것은 내 예상으로는 불가능합니다 . 그런데 처음에는 2071년이었는데 나중에 YEAR-2038 문제로 인해 1934년으로 바뀌었습니다. 나는 스스로에게 이렇게 물었습니다.
atime
1. XFS를 2038보다 크게 설정할 수 있는 이유는 무엇입니까 ?
2. atime
시간이 좀 지나면 왜 1970년 이하의 시간으로 바뀌나요?
나는 SLES15 머신에서 모든 작업을 수행했습니다. xfsprogs는 버전 4.15이고 Gluster는 v5.5입니다.
답변1
LastAccess 날짜가 블록 수준에서 변경되는 이유와 XFS가 INT32 필드에 2070과 같은 날짜를 저장할 수 있는 이유에 대한 가능한 설명:
놀랍게도 atime의 타임스탬프를 2038보다 훨씬 높게 설정할 수 있으며 이러한 타임스탬프는 일반적인 시스템 도구를 통해서도 표시될 수 있습니다. 시간이 지나면 값이 변경되어 1902-1969년 사이의 범위로 매핑되는 것이 관찰됩니다. 처음에는 2038년 고정 시간보다 훨씬 더 많은 시간을 성공적으로 설정한 것으로 생각됩니다.기억 속에타임스탬프 표현. 이는 2038 이후의 설정을 허용하는 것으로 보입니다.디스크에반면 XFS 표현은 최대값 2038만 허용하며 위 값은 signed int32의 음수 범위인 1902-1969 범위에 매핑됩니다. 내가 그 스레드에서 가져온 내용은 다음과 같습니다. https://lkml.org/lkml/2014/6/1/240