αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž™αžΌαžšαž’αž„αŸ’αžœαŸ‚αž„ αž“αž·αž„ APIs αž―αž€αžŸαžΆαžšαž›αžΈαž“αž»αž…

αžαŸ’αž‰αž»αŸ†αžŸαŸ’αžšαžΆαžœαž‡αŸ’αžšαžΆαžœαž’αŸ†αž–αžΈαžŸαŸ’αžαŸαžšαž—αžΆαž–αž“αŸƒαž€αžΆαžšαž•αŸ’αž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž–αž–αž€ αž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαžŸαžΆαž€αž›αŸ’αž”αž„αžαŸ’αž›αž½αž“αž―αž„ αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžšαžΆαž€αžŠαžαžΆαžαŸ’αž‰αž»αŸ†αž™αž›αŸ‹αž’αŸ†αž–αžΈαžšαžΏαž„αž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αŸ” I αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŠαŸ„αž™αž€αžΆαžšαž’αžΆαž“ NVMe spec αžŠαžΎαž˜αŸ’αž”αžΈαž™αž›αŸ‹αž–αžΈαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž’αžΆαž“αžΆαž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αž€αžΆαžšαž”αž“αŸ’αžαž‘αž·αž“αŸ’αž“αž“αŸαž™ (αž“αŸ„αŸ‡αž‚αžΊαž€αžΆαžšαž’αžΆαž“αžΆαžαžΆαž‘αž·αž“αŸ’αž“αž“αŸαž™αž“αžΉαž„αž˜αžΆαž“αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž”αžšαžΆαž‡αŸαž™αž”αŸ’αžšαž–αŸαž“αŸ’αž’) αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αž™αžΎαž„αž“αžΌαžœαžαžΆαžŸ NMVe αŸ” αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž’αŸ’αžœαžΎαž€αžΆαžšαžŸαž“αŸ’αž“αž·αžŠαŸ’αž‹αžΆαž“αžŸαŸ†αžαžΆαž“αŸ‹αŸ—αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ– αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž–αž·αž…αžΆαžšαžŽαžΆαž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αžαžΌαž…αžαžΆαŸ†αž„αž–αžΈαž–αŸαž›αžŠαŸ‚αž›αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŸαžšαžŸαŸαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™ αž αžΎαž™αžšαž αžΌαžαžŠαž›αŸ‹αž–αŸαž›αžŠαŸ‚αž›αž–αž½αž€αž‚αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžšαž‘αŸ…αž€αžΆαž“αŸ‹αž§αž”αž€αžšαžŽαŸαž•αŸ’αž‘αž»αž€αŸ” αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž—αžΆαž‚αž…αŸ’αžšαžΎαž“ αž€αžΆαžšαž αŸ…αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‚αžΊαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž™αŸ‰αžΆαž„αž˜αžΆαž“αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαžšαžŸαŸαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡ αžαŸ’αž‰αž»αŸ†αžŸαŸ’αžœαŸ‚αž„αž™αž›αŸ‹αž–αžΈαž™αž“αŸ’αžαž€αžΆαžšαžαžŸαŸŠαžΌαžŠαŸ‚αž›αž•αŸ’αžαž›αŸ‹αžŠαŸ„αž™ APIs αž―αž€αžŸαžΆαžšαž›αžΈαž“αž»αž…αŸ” αžœαžΆαž αžΆαž€αŸ‹αžŠαžΌαž…αž‡αžΆαžαžΆαž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αž‚αž½αžšαžαŸ‚αžŸαžΆαž˜αž‰αŸ’αž‰αž“αŸ…αž‘αžΈαž“αŸαŸ‡: αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž αŸ…αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ write()αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž“αŸƒαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž…αž”αŸ‹ αž‘αž·αž“αŸ’αž“αž“αŸαž™αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αžŠαŸ„αž™αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž“αŸ…αž›αžΎαžαžΆαžŸαŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚ write() αž…αž˜αŸ’αž›αž„αžαŸ‚αž‘αž·αž“αŸ’αž“αž“αŸαž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‘αŸ…αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αžαžΊαžŽαŸ‚αž›αžŠαŸ‚αž›αž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„ RAM αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αžαŸ†αž±αŸ’αž™αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŸαžšαžŸαŸαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αž‘αŸ…αžαžΆαžŸ αž™αž“αŸ’αžαž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αž˜αž½αž™αž…αŸ†αž“αž½αž“αžαŸ’αžšαžΌαžœαž”αŸ’αžšαžΎαŸ”

αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž™αžΌαžšαž’αž„αŸ’αžœαŸ‚αž„ αž“αž·αž„ APIs αž―αž€αžŸαžΆαžšαž›αžΈαž“αž»αž…

αž‡αžΆαž‘αžΌαž‘αŸ… αžŸαž˜αŸ’αž—αžΆαžšαŸˆαž“αŸαŸ‡αž‚αžΊαž‡αžΆαžŸαŸ†αžŽαž»αŸ†αž“αŸƒαž€αŸ†αžŽαžαŸ‹αž…αŸ†αžŽαžΆαŸ†αžŠαŸ‚αž›αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαŸ€αž“αž›αžΎαž”αŸ’αžšαž’αžΆαž“αž”αž‘αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αžΎαž„αž“αž·αž™αžΆαž™αž™αŸ‰αžΆαž„αžαŸ’αž›αžΈαž’αŸ†αž–αžΈαžŸαžΆαžšαŸˆαžŸαŸ†αžαžΆαž“αŸ‹αž”αŸ†αž•αž»αž αžœαžΆαž”αŸ’αžšαŸ‚αžαžΆαžŠαžΎαž˜αŸ’αž”αžΈαžšαŸ€αž”αž…αŸ†αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž”αŸ’αžšαž€αž”αžŠαŸ„αž™αž“αž·αžšαž“αŸ’αžαžšαž—αžΆαž– αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž”αŸ’αžšαžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ fdatasync() αž¬αž”αžΎαž€αž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž˜αžΆαž“αž‘αž„αŸ‹ O_DSYNC. αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αž™αž›αŸ‹αž”αž“αŸ’αžαŸ‚αž˜αž’αŸ†αž–αžΈαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž€αžΎαžαž‘αžΎαž„αž…αŸ†αž–αŸ„αŸ‡αž‘αž·αž“αŸ’αž“αž“αŸαž™αž“αŸ…αž›αžΎαž•αŸ’αž›αžΌαžœαž–αžΈαž€αžΌαžŠαž‘αŸ…αžαžΆαžŸ αžŸαžΌαž˜αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž› αž“αŸαŸ‡ αž’αžαŸ’αžαž”αž‘αŸ”

αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαž“αŸƒαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž˜αž»αžαž„αžΆαžš write()

αž€αžΆαžšαž αŸ…αžαžΆαž˜αž”αŸ’αžšαž–αŸαž“αŸ’αž’ write() αž€αŸ†αžŽαžαŸ‹αž€αŸ’αž“αž»αž„αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžš IEEE POSIX αž‡αžΆαž€αžΆαžšαž”αŸ‰αž»αž“αž”αŸ‰αž„αžŸαžšαžŸαŸαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αž‘αŸ…αž€αžΆαž“αŸ‹αž’αŸ’αž“αž€αž–αž·αž–αžŽαŸŒαž“αžΆαž―αž€αžŸαžΆαžšαŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž”αž‰αŸ’αž…αž”αŸ‹αž€αžΆαžšαž„αžΆαžšαžŠαŸ„αž™αž‡αŸ„αž‚αž‡αŸαž™ write() αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšβ€‹αž’αžΆαž“β€‹αž‘αž·αž“αŸ’αž“αž“αŸαž™β€‹αžαŸ’αžšαžΌαžœαžαŸ‚β€‹αžαŸ’αžšαž‘αž”αŸ‹β€‹αž–αž·αžαž”αŸ’αžšαžΆαž€αžŠβ€‹αž”αŸƒβ€‹αžŠαŸ‚αž›β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αžŸαžšαžŸαŸαžšβ€‹αž–αžΈαž˜αž»αž“ αžŠαŸ„αž™β€‹αž’αŸ’αžœαžΎβ€‹αžŠαžΌαž…αŸ’αž“αŸαŸ‡β€‹αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆβ€‹αž‘αž·αž“αŸ’αž“αž“αŸαž™β€‹αž€αŸ†αž–αž»αž„β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž…αžΌαž›β€‹αž”αŸ’αžšαžΎβ€‹αž–αžΈβ€‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšβ€‹αž¬β€‹αžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž‘αžΆαž™β€‹αž•αŸ’αžŸαŸαž„αž‘αŸ€αž (αž˜αžΎαž›αž…αž»αŸ‡ αž•αŸ’αž“αŸ‚αž€αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαž“αŸƒαžŸαŸ’αžαž„αŸ‹αžŠαžΆαžš POSIX) αŸ” αžœαžΆαž‚αžΊαž‡αžΆαž€αžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ’αž“αŸ‚αž€αžŸαŸ’αžαžΈαž–αžΈαž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž“αŸƒαžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž›αžΆαž™αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž―αž€αžŸαžΆαžšαž’αž˜αŸ’αž˜αžαžΆ αž˜αžΆαž“αž€αŸ†αžŽαžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžŠαŸ‚αž›αž“αž·αž™αžΆαž™αžαžΆαž”αŸ’αžšαžŸαž·αž“αž”αžΎαžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž‘αžΆαž™αž–αžΈαžšαž“αžΈαž˜αž½αž™αŸ—αž αŸ…αž˜αž»αžαž„αžΆαžšαž‘αžΆαŸ†αž„αž“αŸαŸ‡ αž“αŸ„αŸ‡αž€αžΆαžšαž αŸ…αž“αžΈαž˜αž½αž™αŸ—αžαŸ’αžšαžΌαžœαžαŸ‚αž˜αžΎαž›αžƒαžΎαž‰αž“αžΌαžœαž•αž›αžœαž·αž”αžΆαž€αžŠαŸ‚αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž“αŸƒαž€αžΆαžšαž αŸ…αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž“αžΆαŸ†αž‘αŸ…αžŠαž›αŸ‹ ឬ αž˜αž·αž“αžƒαžΎαž‰αž‘αžΆαž›αŸ‹αžαŸ‚αžŸαŸ„αŸ‡ αž‚αŸ’αž˜αžΆαž“αž›αž‘αŸ’αž’αž•αž›αž’αŸ’αžœαžΈαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ” αž“αŸαŸ‡αž“αžΆαŸ†αž±αŸ’αž™αž˜αžΆαž“αž€αžΆαžšαžŸαž“αŸ’αž“αž·αžŠαŸ’αž‹αžΆαž“αžαžΆαžšαžΆαž›αŸ‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš I/O αž―αž€αžŸαžΆαžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžαŸ’αžšαžΌαžœαžαŸ‚αž…αžΆαž€αŸ‹αžŸαŸ„αžšαž›αžΎαž’αž“αž’αžΆαž“αžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ”

