Я использую Ubuntu 11.04, и мне интересно, как найти размер блока выделения? Есть ли команда в Ubuntu, чтобы найти это? Кроме того, в зависимости от размера единицы выделения изменяется общий объем используемого места на жестком диске при изменении файла? Я проверил размеры файлов, используя ls
и du -b
, и в обоих случаях я получаю одинаковые значения.
Включая данные:
sudo tune2fs -l <file system>
Block count: 8052736
Reserved block count: 402636
Free blocks: 2797402
First block: 0
Block size: 4096
Reserved GDT blocks: 1022
Blocks per group: 32768
Inode blocks per group: 512
Flex block group size: 16
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
Journal backup: inode blocks
Итак, если размер блока составляет 4096 байт, файлы размером менее 4096 занимают 4096 байт памяти на жестком диске, как насчет файлов, которые больше чем 4096 байт, сколько места они занимают? Есть ли команда найти то же самое?
Редактирование верхнего поста:
Преимущественно найти размер:
temp = int(size/block) if mod(size/block) != 0: temp += 1 temp = temp*block print temp
, чтобы узнать, сколько блоков имеет файл на диске:
ls -s
где блок -size - размер блока раздела
, а размер на диске - размер блока * количество блоков
Объяснение различий в терминологии размера блока
sudo fdisk -l /dev/sda
[ 119] где / dev / sda - рассматриваемый жесткий диск
Disk /dev/sda: 500.1 GB, 500107862016 bytes 255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000c1f6bЭто говорит вам о нескольких вещах. Кто-то еще уже сказал, что лучше так цитата:
Device Boot Start End Blocks Id System /dev/sda1 * 63 498014 248976 83 Linux /dev/sda2 498015 976768064 488135025 5 Extended /dev/sda5 498078 976768064 488134993+ 83 Linux
The problem with this is that there are four distinct units that you must be keeping in mind. To make things even worse, two of these units bear the same name. These are the different units: 1. Hardware block size, "sector size" 2. Filesystem block size, "block size" 3. Kernel buffer cache block size, "block size" 4. Partition table block size, "cylinder size" To differentiate between the filesystem block size and the buffer cache block size, I will follow FAT terminology and use "cluster size" for the filesystem block size. The sector size is the units that the hardware deals with. This ranges between different hardware types, but most PC-style hardware (floppies, IDE disks, etc.) use 512 byte sectors. The cluster size is the allocation unit that the filesystem uses, and is what causes fragmentation - I'm sure you know about that. On a moderately sized ext3 filesystem, this is usually 4096 bytes, but you can check that with dumpe2fs. Remember that these are also usually called "blocks", only that I refer to them as clusters here. The cluster size is what gets returned in st_blksize in the stat buffer, in order for programs to be able to calculate the actual disk usage of a file. The block size is the size of the buffers that the kernel uses internally when it caches sectors that have been read from storage devices (hence the name "block device"). Since this is the most primitive form of storage in the kernel, all filesystem cluster sizes must be multiples of this. This block size is also what is almost always referred to by userspace programs. For example, when you run "du" without the -h or -H options, it will return how many of these blocks a file takes up. df will also report sizes in these blocks, the "Blocks" column in the fdisk -l output is of this type, and so on. It is what is most commonly referred to as a "block". Two disk sectors fit into each block. The cylinder size is only used in the partition table and by the BIOS (and the BIOS isn't used by Linux). "df" only operates on filesystems, so, no, it can't be used without a filesystem - without a filesystem, the data that it would return doesn't exist. "du" operates on individual files.
из здесь .