Sparse files

Oct 25, 2008 23:31

Собственно, ответ на вчерашнюю задачку :) Это вовсе не баг, а, как правильно догадался 13_49, особая технология в некоторых файловых системах (в моем случае это была zfs) -- sparse files: http://blogs.sun.com/bonwick/entry/seek_hole_and_seek_data

Повторяется предельно просто, например, так:

ssize_t r = pwrite(fd, buf, nbytes, 9223342545346440969ULL);

Данные будут записаны по смещению 9223342545346440969, но сам файл при это девять миллионов терабайт не займет. В промежутке 0 -- 9223342545346440969 образуется дыра (hole), которая места не отожрет.

Штуковина забавная, но как ей воспользоваться я пока не придумал :) Разве что сделать такую хеш-таблицу в файле, где ключом будет являться напрямую смещение. Тем самым можно избежать пересборки хеша при его росте :)

sparse files, freebsd, filesystems, zfs

Previous post Next post
Up