αžαžΎαž“αŸαŸ‡αž˜αžΆαž“αž“αŸαž™αžαžΆαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš write() αžαžΎαž’αžΆαžαžΌαž˜αž·αž…? αžαžΆαž˜αž‘αžŸαŸ’αžŸαž“αŸˆαž”αž…αŸ’αž…αŸαž€αž‘αŸαžŸ αž”αžΆαž‘αŸ” αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšβ€‹αž’αžΆαž“β€‹αž‘αž·αž“αŸ’αž“αž“αŸαž™β€‹αžαŸ’αžšαžΌαžœαžαŸ‚β€‹αžαŸ’αžšαž‘αž”αŸ‹β€‹αž‘αžΆαŸ†αž„β€‹αž’αžŸαŸ‹β€‹αž¬β€‹αž‚αŸ’αž˜αžΆαž“β€‹αž’αŸ’αžœαžΈβ€‹αžŠαŸ‚αž›β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αžŸαžšαžŸαŸαžšβ€‹αž‡αžΆαž˜αž½αž™ write(). αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš write()αžŸαŸ’αžšαž”αžαžΆαž˜αžŸαŸ’αžŠαž„αŸ‹αžŠαžΆαžš αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αž‰αŸ’αž…αž”αŸ‹αž‘αžΎαž™ αžŠαŸ„αž™αž”αžΆαž“αž€αžαŸ‹αžαŸ’αžšαžΆαž“αžΌαžœαž’αŸ’αžœαžΈαŸ—αž‘αžΆαŸ†αž„αž’αžŸαŸ‹ αžŠαŸ‚αž›αž“αžΆαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαŸ’αž“αžΎαž±αŸ’αž™αžŸαžšαžŸαŸαžšαž…αž»αŸ‡αŸ” αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αžŸαžšαžŸαŸαžšαžαŸ‚αž•αŸ’αž“αŸ‚αž€αž“αŸƒαž‘αž·αž“αŸ’αž“αž“αŸαž™αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ αž™αžΎαž„αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž˜αžΆαž“αžŸαŸ’αž‘αŸ’αžšαžΈαž˜αž–αžΈαžšαžŠαŸ‚αž›αž“αžΈαž˜αž½αž™αŸ—αž”αž“αŸ’αžαŸ‚αž˜ 1024 αž”αŸƒαž‘αŸ…αž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαžŠαŸ„αž™αž’αŸ’αž“αž€αž–αžŽαŸŒαž“αžΆαž―αž€αžŸαžΆαžšαžŠαžΌαž…αž‚αŸ’αž“αžΆαŸ” αžαžΆαž˜αž‘αžŸαŸ’αžŸαž“αŸˆαž“αŸƒαžŸαŸ’αžαž„αŸ‹αžŠαžΆαžš αž›αž‘αŸ’αž’αž•αž›αž“αžΉαž„αž’αžΆαž…αž‘αž‘αž½αž›αž™αž€αž”αžΆαž“ αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžŸαžšαžŸαŸαžšαž“αžΈαž˜αž½αž™αŸ—αž’αžΆαž…αž”αž“αŸ’αžαŸ‚αž˜αžαŸ‚αž˜αž½αž™αž”αŸƒαž‘αŸ…αž―αž€αžŸαžΆαžšαŸ” αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž‘αžΆαŸ†αž„αž“αŸαŸ‡αž“αžΉαž„αž“αŸ…αžαŸ‚αž‡αžΆαž’αžΆαžαžΌαž˜αž·αž… αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž–αž½αž€αž‚αŸαž”αžΆαž“αž”αž‰αŸ’αž…αž”αŸ‹ αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž–αž½αž€αž‚αŸαžŸαžšαžŸαŸαžšαž‘αŸ…αž―αž€αžŸαžΆαžšαž“αžΉαž„αž˜αžΆαž“αž—αžΆαž–αž…αŸ’αžšαž”αžΌαž€αž…αŸ’αžšαž”αž›αŸ‹αŸ” αž“αŸ…αž‘αžΈαž“αŸαŸ‡ αž€αžΆαžšαž–αž·αž—αžΆαž€αŸ’αžŸαžΆαž‚αž½αžšαž±αŸ’αž™αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαžαŸ’αž›αžΆαŸ†αž„αžŽαžΆαžŸαŸ‹αž›αžΎαž”αŸ’αžšαž’αžΆαž“αž”αž‘αž“αŸαŸ‡αž“αŸ…αž›αžΎ Stack Overflow αŸ”

αž˜αž»αžαž„αžΆαžš fsync() αž“αž·αž„ fdatasync()

αž˜αž’αŸ’αž™αŸ„αž”αžΆαž™αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž”αŸ†αž•αž»αžαžŠαžΎαž˜αŸ’αž”αžΈαž”αž‰αŸ’αž…αžΌαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‘αŸ…αžαžΆαžŸαž‚αžΊαž€αžΆαžšαž αŸ…αž˜αž»αžαž„αžΆαžš fsync(). αž˜αž»αžαž„αžΆαžšαž“αŸαŸ‡αžŸαŸ’αž“αžΎαž±αŸ’αž™αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž‘αžΈαž”αŸ’αž›αž»αž€αžŠαŸ‚αž›αž”αžΆαž“αž€αŸ‚αž”αŸ’αžšαŸ‚αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž–αžΈαžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž‘αŸ…αžαžΆαžŸαŸ” αž“αŸαŸ‡αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‘αžΆαŸ†αž„αž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αŸαžαžΆαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸƒαž―αž€αžŸαžΆαžš (αž–αŸαž›αžœαŸαž›αžΆαž…αžΌαž›αž”αŸ’αžšαžΎ αž–αŸαž›αžœαŸαž›αžΆαž€αŸ‚αž”αŸ’αžšαŸ‚αž―αž€αžŸαžΆαžš αž“αž·αž„αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž“αŸ…αž›αžΎ)αŸ” αžαŸ’αž‰αž»αŸ†αž‡αžΏαžαžΆαž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αŸαžαžΆαž“αŸαŸ‡αž€αž˜αŸ’αžšαžαŸ’αžšαžΌαžœαž€αžΆαžšαžŽαžΆαžŸαŸ‹ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžŠαžΉαž„αžαžΆαžœαžΆαž˜αž·αž“αžŸαŸ†αžαžΆαž“αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€ αž’αŸ’αž“αž€αž’αžΆαž…αž”αŸ’αžšαžΎαž˜αž»αžαž„αžΆαžšαž”αžΆαž“αŸ” fdatasync()αŸ” αž“αŸαŸ‡ αž‡αž½αž™ αž“αŸ…αž›αžΎ fdatasync() αžœαžΆαž“αž·αž™αžΆαž™αžαžΆαž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž“αŸƒαž˜αž»αžαž„αžΆαžšαž“αŸαŸ‡ αž…αŸ†αž“αž½αž“αž“αŸƒαž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αŸαžαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž‘αŸ…αž€αŸ’αž“αž»αž„αžαžΆαžŸ αžŠαŸ‚αž› "αž…αžΆαŸ†αž”αžΆαž…αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž“αŸƒαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž’αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžαžΆαž„αž€αŸ’αžšαŸ„αž˜" αŸ” αž αžΎαž™αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž™αž€αž…αž·αžαŸ’αžαž‘αž»αž€αžŠαžΆαž€αŸ‹αŸ”

