スワップを安全に永久にオフにしてスペースを再利用するにはどうすればよいですか?(Debian Jessieの場合)


48

SSDドライブにデフォルトのパーティション分割でDebian Jessieをインストールしました。私の現在のディスクパーティションは次のようになります。

現在のディスクパーティションは次のようになります

16GBのRAMがあるため、swapは必要ないと思います。しかし、私は他のディスクドライブを持っているので、代わりに他のドライブの1つで、たとえばスワップファイル作成できます

ディスクスペースを占有しないために、スワップパーティションを正しく永続的に削除するためにとるべき手順を教えてください。現在128GB SSDしかないので、スワップパーティションを削除したいです。

毎回試して再起動したものを次に示します。これらの各ステップは永続的はないか、何もしませんでした

  1. 使用swapoffユーティリティ:

    swapoff --all
    
  2. 使用GPartedののユーティリティを:

    スワップパーティションを右クリックし、[ スワップオフ]をクリックします。

  3. コメントアウトスワップパーティションのUUIDを次のファイルに:

    /etc/fstab
    
  4. コメントアウトスワップパーティションのUUIDを次のファイルに:

    /etc/initramfs-tools/conf.d/resume
    
  5. これらのコマンドを最後に実行します(この順序と逆の順序の両方):

    update-grub
    
    update-initramfs -u
    

1
Swapoffは、現在実行中のシステムのスワップのみを無効にします。永続的にするには、から関連するエントリを削除することと組み合わせてください/etc/fstab。それが完了したら、スワップを無効にして、次回の起動時に戻らないようにする必要があります。ここで、未使用のスペースを再利用する場合は、パーティションテーブルを変更し、メインファイルシステムを拡張する必要があります。詳細な手順については、私の回答をご覧ください。
アンドレボリー

@ burian.vlastimil全体を投稿できます/etc/fstabか?
アンドレボリー

@ burian.vlastimilコメントでは改行が保持されないため、質問で編集してください。再起動後もfstabの変更は保持されますか、またはスワップ行のコメントが解除されますか?
アンドレボリー

1
私がこの質問に突入する可能性がある場合、スワップの目的は、未使用のページを削除し、システムがメモリ不足から保護することです。したがって、SnakeDocが示唆したように、512MBのスワップを持つことは常に適切です。個人的に、SSDにはスワップパーティションはなく、むしろ/ディレクトリにスワップファイルがあります。そのようにする場合は、このチュートリアルを使用してファイルを作成してください。スワップパーティションについては、ライブUSBを起動し、gpartedを使用してそのパーティションを削除できます。ただし、grubを必ず更新してください。
セルギーKolodyazhnyy

4
@SnakeDoc-通常、カーネルパニックは発生しません。OOMハンドラーはプロセスを起動して強制終了し、メモリを解放します。より大きくて新しいプロセスを強制終了します)。サーバーは通常メモリ不足にならないように構成されているため、プロセスを強制終了するのではなく、OOMでパニックするように設定されたスワップなしの多数のサーバーを維持します。スローダウン(またはOOMハンドラーに強制終了するプロセスを決定させる)
ジョニー

回答:


46

ルートとして実行:

# swapoff -a

そして、その変更を永続的にするに/etc/fstabは、スワップエントリを編集して削除するかコメントアウトします。


@ burian.vlastimil、ロックとはどういう意味ですか?一番上の最初の行を見ると、スワップデバイスが使用されていないことを確認できます。「KiB Swap:0 total」と報告されるはずです。またcat /proc/swaps、ヘッダー行を報告するだけです。その場合は、はい、スワップパーティションを安全に削除し、別のパーティションを拡大して、そのスペースを再利用できます(必要な場合)。
maxschlepzig

@ burian.vlastimil、スワップはinitramfsによって有効になる場合がありresumeます。カーネルオプション(スワップのUUIDを参照する)を削除する必要があります。つまり、grubを更新してinitramfsを再生成します(基本的に、SwapFaq)。
maxschlepzig

@ burian.vlastimilでは、/bootそのuuidのgrub構成(下)をgrepすることもできます。initramsfsをアンパックし、その内容をgrepして、この根本原因を特定できます。大文字と小文字を区別しないgrepを実行してください。
maxschlepzig

2
ただ置くswapoff -a/etc/rc.local。起動時に数ミリ秒間スワップをオンにしても問題はありません。16GB RAMでは、長時間何も書き込まれません。ちょうどそこにスワップ領域を残す(ディスク容量は安いです)と変わりません /etc/fstab
スカペレン

一時的なスワップファイルを作成し、スワップをオフにしたらファイルを削除することでスペースを回復できます
-Skaperen

40
  1. GPartedを開いている場合は、閉じます。スワップオフ機能は永続的ではないようです。

  2. ターミナルを開いてrootsu)になります。あなたがしている場合はsudo有効になって、あなたはまた、例えば行うことができますsudo -iman sudoすべてのオプションを参照してください):

    sudo -i
    
  3. 特にオフにスワップパーティションおよび/またはすべてのスワップ秒:

    swapoff --all
    
  4. 特定のスワップパーティションパーティションがオフであることを100%確認してください:

    cat /proc/swaps
    
  5. このファイルに精通しているテキストエディターを開きます。たとえばnano、不明な場合:

    nano /etc/fstab
    
  6. スワップパーティションのUUIDをコメントアウト /削除します。例:

    # UUID=1d3c29bb-d730-4ad0-a659-45b25f60c37d    none    swap    sw    0    0
    
  7. このファイルに精通しているテキストエディターを開きます。たとえばnano、不明な場合:

    nano /etc/initramfs-tools/conf.d/resume
    
  8. 以前に識別されたスワップパーティションのUUIDをコメントアウト /削除します。例:

    # RESUME=UUID=1d3c29bb-d730-4ad0-a659-45b25f60c37d
    
  9. とにかく後で必要になるので、ターミナルを閉じないでください。

