How big is an inode?
Inodes são metadados que contêm informações sobre um arquivo / diretório, etc. O tamanho da estrutura do inode é de 128 bytes por inode em um kernel padrão não modificado.
The output from tune2fs says its 256 for my system, so is that 256 byes?
Quando você cria seu sistema de arquivos, pode alterar o tamanho do inode. Algumas distribuições do Linux podem alterar esse valor e algumas ferramentas de criação do ext2 possuem outros tamanhos de inode por padrão. mke2fs, por exemplo, tem um padrão de 256.
Manualmente você pode fazer:
mke2fs -I 128
para obter o valor de 128 bytes. Nunca menos que isso. Você pode alterar esse valor com -O resize_inode
Para resumir tudo isso: mínimo de 128 bytes.
How are large directories stored? From what I understand, a directory is represented on the filesystem as an inode who's contents are a list of filenames and inode numbers that represent the contents of the directory. Are the contents stored in the inode itself, or in this case are they stored as "data" the same way file data is stored?
Um diretório é marcado como um diretório no primeiro valor da estrutura inode do ext2, que é "i_mode". No kernel:
struct ext2_inode {
__le16 i_mode; /* File mode */
︙
[fs / ext2 / ext2.h no kernel descreve tudo]
E essa variável pode pegar esses valores:
/* inode: i_mode */
#define EXT2_S_IFMT 0xF000 /* format mask */
#define EXT2_S_IFSOCK 0xC000 /* socket */
#define EXT2_S_IFLNK 0xA000 /* symbolic link */
#define EXT2_S_IFREG 0x8000 /* regular file */
#define EXT2_S_IFBLK 0x6000 /* block device */
#define EXT2_S_IFDIR 0x4000 /* directory */
#define EXT2_S_IFCHR 0x2000 /* character device */
#define EXT2_S_IFIFO 0x1000 /* fifo */
O diretório inode aponta para uma lista, que está na parte de dados, que contém uma lista de estruturas de entrada de diretório. Cada uma dessas estruturas contém 5 variáveis:
- inode - > o número de inode dessa entrada.
- rec_len - > para alinhamento.
- file_type - > o tipo de arquivo, mais ou menos os mesmos tipos que eu colei antes: D.
- name_len - > o comprimento em bytes do nome.
- nome - > com um comprimento máximo de 255 bytes.
Essa estrutura é repetida quantas vezes houver arquivos no diretório.
Desculpe se há algum erro gramatical: D