αž”αž‰αŸ’αž αžΆαž˜αž½αž™αžŠαŸ‚αž›αž’αžΆαž…αž€αžΎαžαž‘αžΎαž„αž“αŸ…αž‘αžΈαž“αŸαŸ‡αž‚αžΊαžαžΆαž™αž“αŸ’αžαž€αžΆαžšαž‘αžΆαŸ†αž„αž“αŸαŸ‡αž˜αž·αž“αž’αžΆαž“αžΆαžαžΆαž―αž€αžŸαžΆαžšαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αžƒαžΎαž‰αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž”αžšαžΆαž‡αŸαž™αžŠαŸ‚αž›αž’αžΆαž…αž€αžΎαžαž˜αžΆαž“αŸ” αž‡αžΆαž–αž·αžŸαŸαžŸαž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž―αž€αžŸαžΆαžšαžαŸ’αž˜αžΈαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž˜αž½αž™αž‚αž½αžšαžαŸ‚αž αŸ… fsync() αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαžαžŠαŸ‚αž›αž˜αžΆαž“αžœαžΆαŸ” αž”αžΎαž˜αž·αž“αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž‘αŸ αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž‚αžΆαŸ†αž„ αžœαžΆαž’αžΆαž…αž”αž„αŸ’αž αžΆαž‰αžαžΆαž―αž€αžŸαžΆαžšαž“αŸαŸ‡αž˜αž·αž“αž˜αžΆαž“αž‘αŸαŸ” αž αŸαžαž»αž•αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž“αŸαŸ‡αž‚αžΊαžαžΆαž“αŸ…αž€αŸ’αžšαŸ„αž˜αž™αžΌαž“αžΈαž€ αžŠαŸ„αž™αžŸαžΆαžšαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžαŸ†αžŽαž—αŸ’αž‡αžΆαž”αŸ‹αžšαžΉαž„ αž―αž€αžŸαžΆαžšαž’αžΆαž…αž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αžαžαž…αŸ’αžšαžΎαž“αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž“αŸ…αž–αŸαž›αž αŸ… fsync() αž˜αž·αž“αž˜αžΆαž“αžœαž·αž’αžΈαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž―αž€αžŸαžΆαžšαžŠαžΎαž˜αŸ’αž”αžΈαžŠαžΉαž„αžαžΆαžαžΎαž‘αž·αž“αŸ’αž“αž“αŸαž™αžαžαžŽαžΆαž˜αž½αž™αž‚αž½αžšαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž αžΌαžšαž‘αŸ…αžαžΆαžŸ (αž“αŸ…αž‘αžΈαž“αŸαŸ‡ αž’αŸ’αž“αž€αž’αžΆαž…αž’αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž’αŸ†αž–αžΈαžšαžΏαž„αž“αŸαŸ‡) αŸ” αžœαžΆαž αžΆαž€αŸ‹αžŠαžΌαž…αž‡αžΆαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž―αž€αžŸαžΆαžš ext4 αž˜αžΆαž“αžŸαž˜αžαŸ’αžαž—αžΆαž– αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž· αž”αŸ’αžšαžΎ fsync() αž‘αŸ…αž€αžΆαž“αŸ‹αžαžαžŠαŸ‚αž›αž˜αžΆαž“αž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸαŸ‡αž’αžΆαž…αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž€αžšαžŽαžΈαž‡αžΆαž˜αž½αž™αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž―αž€αžŸαžΆαžšαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž‘αŸαŸ”

αž™αž“αŸ’αžαž€αžΆαžšαž“αŸαŸ‡αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžαž»αžŸαž‚αŸ’αž“αžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž―αž€αžŸαžΆαžšαž•αŸ’αžŸαŸαž„αŸ—αž‚αŸ’αž“αžΆαŸ” αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž”αŸ’αžšαžΎ blktrace αžŠαžΎαž˜αŸ’αž”αžΈαžŸαŸ’αžœαŸ‚αž„αž™αž›αŸ‹αž’αŸ†αž–αžΈαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžαžΆαžŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž―αž€αžŸαžΆαžš ext4 αž“αž·αž„ XFS αŸ” αž‘αžΆαŸ†αž„αž–αžΈαžšαž…αŸαž‰αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŸαžšαžŸαŸαžšαž’αž˜αŸ’αž˜αžαžΆαž‘αŸ…αžαžΆαžŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‘αžΆαŸ†αž„αž˜αžΆαžαž·αž€αžΆαž“αŸƒαž―αž€αžŸαžΆαžš αž“αž·αž„αž‘αž·αž“αžΆαž“αž»αž”αŸ’αž”αžœαžαŸ’αžαž·αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž―αž€αžŸαžΆαžš αžŸαž˜αŸ’αž’αžΆαžαžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹ αž“αž·αž„αž…αŸαž‰αžŠαŸ„αž™αž’αž“αž»αžœαžαŸ’αž FUA (αž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαž’αž„αŸ’αž‚αž—αžΆαž–αž”αž„αŸ’αžαŸ† αžŸαžšαžŸαŸαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž‘αŸ…αžαžΆαžŸ αžšαŸ†αž›αž„αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹) αžŸαžšαžŸαŸαžšαž‘αŸ…αž‘αž·αž“αžΆαž“αž»αž”αŸ’αž”αžœαžαŸ’αžαž·αŸ” αž–αž½αž€αž‚αŸαž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž’αŸ’αžœαžΎαžŠαžΌαž…αŸ’αž“αŸαŸ‡αžŠαžΎαž˜αŸ’αž”αžΈαž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž€αžΆαžšαž–αž·αžαž“αŸƒαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαŸ” αž“αŸ…αž›αžΎαžŠαŸ’αžšαžΆαž™αžŠαŸ‚αž›αž˜αž·αž“αž‚αžΆαŸ†αž‘αŸ’αžš FUA αžœαžΆαž”αžŽαŸ’αžαžΆαž›αž±αŸ’αž™αž˜αžΆαž“αž€αžΆαžšαž†αžΆαž”αž†αŸαŸ‡αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž–αžΈαžšαŸ” αž€αžΆαžšαž–αž·αžŸαŸ„αž’αž“αŸαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αžαžΆ fdatasync() αž›αžΏαž“αž”αž“αŸ’αžαž·αž… fsync(). αž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ blktrace αž”αž„αŸ’αž αžΆαž‰αžαžΆ fdatasync() αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆαžŸαžšαžŸαŸαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αžαž·αž…αž‘αŸ…αžαžΆαžŸ (αž€αŸ’αž“αž»αž„ ext4 fsync() សរសេរ 20 KiB αž“αž·αž„ fdatasync() - ៑៦ αž‚αžΈαž”) αŸ” αžŠαžΌαž…αž‚αŸ’αž“αžΆαž“αŸαŸ‡αž•αž„αžŠαŸ‚αžšαžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαž€αžƒαžΎαž‰αžαžΆ XFS αž‚αžΊαž›αžΏαž“αž‡αžΆαž„ ext16 αž”αž“αŸ’αžαž·αž…αŸ” αž αžΎαž™αž“αŸ…αž‘αžΈαž“αŸαŸ‡αžŠαŸ„αž™αž˜αžΆαž“αž‡αŸ†αž“αž½αž™ blktrace αž’αžΆαž…αžšαž€αžƒαžΎαž‰αžαžΆ fdatasync() αž”αž‰αŸ’αž…αžΌαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžαž·αž…αž‘αŸ…αžαžΆαžŸ (4 KiB αž€αŸ’αž“αž»αž„ XFS)αŸ”

αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž˜αž·αž“αž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹αž“αŸ…αž–αŸαž›αž”αŸ’αžšαžΎ fsync()

αžαŸ’αž‰αž»αŸ†αž’αžΆαž…αž‚αž·αžαž–αžΈαžŸαŸ’αžαžΆαž“αž—αžΆαž–αž˜αž·αž“αž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹αž…αŸ†αž“αž½αž“αž”αžΈαžŠαŸ‚αž›αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„ fsync()αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž‡αž½αž”αž”αŸ’αžšαž‘αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαŸ”

