情况:当 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
来源
- 如何增加交换空间?https://askubuntu.com/a/178726/25388关于为初学者增加交换空间的一般讨论。
- 适用于 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
内存管理
要显示您的设备的交换使用情况摘要:
$ swapon -s
显示可用和已用物理内存和交换内存的量:
$ free -h
要将空间预先分配给 /swapfile,您可以使用以下行:
$ fallocate -l 20G /swapfile % OR $ dd if=/dev/zero of=/swapfile bs=20480 count=1M
更改权限并创建/激活交换
$ chmod 600 /swapfile $ mkswap /swapfile $ swapon /swapfile
您还可以通过更改文件来提高文件安全性属性使用
chattr
。我建议您阅读其手册页,或阅读Howtoing 网站上的本指南。cat /proc/swaps
通过查看命令、usefree
命令或命令的输出来验证它是否已启用$ swapon -s
启用它在启动时,编辑(有关文件系统的静态信息)以包括以下字段,
/etc/fstab
其中字段为fs_spec
、fs_file
、fs_vfstype
、fs_mntops
和,您可以通过 阅读:fs_freq
fs_passno
man 5 fstab
$ vi /etc/fstab /swapfile none swap defaults,discard 0 0
- 在第四个参数中fs_mntops,不要仅
sw
在交换到SSD时使用,而是defaults,discard
每次启动时都会修剪内存块,请参阅答案这里关于如果出现错误/警告,如何进行错误捕获和交换? 该discard
选项绝对适用于分区。
- 在第四个参数中fs_mntops,不要仅
答案3
你问,“如何分配更多空间用于Swap并增加其大小大于Ram?”,没有提及任何有关更改系统设置方式的内容。
您的 fdisk 和空闲输出告诉我们:
- 您有一个专用于交换的分区(/dev/sda3)。如果您只是调整该分区的大小,则无需更改系统中的任何内容即可使用额外的空间。 (/etc/fstab)。
- 您有一个分区 (/dev/sda2),上面有操作系统。该分区有26G可用空间。如果将此分区缩小 20G,操作系统将剩下 5G 可供增长和使用。
交换分区不是扩展分区,这使得增加大小更容易一些。
所需工具:
- 带 gparted 的可启动操作系统
在此处查找最新免费版本的一个位置分开的魔法
使用 gparted 调整分区大小的说明
- 启动到另一个具有 gparted 工具的操作系统
- 在gparted中;调整操作系统分区 (/dev/sda2) 的大小。减少捐赠交换空间的金额。这可能需要很长时间,因为释放的空间中的所有数据都需要通过 gparted 移动。
- 在gparted中;调整交换分区 (/dev/sda3) 的大小。移动并扩展以包含所有可用空间。
- 重新启动进入 sda2 操作系统。
- 验证交换分区 (/dev/sda3) 是否正在使用。
请记住,您正在低级别更改磁盘和分区,任何错误或崩溃都可能损坏您的数据。
先备份你的数据。