我的 32GB USB 驱动器上安装了 Ubuntu 14.04。我最近读到,使用交换分区会导致驱动器的大量读写,从而使操作系统运行缓慢并缩短驱动器的使用寿命。昨天我使用检查了 RAM 使用情况,发现free
4GB 中大约有 3GB 被使用,而 1.5GB 的交换分区中,有 900MB 被使用。删除交换分区是否安全?
答案1
请先阅读下文!
嗨,Ian,是的,你可以用 Live Stick 删除 Swap,但我不推荐这样做。这可能会导致问题,具体取决于你使用的操作系统。有一种更好的方法可以做到这一点:启动终端(ctrl + alt + t),然后输入
sudo swapoff /dev/hdb2
将 hdb2 替换为您的交换分区目录。您可以通过输入以下命令获取目录:
sudo fdisk -l
现在您的交换区应该已禁用。然后只需从 /etc/fstab 中删除交换区条目即可。您可以通过输入以下命令执行此操作:
sudo nano /etc/fstab
然后按回车键并删除扩展交换信息的行。
重启!
之后,您可以使用 gparted 或您选择的分区应用程序轻松删除交换分区。但我建议您先让它留在那里。
停下来,在做上面提到的任何事情之前,请阅读以下内容:您说得对,交换分区会产生大量流量,但这可能不会使操作系统变慢。除了删除交换之外,另一种可能性是对其进行自定义:启动终端并运行以下命令:
sudo nano /etc/sysctl.conf
然后添加这一行:
vm.swappiness=10
这会自定义交换,确定何时使用。交换量越低,使用的交换量就越少。10 已经非常少了。因此,只有在绝对没有更多可用 RAM 的最坏情况下才会使用交换。
就是这样!
资料来源:
答案2
不是的,不是的。
但是,您可以运行诸如 Zram 之类的脚本来使用压缩的 RAM 内存作为交换空间,而不是使用物理分区,而不是禁用交换功能,这样您的系统就不会崩溃。
步骤1:
在打开的终端中执行以下命令:
sudo nano /etc/init.d/zram
并将以下内容复制/粘贴到文件中:
### BEGIN INIT INFO
# Provides: zram
# Required-Start: $local_fs
# Required-Stop: $local_fs
# Default-Start: S
# Default-Stop: 0 1 6
# Short-Description: Use compressed RAM as in-memory swap
# Description: Use compressed RAM as in-memory swap
### END INIT INFO
# Author: Antonio Galea <[email protected]>
# Thanks to Przemysław Tomczyk for suggesting swapoff parallelization
FRACTION=75
MEMORY=`perl -ne'/^MemTotal:\s+(\d+)/ && print $1*1024;' < /proc/meminfo`
CPUS=`grep -c processor /proc/cpuinfo`
SIZE=$(( MEMORY * FRACTION / 100 / CPUS ))
case "$1" in
"start")
param=`modinfo zram|grep num_devices|cut -f2 -d:|tr -d ' '`
modprobe zram $param=$CPUS
for n in `seq $CPUS`; do
i=$((n - 1))
echo $SIZE > /sys/block/zram$i/disksize
mkswap /dev/zram$i
swapon /dev/zram$i -p 10
done
;;
"stop")
for n in `seq $CPUS`; do
i=$((n - 1))
swapoff /dev/zram$i && echo "disabled disk $n of $CPUS" &
done
wait
sleep .5
modprobe -r zram
;;
*)
echo "Usage: `basename $0` (start | stop)"
exit 1
;;
esac
然后,按CTRL+o保存文件,按CTRL+x退出文件。
第二步:
首先,禁用磁盘交换:
sudo swapoff -a
然后,在打开的终端中执行以下三个命令,使脚本可执行、启动 zram,并使 zram 在启动时自动启动:
sudo chmod +x /etc/init.d/zram
sudo /etc/init.d/zram start
sudo update-rc.d zram defaults
第三步:
一旦启用了 zram 交换,就必须编辑 /etc/fstab,以便在启动时不启用磁盘交换:
sudo nano /etc/fstab
找到以以下内容开头的行:
# swap was on . . .
#并在以下行的开头放置一个以将其更改为:
UUID= . . .
改为
#UUID= . . .
例子:
# swap was on /dev/sdb5 during installation
#UUID=abcd65432-d109-e8765-f43-210987ghi654 none swap sw 0 0
或者您也可以删除该行。
最后按CTRL+o保存文件,按CTRL+x退出文件。
无需重启。此外,您可以通过执行以下命令来验证 zram 是否正在使用:
sudo swapon -s
资料来源:
https://code.google.com/p/compcache/
http://en.wikipedia.org/wiki/Zram
解释:
虽然您可能有 4GB 的 RAM,并且可能不会为您正在运行的应用程序“使用”大量 RAM,但 Linux 会将剩余的 RAM 用作缓存 RAM,从而通过将使用的应用程序缓存到 RAM 而不是在下次打开应用程序时从磁盘分页来减少磁盘活动。当缓存 RAM 填满 RAM 或应用程序需要使用缓存数据占用的 RAM 时,系统会将部分缓存 RAM 交换到交换分区,以释放 RAM 供正在使用的应用程序使用,并将最近使用的应用程序缓存在 RAM 中。
此外,为了休眠和/或暂停,某种形式的交换也是必要的。
由于交换功能,您的系统能够更好地利用可用内存,减少整体磁盘活动,并在高负载下显著提高系统响应能力,同时防止因内存过大导致系统崩溃。