αž αŸαžαž»αž€αžΆαžšαžŽαŸβ€‹αž”αŸ‚αž”β€‹αž“αŸαŸ‡β€‹αž›αžΎαž€β€‹αžŠαŸ†αž”αžΌαž„β€‹αž”αžΆαž“β€‹αž€αžΎαžβ€‹αž‘αžΎαž„β€‹αž€αŸ’αž“αž»αž„β€‹αž†αŸ’αž“αžΆαŸ†β€‹αŸ’αŸ αŸ αŸ¨αŸ” αž“αŸ…αž–αŸαž›αž“αŸ„αŸ‡ αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹ Firefox 2008 "αž‡αžΆαž”αŸ‹αž‚αžΆαŸ†αž„" αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž―αž€αžŸαžΆαžšαž˜αž½αž™αž…αŸ†αž“αž½αž“αž’αŸ†αž€αŸ†αž–αž»αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžšαž‘αŸ…αžαžΆαžŸαŸ” αž”αž‰αŸ’αž αžΆαž‚αžΊαžαžΆαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž”αžΆαž“αž”αŸ’αžšαžΎαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™ SQLite αžŠαžΎαž˜αŸ’αž”αžΈαžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž–αŸαžαŸŒαž˜αžΆαž“αž’αŸ†αž–αžΈαžŸαŸ’αžαžΆαž“αž—αžΆαž–αžšαž”αžŸαŸ‹αžœαžΆαŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž“αžΈαž˜αž½αž™αŸ—αžŠαŸ‚αž›αž”αžΆαž“αž€αžΎαžαž‘αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž˜αž»αžαž„αžΆαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž αŸ… fsync()αžŠαŸ‚αž›αž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž€αžΆαžšαž’αžΆαž“αžΆαžŠαŸαž›αŸ’αž’αž“αŸƒαž€αžΆαžšαž•αŸ’αž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžαŸαžšαž—αžΆαž–αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž―αž€αžŸαžΆαžš ext3 αžŠαŸ‚αž›αž”αžΆαž“αž”αŸ’αžšαžΎαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž˜αžΆαž“αž˜αž»αžαž„αžΆαžš fsync() αž αžΌαžšαž‘αŸ…αžαžΆαžŸαž‘αŸ†αž–αŸαžš "αž€αžαŸ’αžœαž€αŸ‹" αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’ αž αžΎαž™αž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ‚αž‘αŸ†αž–αŸαžšαžŠαŸ‚αž›αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαž“αŸ„αŸ‡αž‘αŸαŸ” αž“αŸαŸ‡αž˜αžΆαž“αž“αŸαž™αžαžΆαž€αžΆαžšαž…αž»αž…αž”αŸŠαžΌαžαž»αž„αž“αŸ…αž€αŸ’αž“αž»αž„ Firefox αž’αžΆαž…αž”αžŽαŸ’αžαžΆαž›αž±αŸ’αž™αž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αŸαž€αžΆαž”αŸƒαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžšαž‘αŸ…αžαžΆαžŸαž˜αŸ‰αžΆαž‰αŸαž‘αž·αž€ αžŠαŸ‚αž›αž’αžΆαž…αž…αŸ†αžŽαžΆαž™αž–αŸαž›αž…αŸ’αžšαžΎαž“αžœαž·αž“αžΆαž‘αžΈαŸ” αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž…αŸ†αž–αŸ„αŸ‡αž”αž‰αŸ’αž αžΆ αžαžΆαž˜αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž™αž›αŸ‹ វអ αžŸαž˜αŸ’αž—αžΆαžšαŸˆαž‚αžΊαžŠαžΎαž˜αŸ’αž”αžΈαž•αŸ’αž›αžΆαžŸαŸ‹αž‘αžΈαž€αžΆαžšαž„αžΆαžšαž‡αžΆαž˜αž½αž™αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‘αŸ…αž‡αžΆαž€αž·αž…αŸ’αž…αž€αžΆαžšαž•αŸ’αž‘αŸƒαžαžΆαž„αž€αŸ’αžšαŸ„αž™αž’αžŸαž˜αž€αžΆαž›αŸ” αž“αŸαŸ‡αž˜αžΆαž“αž“αŸαž™αžαžΆ Firefox αž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž’αž“αž»αžœαžαŸ’αžαžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαžšαž€αŸ’αžŸαžΆαž€αžΆαžšαž•αŸ’αž‘αž»αž€αž€αžΆαž“αŸ‹αžαŸ‚αžαžΉαž„αžšαŸ‰αžΉαž„αž‡αžΆαž„αž€αžΆαžšαž…αžΆαŸ†αž”αžΆαž…αŸ‹ αž αžΎαž™αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαžšαž”αžŸαŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž―αž€αžŸαžΆαžš ext3 αž’αŸ’αžœαžΎαž±αŸ’αž™αž”αž‰αŸ’αž αžΆαž“αŸαŸ‡αž€αžΆαž“αŸ‹αžαŸ‚αž’αŸ’αž„αž“αŸ‹αž’αŸ’αž„αžšαŸ”

αž”αž‰αŸ’αž αžΆαž‘αžΈ ្ αž”αžΆαž“αž€αžΎαžαž‘αžΎαž„αž€αŸ’αž“αž»αž„αž†αŸ’αž“αžΆαŸ† ្០០៩ αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‚αžΆαŸ†αž„ αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž―αž€αžŸαžΆαžš ext2009 αžαŸ’αž˜αžΈαž”αžΆαž“αžšαž€αžƒαžΎαž‰αžαžΆ αž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαžαŸ’αž˜αžΈαŸ—αž‡αžΆαž…αŸ’αžšαžΎαž“αž˜αžΆαž“αž”αŸ’αžšαžœαŸ‚αž„αžŸαžΌαž“αŸ’αž™ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž˜αž·αž“αž”αžΆαž“αž€αžΎαžαž‘αžΎαž„αž‡αžΆαž˜αž½αž™αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž―αž€αžŸαžΆαžš ext4 αž…αžΆαžŸαŸ‹αž“αŸ„αŸ‡αž‘αŸαŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžαžΆαžαžŽαŸ’αžŒαž˜αž»αž“ αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž› ext3 αž”αŸ„αŸ‡αž…αŸ„αž›αž‘αž·αž“αŸ’αž“αž“αŸαž™αž…αŸ’αžšαžΎαž“αž–αŸαž€αž“αŸ…αž›αžΎαžŒαžΈαžŸ αžŠαŸ‚αž›αž’αŸ’αžœαžΎαž²αŸ’αž™αž’αŸ’αžœαžΈαŸ—αžαž™αž…αž»αŸ‡αž…αŸ’αžšαžΎαž“αŸ” fsync(). αžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ‚αž›αž˜αŸ’αž’αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž“αŸαŸ‡ ext4 αž›αž»αž”αžαŸ‚αž‘αŸ†αž–αŸαžš "αž€αžαŸ’αžœαž€αŸ‹" αž‘αžΆαŸ†αž„αž“αŸ„αŸ‡αžŠαŸ‚αž›αž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’αž“αžΉαž„αž―αž€αžŸαžΆαžšαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž˜αž½αž™αŸ” αž αžΎαž™αž‘αž·αž“αŸ’αž“αž“αŸαž™αž“αŸƒαž―αž€αžŸαžΆαžšαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž“αŸ…αžαŸ‚αž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαž™αŸˆαž–αŸαž›αž™αžΌαžšαž‡αžΆαž„αž‡αžΆαž˜αž½αž™ ext3 αŸ” αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ‚αž›αž˜αŸ’αž’αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž (αžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŸαŸ’αžαž·αžαž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž“αŸαŸ‡αžšαž™αŸˆαž–αŸαž› 30 αžœαž·αž“αžΆαž‘αžΈ αž’αŸ’αž“αž€αž’αžΆαž…αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž“αŸαŸ‡αžŠαŸ„αž™αž”αŸ’αžšαžΎ dirty_expire_centisecs; αž“αŸ…αž‘αžΈαž“αŸαŸ‡ αž’αŸ’αž“αž€αž’αžΆαž…αžŸαŸ’αžœαŸ‚αž„αžšαž€αž–αŸαžαŸŒαž˜αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž’αŸ†αž–αžΈαžšαžΏαž„αž“αŸαŸ‡) αŸ” αž“αŸαŸ‡αž˜αžΆαž“αž“αŸαž™αžαžΆ αž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αž½αž™αž…αŸ†αž“αž½αž“αž’αŸ†αž’αžΆαž…αž”αžΆαžαŸ‹αž”αž„αŸ‹αžŠαŸ„αž™αž˜αž·αž“αž’αžΆαž…αž‘αžΆαž‰αž™αž€αž˜αž€αžœαž·αž‰αž”αžΆαž“αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž‚αžΆαŸ†αž„αŸ” αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž…αŸ†αž–αŸ„αŸ‡αž”αž‰αŸ’αž αžΆαž“αŸαŸ‡αž‚αžΊαžαŸ’αžšαžΌαžœαž”αŸ’αžšαžΎ fsync() αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžšαž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž€αžΆαžšαž•αŸ’αž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžαŸαžšαž—αžΆαž– αž“αž·αž„αž€αžΆαžšαž–αžΆαžšαž–αž½αž€αž‚αŸαž±αŸ’αž™αž”αžΆαž“αž…αŸ’αžšαžΎαž“αžαžΆαž˜αžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“αž–αžΈαž•αž›αžœαž·αž”αžΆαž€αž“αŸƒαž€αžΆαžšαž”αžšαžΆαž‡αŸαž™αŸ” αž˜αž»αžαž„αžΆαžš fsync() αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΆαž“αŸ‹αžαŸ‚αž˜αžΆαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž‡αžΆαž˜αž½αž™ ext4 αž‡αžΆαž„ ext3 αŸ” αž‚αž»αžŽαžœαž·αž”αžαŸ’αžαž·αž“αŸƒαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž“αŸαŸ‡αž‚αžΊαžαžΆαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžšαž”αžŸαŸ‹αžœαžΆαžŠαžΌαž…αž–αžΈαž˜αž»αž“ αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž™αžΊαžαŸ— αžŠαžΌαž…αž‡αžΆαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αžΆαžŠαžΎαž˜αŸ” αž˜αžΎαž›αž–αŸαžαŸŒαž˜αžΆαž“αž›αž˜αŸ’αž’αž·αžαž’αŸ†αž–αžΈαžšαžΏαž„αž“αŸαŸ‡ αž“αŸ…αž‘αžΈαž“αŸαŸ‡ ΠΈ αž“αŸ…αž‘αžΈαž“αŸαŸ‡.