注:次のステップは、CLIまたはGUIのどちらに依存しているかによって異なります


GUI

  1. GPartedをメニューから開くか、開いたターミナルからより便利に開きます:

    gparted
    
  2. インストールしていない場合はインストールできます。その後、前のコマンドを再度実行します。

    apt-get install gparted
    
  3. 右上のメニューからドライブを選択します。

  4. 以下のようGPartedのは、再活性化スワップ起動時にパーティションを、あなたは、特定の右クリックする必要がありますスワップパーティションをとするswapoffをクリック- >これはすぐに適用されます。

  5. 削除スワップ右クリックでパーティションを- >を削除。今すぐ変更を適用する必要があります。

  6. メイン/その他のパーティションのサイズを右クリック->サイズ変更/移動で変更します。今すぐ変更を適用する必要があります。

  7. ターミナルに戻って、ブートイメージを再作成しましょう。

    update-initramfs -u -k all
    
  8. GRUBを更新します。

    update-grub
    
  9. マシンが起動することをテストする場合は、ここで再起動できます。


CLI

ソリューションが機能する場合はVMをチェックインし、それを共有します。それまでの間、この回答をご覧ください。


1
最も完全で、よく説明されています。
Benzkji

その後、次のメッセージが表示されて起動が遅くなる場合gave up waiting for suspend/resume device:file /etc/initramfs-tools/conf.d/resumeでは、単に行を無効にするのではなく、に置き換えRESUME=noneます。(ソース
tanius

17

の関連エントリをコメント/削除し/etc/fstabて、次回の起動時に再びswapoff -a有効にならないようにしてから、再起動または実行して、現在実行中のシステムのスワップパーティションの使用を無効にします。

スワップパーティションを削除し、システムパーティションをその未使用のスペースに拡張し、実際のファイルシステムを拡張します。グラフィカルパーティションマネージャーがそれをすべて実行できるかどうかはわかりませんが、それができない場合は、fdiskand を使用してこれを行う不可知論的な方法がありresize2fsます。

# fdisk /dev/sdX

# Display current partition table, copy/paste this output somewhere to be able to go back in case you screw up

Command (m for help): p
Device       Boot  Start    End Sectors Size Id Type
/dev/sda1        2048  22527   20480  10M ef EFI (FAT-12/16/32)
/dev/sda2       22528 186367  163840  80M 83 Linux
/dev/sda3      186368 204799   18432   9M 82 Linux swap / Solaris

# Delete the swap partition

Command (m for help): d
Partition number (1-3, default 3): 3
Partition 3 has been deleted.

# Delete the system partition

Command (m for help): d
Partition number (1,2, default 2): 2
Partition 2 has been deleted.

# Create a new system partition starting the same as the old one but ending a bit farther, at the end of the (now deleted) swap partition

Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): 

Using default response p.
Partition number (2-4, default 2): 
# Enter the same start sector as the old part.
First sector (22528-204799, default 22528): 22528
# Enter the end sector of the old swap partition
Last sector, +sectors or +size{K,M,G,T,P} (22528-204799, default 204799): 204799

Created a new partition 2 of type 'Linux' and of size 89 MiB.

# Save the changes
Command (m for help): w
The partition table has been altered.

最後に、現在のファイルシステムを拡張して、新しい空きスペースを利用します(実際のファイルシステムは、基礎となるパーティションにさらにスペースを追加したことを認識していませんでした)。デフォルトでresize2fsは、固定サイズが指定されていない限りパーティション全体を使用するため、パーティションブロックデバイス以外を指定する必要はありません。ファイルシステムの成長(縮小ではなく)は、パーティションをマウントした状態でオンラインで実行できます。

# resize2fs /dev/sda2

これで、スワップを無効にし、再起動すらせずに未使用のスペースを再利用できました。

Debianの手順は少し異なり、さらにいくつかのファイルを編集する必要があることに注意してください。詳細については、この回答をご覧ください。


これは私にはうまくいきません。3つのパーティションがありました。1つは/ boot用、もう1つは/およびスワップ用です。新しいパーティションを作成しようとすると、16GBのパーティションしか作成できません:/
Freedo

さらに、少なくともDebian 9ベースのディストリビューションの場合:コマンドのpartprobe前に実行する必要があります。resize2fsそうしないと、カーネルは新しいパーティションテーブルを認識せず、サイズは変更されません。
タニウス

2

GPartedのスワップパーティションを右クリックし、[スワップオフ]をクリックします。次に、あなたのスワップパーティションを削除してから、それを削除/etc/fstabし、あなたの再生成initramfsgrub(多分不要)。

スワップパーティションが存在しない場合はinitramfsinitramfs更新スクリプトによってスワップパーティションを追加しないでください。

よると、このポスト、以下が再生するための正しい方法であるinitramfsgrub

update-initramfs -c -k <kernel>

update-grub

-2

Gpartedのスワップパーティションを右クリックして、swapoffオプションを選択できます。それはあなたが尋ねたのと同じことを達成する簡単な方法です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.