Ubuntu 18.04 添加、修改交换空间
检查系统的交换信息
查看是否已经存在swapfile
sudo swapon --show
如果您没有收到任何输出,这意味着您的系统当前没有可用的交换空间。
您可以使用free
实用程序验证没有活动交换:
tungee@tungee-Macmini:~$ free -h
total used free shared buff/cache available
Mem: 7.7G 6.0G 1.2G 97M 439M 1.3G
Swap: 8.0G 4.1G 3.9G
检查硬盘驱动器分区上的可用空间
在我们创建交换文件之前,我们将检查当前的磁盘使用情况,以确保我们有足够的空间。 通过输入:
tungee@tungee-Macmini:~$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 3.9G 0 3.9G 0% /dev
tmpfs 789M 2.0M 787M 1% /run
/dev/sda2 234G 80G 142G 36% /
tmpfs 3.9G 40M 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
在这种情况下,带有/在Mounted on列上的设备是我们的磁盘,确保高于我们将要创建的交换空间大小。
虽然对交换空间的适当大小有很多意见,但这实际上取决于您的个人偏好和您的应用程序要求。 通常,等于或加倍系统RAM的量是一个很好的起点。 另一个好的经验法则是,如果您只是将其用作RAM后备,那么任何超过4G的交换都可能是不必要的。
修改swapfile
如果第一步存在swapfile
,则需要先禁用
sudo swapoff /swapfile
修改swapfile
空间的大小为8G
sudo dd if=/dev/zero of=/swapfile bs=1M count=8192
或者
sudo fallocate -l 8G /swapfile
设置文件为swapfile
类型
sudo mkswap /swapfile
修改权限
我们需要锁定文件的权限,以便只有具有root权限的用户才能读取内容。 这可以防止普通用户访问该文件,这会产生重大的安全隐患。
通过键入以下内容使该文件只能由root访问:
sudo chmod 600 /swapfile
键入以下命令验证权限更改:
tungee@tungee-Macmini:~$ ls -lh /swapfile
-rw------- 1 root root 8.0G Jan 5 14:29 /swapfile
启用swapfile
sudo swapon /swapfile
使交换文件永久化
我们最近的更改已启用当前会话的交换文件。 但是,如果我们重新启动,服务器将不会自动保留交换设置。 我们可以通过将交换文件添加到/etc/fstab
文件来更改此设置。
备份/etc/fstab
文件,以防出现任何问题:
sudo cp /etc/fstab /etc/fstab.bak
键入以下命令,将交换文件信息添加到/etc/fstab
文件的末尾:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
接下来,我们将查看一些我们可以更新的设置以调整我们的交换空间。
调整您的交换设置(附)
您可以配置一些选项,这些选项会在处理交换时对系统的性能产生影响。
调整Swappiness属性
swappiness
参数配置系统将数据从RAM交换到交换空间的频率。 这是介于0和100之间的值,表示百分比。
值接近于零时,除非绝对必要,否则内核不会将数据交换到磁盘。 请记住,与交换文件的交互是“昂贵的”,因为它们比与RAM的交互花费更长的时间,并且它们可能导致性能的显着降低。 告诉系统不要太依赖交换通常会使您的系统更快。
接近100的值将尝试将更多数据放入交换中以努力保持更多RAM空间。 根据应用程序的内存配置文件或服务器的使用情况,在某些情况下可能会更好。
我们可以通过输入以下内容来查看当前的swappiness值:
tungee@tungee-Macmini:~$ cat /proc/sys/vm/swappiness
60
对于桌面,swappiness
设置为60并不是一个糟糕的值。 对于服务器,您可能希望将其移近0。
我们可以使用sysctl
命令将swappiness
设置为不同的值。
例如,要将swappiness
设置为10,我们可以键入:
tungee@tungee-Macmini:~$ sudo sysctl vm.swappiness=10
vm.swappiness = 10
此设置将持续到下次重新引导。 我们可以通过在/etc/sysctl.conf
文件中添加该行来自动设置此值:
sudo vim /etc/sysctl.conf
在底部,您可以添加:
vm.swappiness=10
完成后保存并关闭文件。
调整缓存压力设置
您可能想要修改的另一个相关值是vfs_cache_pressure
,此设置配置系统将选择多少缓存inode
和dentry
信息而不是其他数据。
基本上,这是关于文件系统的访问数据。 这通常是非常昂贵的查询和非常频繁的请求,所以这是你的系统缓存的一个很好的事情。 您可以通过再次查询proc文件系统来查看当前值:
tungee@tungee-Macmini:~$ cat /proc/sys/vm/vfs_cache_pressure
100
由于它当前已配置,我们的系统会过快地从缓存中删除inode
信息。 我们可以通过键入以下内容将其设置为更保守的设置(如50):
tungee@tungee-Macmini:~$ sudo sysctl vm.vfs_cache_pressure=50
vm.vfs_cache_pressure = 50
同样,这仅适用于我们当前的会话。 我们可以通过将其添加到配置文件来改变它,就像我们使用swappiness
设置一样:
sudo vim /etc/sysctl.conf
在底部,添加指定新值的行:
vm.vfs_cache_pressure=50
完成后保存并关闭文件。