αž”αž‰αŸ’αž αžΆαž‘αžΈαž”αžΈαž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„ fsync(), αžŠαžΎαž˜αž†αŸ’αž“αžΆαŸ† 2018 αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ’αžšαž”αžαŸαžŽαŸ’αžŒαž“αŸƒαž‚αž˜αŸ’αžšαŸ„αž„ PostgreSQL αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαžšαž€αžƒαžΎαž‰αžαžΆαž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αž»αžαž„αžΆαžš fsync() αž‡αž½αž”αž”αŸ’αžšαž‘αŸ‡αž€αŸ†αž αž»αžŸαž˜αž½αž™ αžœαžΆαžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž‘αŸ†αž–αŸαžš "αž€αžαŸ’αžœαž€αŸ‹" ថអ "αžŸαŸ’αž’αžΆαž" αŸ” αž‡αžΆαž›αž‘αŸ’αž’αž•αž›αž€αžΆαžšαž αŸ…αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜ fsync() αž€αž»αŸ†αž’αŸ’αžœαžΎαž’αŸ’αžœαžΈαž‡αžΆαž˜αž½αž™αž‘αŸ†αž–αŸαžšαž”αŸ‚αž”αž“αŸαŸ‡αŸ” αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž“αŸαŸ‡ αž‘αŸ†αž–αŸαžšαžŠαŸ‚αž›αž”αžΆαž“αž€αŸ‚αž”αŸ’αžšαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž€αŸ’αž“αž»αž„αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ† αž αžΎαž™αž˜αž·αž“αžŠαŸ‚αž›αžŸαžšαžŸαŸαžšαž‘αŸ…αžαžΆαžŸαž‘αžΎαž™αŸ” αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž‚αŸ’αžšαŸ„αŸ‡αž˜αž αž“αŸ’αžαžšαžΆαž™αž–αž·αžαž”αŸ’αžšαžΆαž€αžŠαž–αŸ’αžšαŸ„αŸ‡αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αžΉαž„αž‚αž·αžαžαžΆαž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αž½αž™αž…αŸ†αž“αž½αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžšαž‘αŸ…αžαžΆαžŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαžΆαž˜αž–αž·αžαžœαžΆαž“αžΉαž„αž˜αž·αž“αž˜αžΆαž“αž‘αŸαŸ” αž€αžΆαžšαž”αžšαžΆαž‡αŸαž™αž”αŸ‚αž”αž“αŸαŸ‡ fsync() αž‚αžΊαž€αž˜αŸ’αžšαžŽαžΆαžŸαŸ‹ αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸ’αž“αž»αž„αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž”αŸ‚αž”αž“αŸαŸ‡αž˜αž·αž“αž’αžΆαž…αž’αŸ’αžœαžΎαž’αŸ’αžœαžΈαž”αžΆαž“αžŸαŸ’αž‘αžΎαžšαžαŸ‚αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžšαž™αž»αž‘αŸ’αž’αž”αŸ’αžšαž†αžΆαŸ†αž„αž“αžΉαž„αž”αž‰αŸ’αž αžΆαž“αŸαŸ‡αŸ” αž”αŸ‰αž»αž“αŸ’αž˜αžΆαž“αžαŸ’αž„αŸƒαž“αŸαŸ‡ αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžœαžΆαž€αžΎαžαž‘αžΎαž„ PostgreSQL αž“αž·αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž‚αžΆαŸ†αž„αŸ” αžœαžΆαž‚αžΊαž‡αžΆαž€αžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„ "Can Applications Recover from fsync Failures?" αž”αž‰αŸ’αž αžΆαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαŸ’αžœαŸ‚αž„αž™αž›αŸ‹αž™αŸ‰αžΆαž„αž›αž˜αŸ’αž’αž·αžαŸ” αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŠαŸαž›αŸ’αž’αž”αŸ†αž•αž»αžαž…αŸ†αž–αŸ„αŸ‡αž”αž‰αŸ’αž αžΆαž“αŸαŸ‡αž‚αžΊαžαŸ’αžšαžΌαžœαž”αŸ’αžšαžΎ Direct I/O αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž‘αž„αŸ‹αž‡αžΆαžαž· O_SYNC αž¬αž‡αžΆαž˜αž½αž™αž‘αž„αŸ‹αž‡αžΆαžαž· O_DSYNC. αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž“αŸαŸ‡ αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž“αžΉαž„αžšαžΆαž™αž€αžΆαžšαžŽαŸαž’αŸ†αž–αžΈαž€αŸ†αž αž»αžŸαžŠαŸ‚αž›αž’αžΆαž…αž€αžΎαžαž‘αžΎαž„αž“αŸ…αž–αŸαž›αž’αž“αž»αžœαžαŸ’αžαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžŸαžšαžŸαŸαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž“αŸαŸ‡αžαž˜αŸ’αžšαžΌαžœαž±αŸ’αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžŸαžαž·αž”αžŽαŸ’αžŠαŸ„αŸ‡αž’αžΆαžŸαž“αŸ’αž“αžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„αŸ” αžŸαžΌαž˜αž’αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž’αŸ†αž–αžΈαžœαžΆαŸ” αž“αŸ…αž‘αžΈαž“αŸαŸ‡ ΠΈ αž“αŸ…αž‘αžΈαž“αŸαŸ‡.

αž€αžΆαžšαž”αžΎαž€αž―αž€αžŸαžΆαžšαžŠαŸ„αž™αž”αŸ’αžšαžΎαž‘αž„αŸ‹ O_SYNC αž“αž·αž„ O_DSYNC

αž…αžΌαžšαž™αžΎαž„αžαŸ’αžšαž›αž”αŸ‹αž‘αŸ…αž€αžΆαžšαž–αž·αž—αžΆαž€αŸ’αžŸαžΆαž’αŸ†αž–αžΈαž™αž“αŸ’αžαž€αžΆαžšαž›αžΈαž“αž»αž… αžŠαŸ‚αž›αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž€αžΆαžšαž•αŸ’αž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‡αžΆαž”αŸ‹αž›αžΆαž”αŸ‹αŸ” αž˜αžΆαž“αž“αŸαž™αžαžΆ αž™αžΎαž„αž€αŸ†αž–αž»αž„αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‘αž„αŸ‹αž‡αžΆαžαž· O_SYNC αž¬αž‘αž„αŸ‹αž‡αžΆαžαž· O_DSYNC αž“αŸ…αž–αŸαž›αž”αžΎαž€αž―αž€αžŸαžΆαžšαžŠαŸ„αž™αž”αŸ’αžšαžΎαž€αžΆαžšαž αŸ…αž”αŸ’αžšαž–αŸαž“αŸ’αž’ αž”αžΎαž€ (). αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž“αŸαŸ‡ αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžŸαžšαžŸαŸαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αž“αžΈαž˜αž½αž™αŸ—αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžŠαžΌαž…αž‡αžΆαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž“αžΈαž˜αž½αž™αŸ— write() αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αžšαŸ€αž„αž‚αŸ’αž“αžΆαž“αžΌαžœαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ fsync() ΠΈ fdatasync()αŸ” αž“αŸαŸ‡ αž›αž€αŸ’αžαžŽαŸˆαž”αž…αŸ’αž…αŸαž€αž‘αŸαžŸαžšαž”αžŸαŸ‹ POSIX αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž αŸ…αžαžΆ "αž€αžΆαžšαž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜ I/O File Integrity Completion" αž“αž·αž„ "Data Integrity Completion"αŸ” αž’αžαŸ’αžαž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž…αž˜αŸ’αž”αž„αž“αŸƒαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž“αŸαŸ‡αž‚αžΊαžαžΆαž˜αžΆαž“αžαŸ‚αž€αžΆαžšαž αŸ…αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž˜αž½αž™αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αžŠαžΎαž˜αŸ’αž”αžΈαž’αžΆαž“αžΆαž“αžΌαžœαž—αžΆαž–αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž“αŸƒαž‘αž·αž“αŸ’αž“αž“αŸαž™ αž˜αž·αž“αž˜αŸ‚αž“αž–αžΈαžšαž‘αŸ (αž§αž‘αžΆαž αžšαžŽαŸ βˆ’ write() ΠΈ fdatasync()) αž‚αž»αžŽαžœαž·αž”αžαŸ’αžαž·αž…αž˜αŸ’αž”αž„αž“αŸƒαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž“αŸαŸ‡αž‚αžΊαžαžΆαžšαžΆαž›αŸ‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžŸαžšαžŸαŸαžšαžŠαŸ„αž™αž”αŸ’αžšαžΎαž§αž”αž€αžšαžŽαŸαž–αž·αž–αžŽαŸŒαž“αžΆαž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αžŠαŸ‚αž›αž’αžΆαž…αž€αŸ†αžŽαžαŸ‹αž›αž‘αŸ’αž’αž—αžΆαž–αž“αŸƒαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž€αžΌαžŠαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαŸ”

αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ Direct I/O αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž‘αž„αŸ‹ O_DIRECT

