スワップするより多くのスペースを割り当てて、そのサイズをRAMより大きくするには


8

状況:/dev/sda3HD 128 GBの場合、スワップサイズ()を
RAM (8 GB)より大きくする動機:8 GB RAMが小さすぎる。SSDに30 GBの空き容量。20 GBをSSDスワップに切り替えたい
システムの特性

  • 不変/変更可能なスワップ。/mnt/.swapfileスワップファイルのファイル属性を変更する必要がないように、不変である必要がある証拠を見つけることができません。

    sudo lsattr /mnt/.swapfile 
    -------------e-- /mnt/.swapfile
    
  • コマンドsudo fdisk -lu /dev/sdaが与える

    Disk /dev/sda: 113 GiB, 121332826112 bytes, 236978176 sectors 
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    Disklabel type: gpt
    Disk identifier: 082F85CA-EE3E-479C-8244-858B196FA5BA
    
    Device         Start       End   Sectors   Size Type
    /dev/sda1       2048      4095      2048     1M BIOS boot
    /dev/sda2       4096 220323839 220319744 105.1G Linux filesystem
    /dev/sda3  220323840 236976127  16652288     8G Linux swap
    
  • コマンドdf -hが与える

    Filesystem      Size  Used Avail Use% Mounted on
    udev            3.9G     0  3.9G   0% /dev
    tmpfs           793M  9.4M  784M   2% /run
    /dev/sda2       104G   74G   25G  75% /
    tmpfs           3.9G   54M  3.9G   2% /dev/shm
    tmpfs           5.0M  4.0K  5.0M   1% /run/lock
    tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
    tmpfs           793M   64K  793M   1% /run/user/1000
    
  • スワップイン用に、より多くのディスク領域を割り当てます/dev/sda3

同じパーティションでHDとスワップを行うと、失敗したタスクのワークフロー、 /dev/sda3

masi@masi:~$ sudo -i

root@masi:~# swapoff /dev/sda3

root@masi:~# swapon
[blank]    

root@masi:~# dd if=/dev/zero of=/dev/sda3 bs=20480 count=1M
dd: error writing '/dev/sda3': No space left on device
416308+0 records in
416307+0 records out
8525971456 bytes (8.5 GB, 7.9 GiB) copied, 18.7633 s, 454 MB/s

root@masi:~# mkswap /dev/sda3
Setting up swapspace version 1, size = 8 GiB (8525967360 bytes)
no label, UUID=245cb42c-1d4e-4e21-b544-16b64af962d6

root@masi:~# swapon -p 99 /dev/sda3

root@masi:~# swapon
NAME       TYPE      SIZE USED PRIO
/dev/sda3  partition   8G   0B   99

root@masi:~# vi /etc/fstab 
...

同じパーティションでのHDおよびスワップ-現在のワークフロー[Ijaz、cas、FarazX]

マージ。ゼロを置く必要がないため、fallocate代わりに最初に使用しますdd

masi@masi:~$ sudo fallocate -l 20G /mnt/.swapfile

masi@masi:~$ sudo mkswap /mnt/.swapfile 
Setting up swapspace version 1, size = 20 GiB (21474832384 bytes)
no label, UUID=45df9e48-1760-47e8-84d7-7a14f56bbd72

masi@masi:~$ sudo swapon /mnt/.swapfile
swapon: /mnt/.swapfile: insecure permissions 0644, 0600 suggested.

masi@masi:~$ sudo chmod 600 /mnt/.swapfile

masi@masi:~$ free -m
              total        used        free      shared  buff/cache   available
Mem:           7925        1494         175         196        6255        5892
Swap:         28610           0       28610

次の行をに追加します。/etc/fstabこれは、ランレベルに追加するよりも優れています(/etc/rc.local)。ここで、スワップファイルをに入れて、/mnt/.swapfileLinux / Unixの哲学を維持し、システムバックアップスクリプトの整合性を維持します。SSDにスワップする場合は、discardオプションを使用して、再起動のたびにブロックがトリミングされるようにします。sw

# http://unix.stackexchange.com/a/298212/16920
# http://unix.stackexchange.com/a/298543/16920

# If swap is on SSD, trim blocks each time at startup.
/mnt/.swapfile  none    swap    defaults,discard      0        0

# If swap on External HDD, just use sw.
#/media/masi/SamiWeek/.swapfile  none    swap    sw      0        0

