Я написал простую программу и запустил программу на ext4 и xfs.
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#include <errno.h>
int
main(int argc, char *argv[])
{
int fd;
char *file_name = argv[1];
struct stat buf;
fd = open (file_name, O_RDWR|O_CREAT);
if (fd == -1) {
printf ("Error: %s\n", strerror(errno));
return -1;
}
write (fd, "hello", sizeof ("hello"));
fstat (fd, &buf);
printf ("st_blocks: %lu\n", buf.st_blocks);
stat (file_name, &buf);
printf ("st_blocks: %lu\n", buf.st_blocks);
close (fd);
stat (file_name, &buf);
printf ("st_blocks: %lu\n", buf.st_blocks);
return 0;
}
вывод на ext4:
ст_блоков: 8
st_blocks: 8
st_blocks: 8
вывод на xfs:
st_blocks: 128
st_blocks: 128
st_blocks: 8
Затем я изучил xfs и нашел возможность изменить размер экстента при запуске mkfs.xfs.
пример: mkfs.xfs -r extsize = 4096 / dev / sda1
Но все же я получаю тот же вывод на XFS. Может ли кто-нибудь предоставить более подробную информацию о том, как изменить st_blocks. Заранее спасибо.