αž€αžΆαžšαž αŸ…αžαžΆαž˜αž”αŸ’αžšαž–αŸαž“αŸ’αž’ open() αž‚αžΆαŸ†αž‘αŸ’αžšαž‘αž„αŸ‹αž‡αžΆαžαž· O_DIRECTαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž…αž“αžΆαž‘αžΎαž„αžŠαžΎαž˜αŸ’αž”αžΈαž†αŸ’αž›αž„αž€αžΆαžαŸ‹αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš αž’αž“αž»αžœαžαŸ’αžαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš I/O αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž‡αžΆαž˜αž½αž™αžŒαžΈαžŸαŸ” αž“αŸαŸ‡αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž‡αžΆαž…αŸ’αžšαžΎαž“αž˜αžΆαž“αž“αŸαž™αžαžΆ αžŸαžšαžŸαŸαžšαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŠαŸ‚αž›αž…αŸαž‰αžŠαŸ„αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž€αž”αŸ’αžšαŸ‚αžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž‘αŸ…αž‡αžΆαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŠαŸ‚αž›αž˜αžΆαž“αž”αŸ†αžŽαž„αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αžαžΆαžŸαŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‡αžΆαž‘αžΌαž‘αŸ…αž™αž“αŸ’αžαž€αžΆαžšαž“αŸαŸ‡αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž€αžΆαžšαž‡αŸ†αž“αž½αžŸαž˜αž»αžαž„αžΆαžšαž‘αŸαŸ” fsync() ឬ fdatasync(). αž€αžΆαžšαž–αž·αžαž‚αžΊαžαžΆαžŒαžΈαžŸαžαŸ’αž›αž½αž“αž―αž„αž’αžΆαž…αž’αŸ’αžœαžΎαž”αžΆαž“ αž€αžΆαžšαž–αž“αŸ’αž™αžΆαž–αŸαž›αž¬αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹ αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŸαž˜αžšαž˜αŸ’αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŸαžšαžŸαŸαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αŸ” αž αžΎαž™αž€αžΆαž“αŸ‹αžαŸ‚αž’αžΆαž€αŸ’αžšαž€αŸ‹αž‘αŸ…αž‘αŸ€αž αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž–αž·αžŸαŸαžŸαž˜αž½αž™αž…αŸ†αž“αž½αž“ αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš I/O αž”αžΆαž“αž’αŸ’αžœαžΎαž“αŸ…αž–αŸαž›αž”αŸ’αžšαžΎαž‘αž„αŸ‹ O_DIRECT, αž€αžΆαžšαž…αžΆαž€αŸ‹αž•αŸ’αžŸαžΆαž™ αž‘αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš buffed αž”αŸ’αžšαž–αŸƒαžŽαžΈαŸ” αž˜αž’αŸ’αž™αŸ„αž”αžΆαž™αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž”αŸ†αž•αž»αžαžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαž“αŸαŸ‡αž‚αžΊαžαŸ’αžšαžΌαžœαž”αŸ’αžšαžΎαž‘αž„αŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαž”αžΎαž€αž―αž€αžŸαžΆαžš O_DSYNCαžŠαŸ‚αž›αž“αžΉαž„αž˜αžΆαž“αž“αŸαž™αžαžΆ αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžŸαžšαžŸαŸαžšαž“αžΈαž˜αž½αž™αŸ—αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαžŠαŸ„αž™αž€αžΆαžšαž αŸ… fdatasync().

αžœαžΆαž”αžΆαž“αž”αŸ’αžšαŸ‚αž€αŸ’αž›αžΆαž™αžαžΆαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž―αž€αžŸαžΆαžš XFS αžαŸ’αž˜αžΈαŸ—αž“αŸαŸ‡αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜ "αž•αŸ’αž›αžΌαžœαž›αžΏαž“" αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ O_DIRECT|O_DSYNC- αž€αŸ†αžŽαžαŸ‹αžαŸ’αžšαžΆαž‘αž·αž“αŸ’αž“αž“αŸαž™αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž”αŸ’αž›αž»αž€αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžšαž‡αžΆαž“αŸ‹αž›αžΎαžŠαŸ„αž™αž”αŸ’αžšαžΎ O_DIRECT|O_DSYNCαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ XFS αž‡αŸ†αž“αž½αžŸαž±αŸ’αž™αž€αžΆαžšαžŸαž˜αŸ’αž’αžΆαžαžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹ αž“αžΉαž„αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŸαžšαžŸαŸαžš FUA αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž§αž”αž€αžšαžŽαŸαž‚αžΆαŸ†αž‘αŸ’αžšαžœαžΆαŸ” αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αžœαžΆαžŠαŸ„αž™αž”αŸ’αžšαžΎαž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ blktrace αž“αŸ…αž›αžΎαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž›αžΈαž“αž»αž… 5.4/αž’αŸŠαžΌαž”αŸŠαž»αž“αž‘αžΌ 20.04αŸ” αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž“αŸαŸ‡αž‚αž½αžšαžαŸ‚αž˜αžΆαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž‡αžΆαž„ αž–αŸ’αžšαŸ„αŸ‡αžœαžΆαžŸαžšαžŸαŸαžšαž…αŸ†αž“αž½αž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž’αž”αŸ’αž”αž”αžšαž˜αžΆαž‘αŸ…αž€αŸ’αž“αž»αž„αžαžΆαžŸ αž αžΎαž™αž”αŸ’αžšαžΎαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž˜αž½αž™ αž˜αž·αž“αž˜αŸ‚αž“αž–αžΈαžšαž‘αŸ (សរសេរ αž“αž·αž„αž›αž»αž”αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹)αŸ” αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαž€αžƒαžΎαž‰αžαŸ†αžŽαž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ… αž”αŸ†αžŽαŸ‡ αžαžΊαžŽαŸ‚αž›αž†αŸ’αž“αžΆαŸ† 2018 αžŠαŸ‚αž›αž’αž“αž»αžœαžαŸ’αžαž™αž“αŸ’αžαž€αžΆαžšαž“αŸαŸ‡αŸ” αž˜αžΆαž“αž€αžΆαžšαž–αž·αž—αžΆαž€αŸ’αžŸαžΆαž˜αž½αž™αž…αŸ†αž“αž½αž“αž’αŸ†αž–αžΈαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž“αŸαŸ‡αž…αŸ†αž–αŸ„αŸ‡αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž―αž€αžŸαžΆαžšαž•αŸ’αžŸαŸαž„αž‘αŸ€αž αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαžΆαž˜αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αžŠαžΉαž„ XFS αž‚αžΊαž‡αžΆαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž―αž€αžŸαžΆαžšαžαŸ‚αž˜αž½αž™αž‚αžαŸ‹αžŠαŸ‚αž›αž‚αžΆαŸ†αž‘αŸ’αžšαžœαžΆαžšαž αžΌαžαž˜αž€αžŠαž›αŸ‹αž–αŸαž›αž“αŸαŸ‡αŸ”

αž˜αž»αžαž„αžΆαžš sync_file_range()

αž›αžΈαž“αž»αž…αž˜αžΆαž“αž€αžΆαžšαž αŸ…αž‡αžΆαž”αŸ’αžšαž–αŸαž“αŸ’αž’ sync_file_range()αžŠαŸ‚αž›αž’αžΆαž…αž±αŸ’αž™αž’αŸ’αž“αž€αž”αž‰αŸ’αž…αŸ„αž‰αžαŸ‚αž•αŸ’αž“αŸ‚αž€αž“αŸƒαž―αž€αžŸαžΆαžšαž‘αŸ…αžαžΆαžŸ αž˜αž·αž“αž˜αŸ‚αž“αž―αž€αžŸαžΆαžšαž‘αžΆαŸ†αž„αž˜αžΌαž›αž‘αŸαŸ” αž€αžΆαžšαž αŸ…αž‘αžΌαžšαžŸαž–αŸ’αž‘αž“αŸαŸ‡αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž’αžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜ αž αžΎαž™αž˜αž·αž“αžšαž„αŸ‹αž…αžΆαŸ†αž±αŸ’αž™αžœαžΆαž”αž‰αŸ’αž…αž”αŸ‹αž“αŸ„αŸ‡αž‘αŸαŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžšαž™αŸ„αž„αž‘αŸ… sync_file_range() αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž“αž·αž™αžΆαž™αžαžΆ "αž‚αŸ’αžšαŸ„αŸ‡αžαŸ’αž“αžΆαž€αŸ‹αžŽαžΆαžŸαŸ‹" αŸ” αžœαžΆαž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŽαŸ‚αž“αžΆαŸ†αž±αŸ’αž™αž”αŸ’αžšαžΎαžœαžΆαž‘αŸαŸ” αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαž“αž·αž„αž‚αŸ’αžšαŸ„αŸ‡αžαŸ’αž“αžΆαž€αŸ‹ sync_file_range() αž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαž™αŸ‰αžΆαž„αž›αŸ’αž’αž“αŸ…αž€αŸ’αž“αž»αž„ αž“αŸαŸ‡ αžŸαž˜αŸ’αž—αžΆαžšαŸˆαŸ” αž‡αžΆαž–αž·αžŸαŸαžŸ αž€αžΆαžšαž αŸ…αž‘αžΌαžšαžŸαž–αŸ’αž‘αž“αŸαŸ‡αž αžΆαž€αŸ‹αžŠαžΌαž…αž‡αžΆαž”αŸ’αžšαžΎ RocksDB αžŠαžΎαž˜αŸ’αž”αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžαžΊαžŽαŸ‚αž›αž”αž‰αŸ’αž…αŸαž‰αž‘αž·αž“αŸ’αž“αž“αŸαž™ "αž€αžαŸ’αžœαž€αŸ‹" αž‘αŸ…αž€αŸ’αž“αž»αž„αžαžΆαžŸαŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸ…αž–αŸαž›αž‡αžΆαž˜αž½αž™αž‚αŸ’αž“αžΆαž“αŸ…αž‘αžΈαž“αŸ„αŸ‡αžŠαžΎαž˜αŸ’αž”αžΈαž’αžΆαž“αžΆαž”αžΆαž“αž“αžΌαžœαž€αžΆαžšαž•αŸ’αž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αžΆαž“αžŸαŸ’αžαŸαžšαž—αžΆαž–αžœαžΆαž€αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž”αŸ’αžšαžΎαž•αž„αžŠαŸ‚αžšαŸ” fdatasync()αŸ” αž“αŸαŸ‡ αž€αžΌαžŠ RocksDB αž˜αžΆαž“αž˜αžαž·αž‚αž½αžšαž±αŸ’αž™αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž˜αž½αž™αž…αŸ†αž“αž½αž“αž›αžΎαž”αŸ’αžšαž’αžΆαž“αž”αž‘αž“αŸαŸ‡αŸ” αž§αž‘αžΆαž αžšαžŽαŸαžœαžΆαž˜αžΎαž›αž‘αŸ…αžŠαžΌαž…αž‡αžΆαž€αžΆαžšαž αŸ… sync_file_range() αž“αŸ…αž–αŸαž›αž”αŸ’αžšαžΎ ZFS αž˜αž·αž“αž”αž‰αŸ’αž…αŸ„αž‰αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‘αŸ…αžαžΆαžŸαž‘αŸαŸ” αž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαž”αŸ’αžšαžΆαž”αŸ‹αžαŸ’αž‰αž»αŸ†αžαžΆ αž€αžΌαžŠαžŠαŸ‚αž›αž€αž˜αŸ’αžšαž”αŸ’αžšαžΎ αž’αžΆαž…αž˜αžΆαž“αž€αŸ†αž αž»αžŸαŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αžαŸ’αž‰αž»αŸ†αžŸαžΌαž˜αžŽαŸ‚αž“αžΆαŸ†αž€αž»αŸ†αž±αŸ’αž™αž”αŸ’αžšαžΎαž€αžΆαžšαž αŸ…αžαžΆαž˜αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž“αŸαŸ‡ αž›αž»αŸ‡αžαŸ’αžšαžΆαžαŸ‚αž…αžΆαŸ†αž”αžΆαž…αŸ‹αŸ”

