
Estou executando o Ubuntu 11.04 e estou me perguntando como encontrar o tamanho da unidade de alocação? Existe um comando no Ubuntu para descobrir isso? Dependendo também do tamanho da unidade de alocação, a quantidade total de espaço no disco rígido usado em um arquivo muda? Verifiquei os tamanhos dos arquivos usando ls
e du -b
em ambos os casos estou obtendo os mesmos valores.
Incluindo dados:
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
Portanto, se o tamanho do bloco for 4.096 bytes, os arquivos menores que 4.096 ocupam 4.096 bytes de armazenamento no disco rígido, e os arquivos maiores que 4.096 bytes, quanto espaço eles ocupam? Existe um comando para encontrar o mesmo?
Responder1
Edição da postagem principal:
Encontre o tamanho preventivamente:
temp = int(tamanho/bloco) if mod(tamanho/bloco) != 0: temperatura += 1 temp = temp*bloco temperatura de impressão
para saber quantos blocos um arquivo possui no disco:
eus -s
onde o tamanho do bloco é o tamanho do bloco de partição
e o tamanho do disco é o tamanho do bloco * número de blocos
Explicação sobre diferenças de terminologia de tamanho de bloco
sudo fdisk -l /dev/sda
onde /dev/sda é o disco rígido em questão
Disco /dev/sda: 500,1 GB, 500107862016 bytes 255 cabeçotes, 63 setores/pista, 60.801 cilindros, total de 976773168 setores Unidades = setores de 1 * 512 = 512 bytes Tamanho do setor (lógico/físico): 512 bytes/512 bytes Tamanho de E/S (mínimo/ideal): 512 bytes/512 bytes Identificador de disco: 0x000c1f6b Sistema de identificação de blocos de início de inicialização do dispositivo /dev/sda1 * 63 498014 248976 83 Linux /dev/sda2 498015 976768064 488135025 5 Estendido /dev/sda5 498078 976768064 488134993+ 83 LinuxIsso lhe diz várias coisas. Alguém já disse isso melhor, então blockquote:
O problema com isso é que existem quatro unidades distintas que você deve ter em mente. Para piorar ainda mais a situação, duas dessas unidades têm o mesmo nome. Estas são as diferentes unidades:
- Tamanho do bloco de hardware, "tamanho do setor"
- Tamanho do bloco do sistema de arquivos, "tamanho do bloco"
- Tamanho do bloco de cache do buffer do kernel, "tamanho do bloco"
- Tamanho do bloco da tabela de partição, "tamanho do cilindro"
Para diferenciar entre o tamanho do bloco do sistema de arquivos e o tamanho do bloco do cache do buffer, seguirei a terminologia FAT e usarei "tamanho do cluster" para o tamanho do bloco do sistema de arquivos.
O tamanho do setor são as unidades com as quais o hardware lida. Isso varia entre diferentes tipos de hardware, mas a maioria do hardware estilo PC (disquetes, discos IDE, etc.) usa setores de 512 bytes.
O tamanho do cluster é a unidade de alocação que o sistema de arquivos usa e é o que causa a fragmentação - tenho certeza que você sabe disso. Em um sistema de arquivos ext3 de tamanho moderado, geralmente são 4.096 bytes, mas você pode verificar isso com dumpe2fs. Lembre-se de que eles também são geralmente chamados de "blocos", só que aqui me refiro a eles como clusters.
O tamanho do cluster é o que é retornado em st_blksize no buffer estatístico, para que os programas possam calcular o uso real do disco de um arquivo.
O tamanho do bloco é o tamanho dos buffers que o kernel usa internamente quando armazena em cache setores que foram lidos de dispositivos de armazenamento (daí o nome "dispositivo de bloco"). Como esta é a forma mais primitiva de armazenamento no kernel, todos os tamanhos de cluster do sistema de arquivos devem ser múltiplos disso. Esse tamanho de bloco também é quase sempre referido pelos programas do espaço do usuário. Por exemplo, quando você executa "du" sem as opções -h ou -H, ele retornará quantos desses blocos um arquivo ocupa. df também reportará tamanhos nesses blocos, a coluna "Blocos" na saída fdisk -l é desse tipo e assim por diante. É o que é mais comumente chamado de "bloco". Dois setores de disco cabem em cada bloco.
O tamanho do cilindro é usado apenas na tabela de partição e pelo BIOS (e o BIOS não é usado pelo Linux).
"df" opera apenas em sistemas de arquivos, então não, não pode ser usado sem um sistema de arquivos - sem um sistema de arquivos, os dados que ele retornaria não existem. "du" opera em arquivos individuais.
deaqui.
Responder2
stat
comando executado com um ponto de montagem como parâmetro, mostra o tamanho do cluster do sistema de arquivos na IO Block
propriedade
stat /dev/shm/minifs-mounted
mostrará
File: /dev/shm/minifs-mounted
Size: 1024 Blocks: 2 IO Block: 1024 directory
Device: 709h/1801d Inode: 2 Links: 3
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2022-12-27 14:03:15.000000000 -0300
Modify: 2022-12-27 14:01:50.000000000 -0300
Change: 2022-12-27 14:01:50.000000000 -0300
Birth: -
as informações acima pertencem a um sistema de arquivos criado com
cd /dev/shm
dd if=/dev/zero bs=1M count=100 of=minifs.img
mkfs.ext4 -b 1024 ./minifs.img
mount -o loop minifs.img minifs-mounted
forçando cluster de 1024 bytes de comprimento