Блоки какого размера использует `truncate --io-blocks`?

Ваши цитаты слишком сильны.

Действительно.

' - это «сильные» кавычки, которые означают, что расширения параметров, расширения подоболочки, расширения истории и т.п. в них не работают.

$ echo '$(echo foo)'
$(echo foo)
$ echo "$(echo foo)"
foo
1
18.09.2017, 00:04
1 ответ

Ничего из вышеперечисленного.

Размер блока связан с параметрами файловой системы, выбранными во время mkfs, и его можно узнать, выполнив stat()для файла. Он не имеет отношения к базовому блочному устройству, на котором хранится файловая система (, если таковая имеется ).

Например, с GNUstat:

$ /usr/bin/stat. | grep IO.Block       
  Size: 71680           Blocks: 144        IO Block: 2048   directory

Если вы предпочитаете более программный вид, системный вызов stat()можно сделать в perlс:

$ perl -e '@x=stat("."); print $x[11]'
2048

В обоих случаях мы получаем "2048" в качестве ответа для этой файловой системы.

Мы можем это проверить:

$ truncate -o -s 1 foo      
$ ls -l foo
-rw-r--r-- 1 sweh sweh 2048 Sep 17 10:28 foo

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

$ perl -e '@x=stat("/"); print $x[11]'
4096

$ perl -e '@x=stat("/news"); print $x[11]'
2048

Для файловых систем Linux extxэто делается с помощью mke2fsс флагом -b:

   -b block-size
          Specify  the  size  of blocks in bytes.  Valid block-size values
          are 1024, 2048 and 4096 bytes per block.  If omitted, block-size
          is  heuristically  determined  by  the  filesystem  size and the
          expected usage of the filesystem (see the -T option).  If block-
          size  is preceded by a negative sign ('-'), then mke2fs will use
          heuristics to determine the appropriate  block  size,  with  the
          constraint  that  the  block  size  will  be at least block-size
          bytes.  This  is  useful  for  certain  hardware  devices  which
          require that the blocksize be a multiple of 2k.
1
27.01.2020, 23:44

Теги

Похожие вопросы