αž€αžΆαžšαž αŸ…αžαžΆαž˜αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŠαžΎαž˜αŸ’αž”αžΈαž‡αž½αž™αž’αžΆαž“αžΆαž±αŸ’αž™αž‘αž·αž“αŸ’αž“αž“αŸαž™αž”αž“αŸ’αž

αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžŸαž“αŸ’αž“αž·αžŠαŸ’αž‹αžΆαž“αžαžΆαž˜αžΆαž“αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž…αŸ†αž“αž½αž“αž”αžΈαžŠαŸ‚αž›αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž’αž“αž»αžœαžαŸ’αžαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš I/O αž‡αžΆαž”αŸ‹αž›αžΆαž”αŸ‹αŸ” αž–αž½αž€αž‚αŸαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‘αžΆαž˜αž‘αžΆαžšαž€αžΆαžšαž αŸ…αž˜αž»αžαž„αžΆαžš fsync() αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαžαžŠαŸ‚αž›αž―αž€αžŸαžΆαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαŸ” αž‘αžΆαŸ†αž„αž“αŸαŸ‡αž‚αžΊαž‡αžΆαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαŸ–

  1. αž€αžΆαžšαž αŸ…αž˜αž»αžαž„αžΆαžš fdatasync() ឬ fsync() αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž˜αž»αžαž„αžΆαžš write() (αž”αŸ’αžšαžΎαž”αŸ’αžšαžŸαžΎαžšαž‡αžΆαž„ fdatasync()).
  2. αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž’αŸ’αž“αž€αž–αž·αž–αžŽαŸŒαž“αžΆαž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž”αžΎαž€αžŠαŸ„αž™αž‘αž„αŸ‹ O_DSYNC ឬ O_SYNC (αž”αŸ’αžšαžŸαžΎαžšαž‡αžΆαž„ - αž‡αžΆαž˜αž½αž™αž‘αž„αŸ‹ O_DSYNC).
  3. αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ pwritev2() αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž‘αž„αŸ‹αž‡αžΆαžαž· RWF_DSYNC ឬ RWF_SYNC (αž“αž·αž™αž˜αž‡αžΆαž˜αž½αž™αž‘αž„αŸ‹αž‡αžΆαžαž· RWF_DSYNC).

αž€αŸ†αžŽαžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž

