it-swarm-pt.tech

Existe um formato "rápido" para o ext4?

No Windows, é muito rápido formatar com NTFS. Eu tenho uma máquina Linux de baixa potência, com pouca RAM. A formatação de um volume de 2 TB para ext4 leva muito tempo.

Há algo que eu possa fazer para acelerar o formato? Não consigo imaginar o que leva tanto tempo? (o que leva tanto tempo)

28
stuck

Resposta estrita

Soluções como -E lazy_itable_init não mude o resultado, apenas acelere o processo. Foi o que foi solicitado explicitamente ainda, em muitos casos, as pessoas precisam de mais.

Bônus extra

Na maioria dos casos, você realmente deseja algumas opções que correspondam aos seus padrões de uso e não apenas aceleram a criação do sistema de arquivos, mas também permitem um uso mais rápido e mais espaço utilizável.

Acabei de fazer um teste. Mesmo sem usar -E lazy_itable_init, as opções abaixo aceleram o tempo de criação de um sistema de arquivos de 2 TB de 16 minutos 2 segundos a 1 minuto 21 segundos (kernel 3.5.0 64 bits no Intel i7 2.2GHz, disco de 2 TB na conexão USB2 - o SATA provavelmente seria mais rápido).

Para um sistema de arquivos que conterá arquivos grandes, eu uso esta combinação:

mkfs.ext3 /dev/sdXX -O sparse_super,large_file -m 0 -T largefile4

onde -T largefile4 seleciona opções em /etc/mke2fs.conf que geralmente contêm algo como:

    inode_ratio = 4194304
    blocksize = -1

Faça um man mke2fs para detalhes sobre cada uma dessas opções.

Aqui estão extratos relevantes:

               sparse_super
                      Create a filesystem with fewer superblock backup copies (saves space on large filesystems).

               large_file
                      Filesystem can contain files that are greater than 2GB.  (Modern kernels set this feature  automatically
                      when a file > 2GB is created.)

   -i bytes-per-inode
          Specify  the  bytes/inode ratio.  mke2fs creates an inode for every bytes-per-inode bytes of space on the disk.  The
          larger the bytes-per-inode ratio, the fewer inodes will be created.  This value generally shouldn't be smaller  than
          the blocksize of the filesystem, since in that case more inodes would be made than can ever be used.  Be warned that
          it is not possible to expand the number of inodes on a filesystem after it is created, so be  careful  deciding  the
          correct value for this parameter.

-m 0 diz apenas para não reservar 5% para raiz, o que é bom para um sistema de arquivos de dados (não inicialização/raiz). 5% de um disco de 2 TB significa 100 GB. Essa é uma diferença bastante significativa.

16
Stéphane Gourichon

Adicione a bandeira -E lazy_itable_init

Aqui está o que a página do manual diz:

Se ativado e o recurso uninit_bg estiver ativado, a tabela inode não será totalmente inicializada pelo mke2fs. Isso acelera notavelmente a inicialização do sistema de arquivos, mas exige que o kernel conclua a inicialização do sistema de arquivos em segundo plano quando o sistema de arquivos é montado pela primeira vez. Se o valor da opção for omitido, o padrão será 1 para ativar a inicialização da tabela de inode lento.

19
Alex Wheeler

O padrão é um formato rápido; configurar as estruturas para um volume ext * leva muito mais tempo do que para um volume NTFS, já que existem mais. Você pode reduzir o número de superblocos, mas mesmo isso só vai tão longe.

8
Ignacio Vazquez-Abrams

Se você estiver armazenando arquivos principalmente maiores, poderá aumentar o número de bytes por inode, diminuindo o número de inodes criados. Isso pode acelerar substancialmente o tempo de criação.

4
rnxrx