web-dev-qa-db-ja.com

スワップするより多くのスペースを割り当て、そのサイズをRAMより大きくするにはどうすればよいですか?

状況:HD 128 GBの場合、スワップサイズ(/dev/sda3)を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/.swapfileに配置して、Linux/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
ラム:8 GB
SSD:128 GB

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
Ijaz Ahmad Khan
  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
    
    • Fourtパラメータfs_mntopsでは、SSDにスワップするときにswだけでなく、起動時にメモリブロックがトリミングされるようにdefaults,discardを使用しないでください、回答を参照してください ここ についてエラー/警告の場合のエラートラップとスワップオフの方法discardオプションはパーティションで確実に機能します。
4
FarazX

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

fdiskとfreeの出力から、次のことがわかります:

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

スワップパーティションは拡張パーティションではないため、サイズを増やすのが少し簡単になります。

必要なツール:

  • 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)が使用されていることを確認します。

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

まずデータをバックアップします。

2
jc__