αžαŸ’αž‰αž»αŸ†αž˜αž·αž“αž”αžΆαž“αžœαžΆαžŸαŸ‹αžœαŸ‚αž„αžŠαŸ„αž™αž”αŸ’αžšαž»αž„αž”αŸ’αžšαž™αŸαžαŸ’αž“αž“αžΌαžœαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸƒαž™αž“αŸ’αžαž€αžΆαžšαž•αŸ’αžŸαŸαž„αŸ—αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžŸαŸŠαžΎαž”αž’αž„αŸ’αž€αŸαžαž“αŸ„αŸ‡αž‘αŸαŸ” αž—αžΆαž–αžαž»αžŸαž‚αŸ’αž“αžΆαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αž“αŸƒαž€αžΆαžšαž„αžΆαžšαžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαž‚αžΊαžαžΌαž…αžŽαžΆαžŸαŸ‹αŸ” αž“αŸαŸ‡αž˜αžΆαž“αž“αŸαž™αžαžΆαžαŸ’αž‰αž»αŸ†αž’αžΆαž…αžαž»αžŸ αž αžΎαž™αž€αŸ’αž“αž»αž„αž›αž€αŸ’αžαžαžŽαŸ’αžŒαž•αŸ’αžŸαŸαž„αž‘αŸ€αž αžšαžΏαž„αžŠαžΌαž…αž‚αŸ’αž“αžΆαž’αžΆαž…αž”αž„αŸ’αž αžΆαž‰αž›αž‘αŸ’αž’αž•αž›αžαž»αžŸαž‚αŸ’αž“αžΆ αž‡αžΆαžŠαŸ†αž”αžΌαž„ αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹αžŠαž›αŸ‹αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αž αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž’αŸ†αž–αžΈαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹αžŠαž›αŸ‹αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžαž·αž…αž‡αžΆαž„αŸ”

  1. αž€αžΆαžšαžŸαžšαžŸαŸαžšαž‡αžΆαž“αŸ‹αž›αžΎαž‘αž·αž“αŸ’αž“αž“αŸαž™αž―αž€αžŸαžΆαžšαž‚αžΊαž›αžΏαž“αž‡αžΆαž„αž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‘αŸ…αž―αž€αžŸαžΆαžšαž˜αž½αž™ (αž€αžΆαžšαž€αžΎαž“αž‘αžΎαž„αž“αŸƒαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž’αžΆαž…αž˜αžΆαž“αž–αžΈ 2-100%) αŸ” αž€αžΆαžšαž—αŸ’αž‡αžΆαž”αŸ‹αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‘αŸ…αž―αž€αžŸαžΆαžšαžαž˜αŸ’αžšαžΌαžœαž±αŸ’αž™αž˜αžΆαž“αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ…αž›αžΎαž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αŸαžαžΆαžšαž”αžŸαŸ‹αž―αž€αžŸαžΆαžš αžŸαžΌαž˜αŸ’αž”αžΈαžαŸ‚αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž αŸ…αžšαž”αžŸαŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž€αŸαžŠαŸ„αž™αŸ” fallocate()αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‘αŸ†αž αŸ†αž“αŸƒαž₯αž‘αŸ’αž’αž·αž–αž›αž“αŸαŸ‡αž’αžΆαž…αž”αŸ’αžšαŸ‚αž”αŸ’αžšαž½αž›αŸ” αžαŸ’αž‰αž»αŸ†αžŸαžΌαž˜αžŽαŸ‚αž“αžΆαŸ†αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αŸ’αž’αž”αŸ†αž•αž»αž αžŠαžΎαž˜αŸ’αž”αžΈαž αŸ…αž‘αžΌαžšαžŸαž–αŸ’αž‘ fallocate() αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ‚αž„αž…αŸ‚αž€αž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžšαž‡αžΆαž˜αž»αž“αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ αž…αž“αŸ’αž›αŸ„αŸ‡αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαžαŸ‚αž”αŸ†αž–αŸαž‰αžŠαŸ„αž™αž›αŸαžαžŸαžΌαž“αŸ’αž™ αž αžΎαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž αŸ… fsync(). αžœαžΆαž“αžΉαž„αž’αŸ’αžœαžΎαž±αŸ’αž™αž”αŸ’αž›αž»αž€αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž―αž€αžŸαžΆαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžαžΆ "αž”αŸ‚αž„αž…αŸ‚αž€" αž‡αŸ†αž“αž½αžŸαž±αŸ’αž™ "αž˜αž·αž“αž”αžΆαž“αž”αŸ‚αž„αž…αŸ‚αž€" αŸ” αž“αŸαŸ‡αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž€αžΆαžšαž€αŸ‚αž›αž˜αŸ’αž’αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžαž·αž…αžαž½αž… (αž”αŸ’αžšαž αŸ‚αž› 2%) αŸ” αžŠαžΌαž…αž‚αŸ’αž“αžΆαž“αŸαŸ‡αž•αž„αžŠαŸ‚αžš αžαžΆαžŸαž˜αž½αž™αž…αŸ†αž“αž½αž“αž’αžΆαž…αž˜αžΆαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž…αžΌαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αŸ’αž›αž»αž€αžŠαŸ†αž”αžΌαž„αž™αžΊαžαž‡αžΆαž„αž§αž”αž€αžšαžŽαŸαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ” αž“αŸαŸ‡αž˜αžΆαž“αž“αŸαž™αžαžΆαž€αžΆαžšαž”αŸ†αž–αŸαž‰αž…αž“αŸ’αž›αŸ„αŸ‡αžŠαŸ„αž™αž›αŸαžαžŸαžΌαž“αŸ’αž™αž’αžΆαž…αž“αžΆαŸ†αž‘αŸ…αžšαž€αž€αžΆαžšαž€αŸ‚αž›αž˜αŸ’αž’αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžŠαŸαžŸαŸ†αžαžΆαž“αŸ‹ (αž”αŸ’αžšαž αŸ‚αž› 100%) αŸ” αž‡αžΆαž–αž·αžŸαŸαžŸαžœαžΆαž’αžΆαž…αž€αžΎαžαž‘αžΎαž„αž‡αžΆαž˜αž½αž™αžαžΆαžŸαŸ” AWS EBS (αž“αŸαŸ‡β€‹αž‡αžΆβ€‹αž‘αž·αž“αŸ’αž“αž“αŸαž™β€‹αž˜αž·αž“β€‹αž•αŸ’αž›αžΌαžœαž€αžΆαžš αžαŸ’αž‰αž»αŸ†β€‹αž˜αž·αž“β€‹αž’αžΆαž…β€‹αž”αž‰αŸ’αž‡αžΆαž€αŸ‹β€‹αž”αžΆαž“β€‹αž‘αŸ)αŸ” αžŠαžΌαž…αž‚αŸ’αž“αžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž•αŸ’αž‘αž»αž€αŸ” GCP αžαžΆαžŸαž‡αžΆαž”αŸ‹αž›αžΆαž”αŸ‹ (αž αžΎαž™αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž–αŸαžαŸŒαž˜αžΆαž“αž•αŸ’αž›αžΌαžœαž€αžΆαžšαžšαž½αž…αž αžΎαž™ αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αžŠαŸ„αž™αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αž) αž’αŸ’αž“αž€αž‡αŸ†αž“αžΆαž‰αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž”αžΆαž“αž’αŸ’αžœαžΎαžŠαžΌαž…αž‚αŸ’αž“αžΆαŸ” αž€αžΆαžšαžŸαž„αŸ’αž€αŸαžαž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αžαžΆαžŸαž•αŸ’αžŸαŸαž„αŸ—αž‚αŸ’αž“αžΆαŸ”
  2. αž€αžΆαžšαž αŸ…αžαžΆαž˜αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžαž·αž…αž‡αžΆαž„αž˜αž»αž“ αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΆαž“αŸ‹αžαŸ‚αžαŸ’αž–αžŸαŸ‹ (αž€αžΆαžšαž‘αž‘αž½αž›αž”αžΆαž“αž”αŸ’αžšαž αŸ‚αž› 5%) αŸ” αžœαžΆαž˜αžΎαž›αž‘αŸ…αžŠαžΌαž…αž‡αžΆαž€αžΆαžšαž αŸ…αž‘αžΌαžšαžŸαŸαž–αŸ’αž‘ open() αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž‘αž„αŸ‹αž‡αžΆαžαž· O_DSYNC αž¬αž αŸ… pwritev2() αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž‘αž„αŸ‹αž‡αžΆαžαž· RWF_SYNC αž€αžΆαžšαž αŸ…αž‘αžΌαžšαžŸαŸαž–αŸ’αž‘αž›αžΏαž“αž‡αžΆαž„αž˜αž»αž“ fdatasync(). αžαŸ’αž‰αž»αŸ†αžŸαž„αŸ’αžŸαŸαž™αžαžΆαž…αŸ†αžŽαž»αž…αž“αŸ…αž‘αžΈαž“αŸαŸ‡αž‚αžΊαžαžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž“αŸαŸ‡ αž€αžΆαžšαž–αž·αžαžŠαŸ‚αž›αžαžΆαž€αžΆαžšαž αŸ…αžαžΆαž˜αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžαž·αž…αž‡αžΆαž„αž˜αž»αž“αžαŸ’αžšαžΌαžœαžαŸ‚αž’αž“αž»αžœαžαŸ’αžαžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαžŠαžΌαž…αž‚αŸ’αž“αžΆ (αž€αžΆαžšαž αŸ…αž˜αž½αž™αž‡αŸ†αž“αž½αžŸαž±αŸ’αž™αž–αžΈαžš) αžŠαžΎαžšαžαž½αž“αžΆαž‘αžΈαž˜αž½αž™αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž—αžΆαž–αžαž»αžŸαž‚αŸ’αž“αžΆαž“αŸƒαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž‚αžΊαžαžΌαž…αžŽαžΆαžŸαŸ‹αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž’αŸ’αž“αž€αž’αžΆαž…αž˜αž·αž“αž’αžΎαž–αžΎαžœαžΆαž”αžΆαž“αž™αŸ‰αžΆαž„αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž αžΎαž™αž”αŸ’αžšαžΎαž’αŸ’αžœαžΈαž˜αž½αž™αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αž˜αž·αž“αž“αžΆαŸ†αž±αŸ’αž™αž˜αžΆαž“αž—αžΆαž–αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž“αŸƒαžαž€αŸ’αž€αžœαž·αž‡αŸ’αž‡αžΆαžšαž”αžŸαŸ‹αžœαžΆαŸ”

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž›αžΎαž”αŸ’αžšαž’αžΆαž“αž”αž‘αž“αŸƒαž€αžΆαžšαžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž”αŸ’αžšαž€αž”αžŠαŸ„αž™αž“αž·αžšαž“αŸ’αžαžšαž—αžΆαž– αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž“αŸαŸ‡αž‡αžΆαžŸαž˜αŸ’αž—αžΆαžšαž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž˜αž½αž™αž…αŸ†αž“αž½αž“αŸ–

  • αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž…αžΌαž›αž”αŸ’αžšαžΎ I/O - αž‘αž·αžŠαŸ’αž‹αž—αžΆαž–αž‘αžΌαž‘αŸ…αž“αŸƒαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž“αŸƒαž™αž“αŸ’αžαž€αžΆαžšαž”αž‰αŸ’αž…αžΌαž›/αž‘αž·αž“αŸ’αž“αž•αž›αŸ”
  • αž’αžΆαž“αžΆαž‘αž·αž“αŸ’αž“αž“αŸαž™αž‘αŸ…αžŠαž›αŸ‹αžαžΆαžŸ - αžšαžΏαž„αž’αŸ†αž–αžΈαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž€αžΎαžαž‘αžΎαž„αž…αŸ†αž–αŸ„αŸ‡αž‘αž·αž“αŸ’αž“αž“αŸαž™αž“αŸ…αž›αžΎαž•αŸ’αž›αžΌαžœαž–αžΈαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‘αŸ…αžαžΆαžŸαŸ”
  • αž–αŸαž›αžŽαžΆαžŠαŸ‚αž›αž’αŸ’αž“αž€αž‚αž½αžšαž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αžαžαžŠαŸ‚αž›αž˜αžΆαž“ - αž…αž˜αŸ’αž›αžΎαž™αž…αŸ†αž–αŸ„αŸ‡αžŸαŸ†αžŽαž½αžšαžαžΆαžαžΎαž–αŸαž›αžŽαžΆαžαŸ’αžšαžΌαžœαžŠαžΆαž€αŸ‹αž–αžΆαž€αŸ’αž™ fsync() αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαžαŸ” αžŸαžšαž»αž”αž˜αž€ αžœαžΆαž”αŸ’αžšαŸ‚αžαžΆαž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž’αŸ’αžœαžΎαžœαžΆαž“αŸ…αž–αŸαž›αž”αž„αŸ’αž€αžΎαžαž―αž€αžŸαžΆαžšαžαŸ’αž˜αžΈ αž αžΎαž™αž αŸαžαž»αž•αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž“αŸαŸ‡αž‚αžΊαžαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž›αžΈαž“αž»αž…αž’αžΆαž…αž˜αžΆαž“αž―αž€αžŸαžΆαžšαž™αŸ„αž„αž‡αžΆαž…αŸ’αžšαžΎαž“αž…αŸ†αž–αŸ„αŸ‡αž―αž€αžŸαžΆαžšαžŠαžΌαž…αž‚αŸ’αž“αžΆαŸ”
  • SQL Server αž“αŸ…αž›αžΎαž›αžΈαž“αž»αž…αŸ– FUA Internals - αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž›αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‡αžΆαž”αŸ‹αž›αžΆαž”αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž“αŸ…αž€αŸ’αž“αž»αž„ SQL Server αž“αŸ…αž›αžΎαžœαŸαž‘αž·αž€αžΆαž›αžΈαž“αž»αž…αŸ” αž˜αžΆαž“αž€αžΆαžšαž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αž‚αž½αžšαž±αŸ’αž™αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž˜αž½αž™αž…αŸ†αž“αž½αž“αžšαžœαžΆαž„αž€αžΆαžšαž αŸ…αž”αŸ’αžšαž–αŸαž“αŸ’αž’ Windows αž“αž·αž„ Linux αž“αŸ…αž‘αžΈαž“αŸαŸ‡αŸ” αžαŸ’αž‰αž»αŸ†αžŸαŸ’αž‘αžΎαžšαžαŸ‚αž”αŸ’αžšαžΆαž€αžŠαžαžΆαžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αžšαž‚αž»αžŽαž…αŸ†αž–αŸ„αŸ‡αžŸαž˜αŸ’αž—αžΆαžšαŸˆαž“αŸαŸ‡αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαŸ€αž“αž’αŸ†αž–αžΈαž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž– FUA αž“αŸƒ XFS αŸ”

αžαžΎαž’αŸ’αž“αž€αž’αŸ’αž›αžΆαž”αŸ‹αž”αžΆαžαŸ‹αž”αž„αŸ‹αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž’αŸ’αž“αž€αž‚αž·αžαžαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αžŠαŸ„αž™αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž“αŸ…αž›αžΎαžαžΆαžŸαž‘αŸ?

αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž™αžΌαžšαž’αž„αŸ’αžœαŸ‚αž„ αž“αž·αž„ APIs αž―αž€αžŸαžΆαžšαž›αžΈαž“αž»αž…

αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž™αžΌαžšαž’αž„αŸ’αžœαŸ‚αž„ αž“αž·αž„ APIs αž―αž€αžŸαžΆαžšαž›αžΈαž“αž»αž…

αž”αŸ’αžšαž—αž–: www.habr.com