web-dev-qa-db-ja.com

スワップファイルを有効にするときにswaponに時間がかかるのはなぜですか?

でスワップファイルを作成しました

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

これは機能しますが、swaponコマンドが完了するまでに数年(約10分)かかります。 /etc/fstabでスワップファイルを有効にすると、起動プロセスが数分間停止します。

ブロックサイズを大きくすると(前に1024と1で試した)、ddコマンドの実行時間が短くなることに気づきました。これはswaponにも影響しますか?

swaponはスパースファイルを処理しますか?以前は正常に試しましたが、再起動後に「スワップファイルに穴があります」というメッセージが表示されたため、完全なファイルに切り替えました。

いくつかの詳細情報:

  • Linux Mint KDE 15RCの使用
  • スワップファイルはマウントされたNTFSパーティションにあります

ddの出力は

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

Mkswapの出力は

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

swaponは出力を生成しませんでしたが、その後dmesgは次のことを示しました。

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

妥当な時間でマウントするスワップファイル(2倍のサイズでもよい)を作成する方法はありますか?

3
Chaos_99

これは一連のヒントほどの答えではありません。まず、 このページ は、NTFSパーティションでddコマンドを実行するとパーティションに害を及ぼす可能性があると述べています。理由も、それが真実かどうかもわかりませんが、言及する価値があると思いました。

/ mnt/homeがNTFSドライブの場合は、ddを使用しないでください(NTFSドライブに書き込むと、ファイルシステムが破損する可能性があります)

詳細がどうであれ、NTFSパーティションにスワップファイルを作成することは確かに問題があるようです。

 $  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.

Ext4パーティションで実行されたまったく同じプロセスはエラーを発生せず、完全に機能しているように見えます。これは、問題がNTFSドライブにあることを示しています。さらに、動作したファイルをext4パーティションからNTFSパーティションに移動し、その上でswaponを実行すると、同じ「ファイルに穴があります」というエラーが発生します。つまり、実際にはファイルではなくパーティションです。

これは私のドライブの断片化によって引き起こされた問題かもしれませんが、 このフォーラム のユーザーは、2つのファイルしか含まない新しくフォーマットされたドライブでも同じ問題が発生するため、断片化は問題。

一方では、ntfs-3G(つまり、カーネルがNTFSパーティションをマウントしてアクセスするために使用するモジュール) [〜#〜] faq [〜#〜] 状態:

NTFSでデッドロックのないスワップファイルを安全に使用できますか?

はい、これは適切に設定されていれば可能です。以下は、デッドロックのない2 GBのスワップファイルを安全に作成、初期化、およびオンにする方法の例です。

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

NTFSをアンマウントする前に、「swapoff」を使用してスワップファイルをオフにする必要があります。ループデバイスでスワップを使用するなど、他のソリューションは安全ではなく、デッドロックを引き起こす可能性があることにも注意してください。

だから彼らはそれがうまくいくはずだと思っているようです。一方、上記のコマンドを実行すると、同じ「ファイルに穴があります」というエラーが発生します。

そのため、決定的な情報は見つかりませんが、NTFSで機能させることはできません。スワップファイルにNTFSパーティションを使用することは悪い考えであると示唆している、またはユーザーが同じことを試みたときに遭遇したさまざまな問題を説明しているさまざまな投稿を見つけました。結論として、NTFSを回避する方法がある場合は、おそらくそれは良い考えです。

2
terdon