Quando eu uso mkfs.ext4
, /dev/loop18
recebo este aviso:
Inodes de 128 bytes não podem manipular datas além de 2038 e estão obsoletos
Código:
echo y | mkfs.ext4 /dev/loop18
Resultado:
mke2fs 1.47.1 (20-May-2024)
128-byte inodes cannot handle dates beyond 2038 and are deprecated
64-bit filesystem support is not enabled. The larger fields afforded by this feature enable full-strength checksumming. Pass -O 64bit to rectify.
Discarding device blocks: done
Creating filesystem with 5140 1k blocks and 1288 inodes
Allocating group tables: done
Writing inode tables: done
Creating journal (1024 blocks): done
Writing superblocks and filesystem accounting information: done
/etc/mke2fs.conf
[defaults]
base_features = sparse_super,large_file,filetype,resize_inode,dir_index,ext_attr
default_mntopts = acl,user_xattr
enable_periodic_fsck = 0
blocksize = 4096
inode_size = 256
inode_ratio = 16384
[fs_types]
ext3 = {
features = has_journal
}
ext4 = {
features = has_journal,extent,huge_file,flex_bg,metadata_csum,dir_nlink,extra_isize
inode_size = 256
auto_64-bit_support = 1
}
small = {
blocksize = 1024
inode_size = 128
inode_ratio = 4096
}
floppy = {
blocksize = 1024
inode_size = 128
inode_ratio = 8192
}
big = {
inode_ratio = 32768
}
huge = {
inode_ratio = 65536
}
news = {
inode_ratio = 4096
}
largefile = {
inode_ratio = 1048576
blocksize = -1
}
largefile4 = {
inode_ratio = 4194304
blocksize = -1
}
hurd = {
blocksize = 4096
inode_size = 128
}
Qual é a maneira de usá-lo sem que esse aviso apareça?
Desculpas, eu deveria ter prestado mais atenção aos detalhes na
mkfs
saída. Você está tentando usar um volume de ~5MiB, que é muito pequeno para fazer algo útil com Ext4.Pelos comentários, parece que você está criando o volume de apoio como um arquivo qcow2. O dispositivo de loop do kernel não sabe nada sobre esse formato, então ele apenas apresenta o arquivo subjacente como um dispositivo de bloco; em vez do volume de 20 GiB que você esperava, você acaba com um volume de ~5 MiB, e essa é a fonte de todos os seus problemas.
Para usar um volume qcow2, você precisa exportá-lo usando uma ferramenta qcow2-aware; veja Como montar a imagem qcow2 para detalhes. Uma abordagem mais simples é criar um arquivo sparse usando
truncate
:losetup
emkfs.ext4
fará a coisa certa com isso, sem precisar de nenhum sinalizador extra. (Observe que você pode executarmkfs.ext4
diretamente emvolume
, sem configurar um dispositivo de loop primeiro; você só precisa do dispositivo de loop para realmente montar o sistema de arquivos.)Para pessoas interessadas em corrigir os sintomas, continue lendo…
Para corrigir o aviso “inodes de 128 bytes não podem manipular datas além de 2038 e estão obsoletos”, você precisa especificar um tamanho de inode de pelo menos 256 bytes:
Se você quiser habilitar campos de 64 bits, adicione
-O 64bit
.Como alternativa, se seu volume for grande o suficiente para acomodar um diário, force o
ext4
tipo de uso que inclui inodes de 256 bytes — você provavelmente está se deparando com o comportamento padrão para volumes menores que 512 MiB, que usa o tipo de uso "pequeno" com inodes de 128 bytes em versões mais antigasmkfs.ext4
(antes de 1.46.4, então você provavelmente tem ummke2fs.conf
):… ou você pode editar o tamanho do inode “pequeno”
/etc/mke2fs.conf
e defini-lo como 256.Não há problema em continuar usando inodes de 128 bytes e ignorar o aviso se você sabe que não precisará armazenar datas além de 2038 no sistema de arquivos.
Para complementar a resposta que Stephen já me deu... deixo o comando final:
Essa seria a maneira correta de usá-lo.
Observação: adapte o nome do loop conforme necessário.
Deixo também um código interessante... É para ordenar os losetup por número.
Isso mostrará como resultado, por exemplo:
Essa forma de ordenar permite que você ordene pelo número do loop, que é um inteiro, se houver
loop1, loop10, loop12, loop2, loop3
, ele ordenaráloop1, loop2, loop3, loop10, loop12
, ordenando por número e não por alfabeto.Dessa forma, o loop com o maior número de todos é escolhido. Esse deve ser o número do loop que foi criado por
losetup -f
last.Com o
--show
parâmetro é possível obter o dispositivo diretamente, então para facilitar, você pode combinarlosetup
commkfs
.