Как изменить количество предварительно выделенных блоков XFS? - PullRequest
0 голосов
/ 03 ноября 2011

Я написал простую программу и запустил программу на 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. Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 03 ноября 2011

Я нашел ответ, разместив ответ здесь, чтобы другие, кто сталкивался с проблемой, могли отослать его.

mount -t xfs -o allocsize = 4096 точка монтирования устройства

Параметр allocsize используется для настройки размера буфера.

0 голосов
/ 25 июня 2016

То, что вы видите, - это спекулятивное предварительное распределение xfs, которое является эвристикой, используемой для предотвращения фрагментации файлов по мере их роста.Для получения дополнительной информации см. эту запись часто задаваемых вопросов .

Вы правы, что опция -o allocsize = XXX отключает эту эвристику.Ваша попытка использовать "-r extsize = XXX" не удалась, потому что эта опция предназначена только для подсоба реального времени, который вы почти наверняка не используете.

...