Распространенные способы создания файлов:
- touch
- vi(m)
- tee
-
>
или>>
Но эти типы подходят только для создания небольших текстовых файлов, в некоторых случаях для нужд тестирования нужно быстро создать очень большой файл, который может стоить сотни ГБ. В настоящее время, чтобы использовать вышеуказанные команды, вам, возможно, придется подождать сутки, что очень неэффективно.
Ниже приведены некоторые из методов, которые я обычно использую
1. dd
Команда dd может считывать данные из стандартного ввода или из указанного файла и копировать их в новый файл.
$ dd if=/dev/zero of=big_file count=10 bs=1G
Используйте команду Time, вы можете рассчитать файл, чтобы создать 10G, требуется много времени?
$ time dd if=/dev/zero of=big_file count=10 bs=1G
10+0 records in
10+0 records out
10737418240 bytes (11 GB) copied, 7.93627 s, 1.4 GB/s
real 0m7.941s
user 0m0.000s
sys 0m7.935s
Это заняло почти 8 секунд
$ ls -lh big_file
-rw-r--r-- 1 root root 10G Jun 2 10:57 big_file
2. fallocate
Команда fallocate может предварительно выделить физическое пространство для файлов.-l
За ним следует размер пространства, единицей измерения по умолчанию являются байты. За ним также могут следовать k, m, g, t, p, e, чтобы указать единицу измерения, представляющую КБ, МБ, ГБ, ТБ, ПБ, ЭБ соответственно.
$ fallocate -l 10G big_file
Используя команду time, сколько времени потребуется для создания файла 10G?
$ time fallocate -l 10G big_file
real 0m0.002s
user 0m0.000s
sys 0m0.001s
На самом деле всего 0,001 секунды.
$ ls -lh big_file
-rw-r--r-- 1 root root 10G Jun 2 11:01 big_file
Используйте команду du, чтобы узнать, действительно ли файл размером 10G создал файл размером 10G? Судя по результатам, да.
$ du -sh big_file
10G big_file
3. truncate
Команда Trunchate может уменьшить или расширить файл до указанного размера, используя-s
Параметр устанавливает размер.
$ truncate -s 10G big_file
Используя команду time, сколько времени потребуется для создания файла 10G?
$ time truncate -s 10G big_file
real 0m0.001s
user 0m0.000s
sys 0m0.001s
Тоже всего 0,001 секунды.
Однако, в отличие от fallocate, файл, созданный с помощью allocate, имеет реальный размер, а файл, созданный с помощью truncate, — нет.
При использовании команд ls и du результаты будут другими.
$ ls -lh big_file
-rw-r--r-- 1 root root 10G Jun 2 11:11 big_file
$ du -sh big_file
0 big_file
Видно, что роль truncate заключается в указании размера файла, и если файл не существует, он будет создан. Если размер указанного файла меньше исходного размера, содержимое будет потеряно.
Размер файла, указанный этой командой, на самом деле является виртуальным. Просто отображаемый размер. Если вы укажете очень большой файл. На самом деле, остальное пространство на сервере не уменьшится.
Выше приведены несколько методов, которые я обычно использую для создания больших файлов, которые можно выбирать в соответствии с различными сценариями использования.Я обычно использую fallocate, который достаточно быстр и также занимает место на диске в реальной жизни, что соответствует реальному тесту. сценарии.