Por que o swapon leva tempo ao enabelecer um arquivo de troca?

3

Eu criei um arquivo de troca com

dd if=/dev/zero of=swap.img bs=1024k count=4k
mkswap swap.img
swapon swap.img

Enquanto isso funciona, o comando swapon leva idades (aproximadamente 10min) para terminar. Ativar o arquivo de troca em /etc/fstab significa que o processo de inicialização será interrompido por vários minutos.

Eu notei que o tempo de execução do comando dd diminuirá se eu aumentar o tamanho do bloco (tentei com 1024 e 1 antes). Isso também tem impacto sobre swapon ?

O swapon processará arquivos esparsos? Eu tentei com sucesso antes, mas tenho um "arquivo de swap tem buracos" depois de uma reinicialização, então eu voltei para um arquivo completo.

Mais algumas informações:

  • Usando o Linux Mint KDE 15 RC
  • O arquivo de troca está em uma partição NTFS montada

A saída de dd foi

4096+0 records in
4096+0 records out 
4294967296 bytes (4,3 GB) copied, 73,9629 s, 58,1 MB/s 

A saída do mkswap foi

Setting up swapspace version 1, size = 4194300 KiB
no label, UUID=108b2e2d-e00a-40d0-8e28-c0b72003e63e

swapon não produziu nenhuma saída, mas dmesg depois mostrou:

Adding 4194272k swap on /host/personal/swap.img.  Priority:-1 extents:9 across:4335880k

Alguma ideia de como criar um arquivo de troca (melhor até o dobro do tamanho) que é montado em um tempo razoável?

    
por Chaos_99 14.07.2013 / 00:43

1 resposta

2

Isso não é tanto uma resposta quanto uma série de dicas. Primeiro de tudo, esta página menciona que executar o comando dd em uma partição NTFS pode danificar a partição. Não faço ideia do porquê e não faço ideia se é verdade mas achei que vale a pena mencionar:

if /mnt/home is an NTFS drive, do not use dd (writing to your NTFS drive can corrupt the file system)

Quaisquer que sejam os detalhes, a criação de um arquivo de permuta em uma partição NTFS parece realmente problemática:

 $  dd if=/dev/zero of=swap.img bs=1024k count=4k
 4096+0 records in 
 4096+0 records out
 4294967296 bytes (4.3 GB) copied, 122.731 s, 35.0 MB/s
 $ mkswap swap.img 
 $ sudo swapon swap.img 
  swapon: /winblows/swap.img: skipping - it appears to have holes.

O mesmo processo executado em uma partição ext4 não causa erros e parece funcionar perfeitamente, indicando que o problema é a unidade NTFS. Além disso, mover o arquivo que funcionou da partição ext4 para o NTFS e executar swapon fornece o mesmo erro "file has holes". Então, realmente não é o arquivo, mas a partição.

Isso pode ser um problema causado pela fragmentação da minha unidade, mas por um usuário em este fórum postou que ele obtém o mesmo problema em uma unidade recém-formatada que contém apenas 2 arquivos, então parece que a fragmentação não é um problema.

Por um lado, o ntfs-3G (que é o módulo usado pelo kernel para montar e acessar partições NTFS) FAQ afirma:

Can I use swap file safely, deadlock free on NTFS?

Yes, this is possible if it’s properly setup. Below is the example how to create, initialize and turn on a 2 GB swap file safely, deadlock free:

dd if=/dev/zero of=swapfile bs=1M count=2000 
mkswap swapfile
swapon swapfile

You must turn off the swap file with ‘swapoff’ before you would be able to unmount NTFS. Please also note that other solutions, for example using swap on a loop device, are not safe and can cause deadlock!

Então eles parecem pensar que deveria funcionar. Por outro lado, quando executo os comandos acima, recebo o mesmo erro "file has holes".

Portanto, embora não consiga encontrar nenhuma informação conclusiva, não posso fazê-lo funcionar em NTFS. Eu encontrei vários posts que sugerem o uso de uma partição NTFS para um swapfile é uma má idéia ou que descrevem vários problemas que os usuários tiveram ao tentar o mesmo. Em conclusão, se você tem alguma maneira de evitar o NTFS, provavelmente é uma boa idéia.

    
por 14.07.2013 / 15:19