出典

  1. スワップ領域を増やす方法は?https://askubuntu.com/a/178726/25388初心者のためのスワップ領域の増加に関する一般的な議論。
  2. SSDではなくHDDのLinuxパーティションHOWTO:4.パーティション要件。http://www.tldp.org/HOWTO/Partition/requirements.htmlしたがって、SSDの外側のトラックにスワップを配置せずdefaults,discard、@ casによって提案されているようにオプションを使用してブロックをトリミングします。

システム:Linux Ubuntu 16.04 64ビット
Linuxカーネル:4.6
Linuxモジュール:wl
ハードウェア:Macbook Air 2013-mid
Ram:8 GB
SSD:128 GB


fdisk -lu /dev/sda?の出力
ステファンChazelas

オプションは/ dev / sda2のfsを縮小して再パーティション化します(ただし、/ dev / sda2はルートファイルシステムであるためアンマウントできないため、ライブシステムからは実行できません。一部のlivecdでのブートが最も簡単です)。ブロックデバイス、または使用スワップ圧縮または圧縮ラムとは対照的にスワップファイル
ステファンChazelas

1
SSD:には、回転ディスクのようなヘッドやトラックがないため、これらの配置に関する考慮事項のいくつかは当てはまりません。I / O負荷が大きい場合は、複数のドライブのストライピングが適用される場合があります。
ilkkachu

1
@Masiこんにちは、私はFreeBSDシステムで作業していて、何かが思い浮かびました。BSD chflagsとOS Xで呼び出されるコマンドがあり、Linuxでと呼ばれるコマンドchattrがあります。ファイルとディレクトリをより安全にすることができますそして、いくつかの属性を設定することで不変です。これはtecmint.comのガイドです。
FarazX 2016

回答:


3

からのスペースを使用して、システムのスワップサイズを増やしたいだけですsda2。君のsda2

/dev/sda2       104G   74G   25G  75%  / 

で作成されたスワップファイルを使用して、システムにスワップスペースを追加でき/ますsda2。ただやる:

dd if=/dev/zero of=/swapfile bs=20480 count=1M

そして次に:

sudo mkswap /swapfile  
sudo swapon /swapfile 

チェックして、スワップ領域がその量だけ増加することを使用して free -m

そして、はい、ブート時にそれを有効にするには、エントリをに追加します /etc/fstab

 /swapfile     none     swap     sw     0     0

3
うん、あなたは計算することができるはずです。スワッパーは大きな仮想メモリを見るはずです。
Lmwangi

3
@masiにエントリを追加すると、のエントリを/etc/fstab回避できますrc.local。スワップファイルをどこかに置くと、/mnt/.swapそれ以上心配する必要がなくなります
roaima

4
  1. メモリ管理

    • デバイスごとのスワップ使用量の概要を表示するには:

      $ swapon -s
      
    • 空きおよび使用済みの物理メモリとスワップメモリ​​の量を表示するには:

      $ free -h
      
    • / swapfileにスペースを事前に割り当てるには、以下の行を使用できます。

      $ fallocate -l 20G /swapfile
      % OR
      $ dd if=/dev/zero of=/swapfile bs=20480 count=1M
      
  2. 権限を変更してスワップを作成/アクティブ化する

    $ chmod 600 /swapfile
    
    $ mkswap /swapfile
    
    $ swapon /swapfile
    

    を使用してファイル属性を変更することにより、ファイルのセキュリティを向上させることもできますchattr。マニュアルページ、またはTecmintのWebサイトでこのガイドを読むことをお勧めします。

  3. コマンドの出力を表示するか、コマンドcat /proc/swapsを使用するfreeか、または

    $ swapon -s
    
  4. それを有効にするには、ブート時に、編集/etc/fstabフィールドがどこにあるか、以下が含まれるように(ファイルシステムに関する静的情報)をfs_specfs_filefs_vfstypefs_mntopsfs_freqそしてfs_passno、どのあなたがで読むことができますman 5 fstab

    $ vi /etc/fstab
    
    /swapfile     none     swap     defaults,discard     0     0
    
    • 4トンのパラメータでfs_mntops、単に使用していないswSSDに交換するときにはdefaults,discard、メモリ・ブロックは、起動時に毎回トリミングされるように、答えを参照してくださいここについてのエラー/警告場合は、エラー・トラップとするswapoffを行う方法? このdiscardオプションは確実にパーティションで機能します。

2
@Masiいいえ、fallocateは簡単ddです。何をしているのかわからないと間違ってしまう可能性があるため、ゼロを入れてカウントを設定する必要はありません。これddは非常に強力なコマンドです。また、LinuxのAFAIKスワップスペースは、物理メモリ(RAM)の容量がいっぱいになったときに使用され、マウントポイントがないことに注意してください。私はそれがどこにあるか、それは問題ではありませんだと思うので、ちょうど600にそれをchmodの
FarazX

