如何分配更多空间用于Swap并增加其大小大于Ram?

如何分配更多空间用于Swap并增加其大小大于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. 适用于 HDD(而非 SSD)的 Linux 分区指南: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

答案1

您只想使用 中的空间增加系统上的交换大小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

答案2

  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。我建议您阅读其手册页,或阅读Howtoing 网站上的本指南

  3. cat /proc/swaps通过查看命令、usefree命令或命令的输出来验证它是否已启用

    $ swapon -s
    
  4. 启用它在启动时,编辑(有关文件系统的静态信息)以包括以下字段,/etc/fstab其中字段为fs_specfs_filefs_vfstypefs_mntops和,您可以通过 阅读: fs_freqfs_passnoman 5 fstab

    $ vi /etc/fstab
    
    /swapfile     none     swap     defaults,discard     0     0
    
    • 在第四个参数中fs_mntops,不要仅sw在交换到SSD时使用,而是defaults,discard每次启动时都会修剪内存块,请参阅答案这里关于如果出现错误/警告,如何进行错误捕获和交换?discard选项绝对适用于分区。

答案3

你问,“如何分配更多空间用于Swap并增加其大小大于Ram?”,没有提及任何有关更改系统设置方式的内容。

您的 fdisk 和空闲输出告诉我们:

  • 您有一个专用于交换的分区(/dev/sda3)。如果您只是调整该分区的大小,则无需更改系统中的任何内容即可使用额外的空间。 (/etc/fstab)。
  • 您有一个分区 (/dev/sda2),上面有操作系统。该分区有26G可用空间。如果将此分区缩小 20G,操作系统将剩下 5G 可供增长和使用。

交换分区不是扩展分区,这使得增加大小更容易一些。

所需工具:

  • 带 gparted 的可启动操作系统

在此处查找最新免费版本的一个位置分开的魔法

使用 gparted 调整分区大小的说明

  1. 启动到另一个具有 gparted 工具的操作系统
  2. 在gparted中;调整操作系统分区 (/dev/sda2) 的大小。减少捐赠交换空间的金额。这可能需要很长时间,因为释放的空间中的所有数据都需要通过 gparted 移动。
  3. 在gparted中;调整交换分区 (/dev/sda3) 的大小。移动并扩展以包含所有可用空间。
  4. 重新启动进入 sda2 操作系统。
  5. 验证交换分区 (/dev/sda3) 是否正在使用。

请记住,您正在低级别更改磁盘和分区,任何错误或崩溃都可能损坏您的数据。

先备份你的数据。

相关内容