1
@マシ私の喜び。ところで、あなたは内のフィールドについて読むことができますfstab実行することによってman 5 fstab。グッドラックメイト。
FarazX 2016

@Masiはい、もちろん。ファイルの属性はで一覧表示できlsattr、前述のようにで設定できますchattr。たとえば、不変にしたい場合はを使用できますchattr +i /mnt/.swapfile。また、BSDまたはOS Xではを使用できますchflags uchg yourFile。多くの属性オプションがあります。たとえば、s属性が設定されたファイルが削除されると、そのブロックがゼロになり、ディスクに書き戻されます。しかし、そのマニュアルページを読んでネットサーフィンをすることをお勧めします。使用するほど簡単ではchattrありません。実際に何をするのかを理解しておく必要があります。
FarazX 2016

1
@Masi AFAIK設定属性はニーズに応じて設定できるため、大多数のシステムでは答えはノーです。しかし、あなたは、いくつかのUnixライクなオペレーティングシステム、MacOSのXのインスタンスにデフォルトで設定された不変または制限属性を持ついくつかのファイルやディレクトリた見つけることができます
FarazX

1
@Masi実際には、デフォルトでそれを行う必要はないので、Swapfilesは永続的にではなく一時的に使用される可能性が高いため、答えは必要ないと思います。LVMパーティションを使用している場合は、スワップファイルを作成するのではなく、スワップパーティションを増やすことをお勧めします。しかし、それができず、swapfilesが唯一のオプションである場合、問題はありませんが、システムに影響を与え、パフォーマンスを低下させます。ルールブックはありません。すべてがニーズに依存し、そのために何ができるか、システムの安全性がどの程度必要かによって異なります。
FarazX 2016

2

スワップするためのより多くのスペースを割り当て、そのサイズをRAMより大きくするにはどうすればよいですか」と質問しても、システムのセットアップ方法の変更については何も言われていません。

fdiskと無料の出力から、次のことがわかります。

  • スワップ専用のパーティション(/ dev / sda3)があります。そのパーティションのサイズを変更するだけであれば、余分なスペースを使用するためにシステムを変更する必要はありません。(/ etc / fstab)。
  • OSがインストールされているパーティション(/ dev / sda2)があります。このパーティションには26Gの空き容量があります。このパーティションを20Gまで縮小すると、OSには5Gの容量が残ります。

swapパーティションは拡張パーティションではありません。これにより、サイズを増やすのが少し簡単になります。

必要なツール:

  • gpartedを使用した起動可能なOS

Parted Magicの最後の無料バージョンの1つの場所については、こちらをご覧ください

gpartedでパーティションのサイズを変更する手順

  1. gpartedツールを備えた別のOSで起動する
  2. gparted; OSパーティションのサイズを変更します(/ dev / sda2)。スワップスペースに寄付する金額で縮小します。解放される領域にあるすべてのデータをgpartedによって移動する必要があるため、これには長い時間がかかる可能性があります。
  3. gparted; スワップパーティションのサイズを変更します(/ dev / sda3)。移動して拡張し、すべての空き領域を含めます。
  4. sda2 OSで再起動します。
  5. スワップパーティション(/ dev / sda3)が使用されていることを確認します。

低レベルでディスクとパーティションを変更していること、およびエラーやクラッシュがデータに損傷を与える可能性があることを忘れないでください。

最初にデータをバックアップしてください。


gparted綿棒はOSと同じディスクに入れることができるので、ここは必要ないと思います。
レオ・レオポルド・ヘルツ준 영

本当ですが、2つのスワップがあります。/ sda2上のファイルと/ sda3上のパーティション。これは、「/ dev / sda3でスワップ用のディスク領域をより多く割り当てます。/dev/sda2からスワップを取得する方法」という質問の一部に答えます。
jc__ 2016

「/ dev / sda2と/ dev / sad3は同じディスクパーティション上にあると思うので、わかりません。」/dev/sda2 /dev/sda3は別のパーティションです。
jc__

スワップに使用したいスペースがある別のデバイスを追加していますか?そうであれば。その上にタイプswapの新しいパーティションを作成し、プラグインして使用する準備ができたら、swapon同様のことを行います。デバイスを削除する際にswapoff、同様の操作を行います。デバイスのスワップステータスは、OSの再起動時に記憶されません。
jc__

1
mkfsは、パーティションをファイルシステムでフォーマットします。(vfat、ext2、ext4、ntfs)。chattrは、extファイルシステム上のファイルのファイル属性を変更します。
jc__
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.