这个问题有两个方面:
我有一台蹩脚的小上网本,只有 4GB 内存,我已经在上面运行 Linux 几年了,只有 4GB 内存。在这种情况下它运行良好,但有时会冻结,通常是因为 Firefox。我今天设置了一个交换分区,这有很大帮助,但我想知道是否有其他方法可以将 USB 记忆棒设置为外部 RAM 或等效的方法?
另外,当我几年前最初安装这个发行版时,为什么没有人问我有关创建交换分区的问题?似乎是一个奇怪的问题被排除在安装过程之外。
最后,作为对“为什么你已经安装了几年,但现在才设置交换分区?”这一潜在问题的先发制人的答案:我根本没有考虑过它。
答案1
如果您的笔记本电脑仍在使用旋转硬盘,那么通过将磁盘替换为 SSD,您将获得巨大的改进。 (我推荐 Crucial MX500 系列。)
完成后,您可以将交换文件添加到文件系统中。这可能比使用外部 USB 记忆棒进行交换要快得多。
以 root 身份运行这些命令(sudo -s
例如):
# Create 4GiB swapspace file
dd bs=1M count=$((4*1024)) </dev/zero >/var/.swap_1
# Prepare the file as swapspace
chmod 600 /var/.swap_1
mkswap -L swap_1 /var/.swap_1
# Enable swapping
swapon /var/.swap_1
# Ensure it is used on reboot too
echo /var/.swap_1 none swap sw 0 0 >>/etc/fstab
答案2
是否可以使用 USB 记忆棒作为附加 RAM,而不使用交换分区?
不。从系统的角度来看,内存要么是内存(主存储器,物理连接到处理器总线)或交换,将扩展内存映射到另一个设备(通常是磁盘)。没有其他类型的通用记忆。
但您可以拥有多个交换设备并为每个交换设备分配优先级,以便首先使用速度较快的设备。那么您的 USB 记忆棒(比本地磁盘分区慢)将仅作为最后的手段使用。
例如,在USB磁盘上创建交换空间(最好是一个分区),运行mkswap
和swapon
with --priority
(并更改/etc/fstab
以调整磁盘上交换空间的优先级)。
然后,您将拥有主内存、磁盘上的高优先级交换和 USB 记忆棒上的低优先级交换。
当开始使用较慢的交换时,系统可能不会非常敏感,但它应该继续运行。
swapon --show
会让您知道每个交换空间的使用情况、优先级和类型。
答案3
是否有任何替代方法可以将 USB 记忆棒设置为外部 RAM 或等效物?
就速度和访问时间而言,USB 驱动器比计算机中的 RAM 慢几个数量级。因此,它可以在您的内部硬盘驱动器中发挥作用(可能是最好的情况)。
RAM 位于内存总线上,可以直接由处理器指令访问,无需多费周折。 USB 驱动器上的内容需要通过驱动程序软件向 USB 驱动器请求,驱动程序软件将请求转换为 USB 数据包,并解包 USB 驱动器响应的内容。所以不行。您的 USB 驱动器不能成为 RAM 的扩展。
您可以从中腾出更多的交换空间(或者您可以在上面存储通常不需要的东西,以便在硬盘驱动器上有更多的交换空间)。就是这样。
另外,当我几年前最初安装这个发行版时,为什么没有人问我有关创建交换分区的问题?似乎是一个奇怪的问题被排除在安装过程之外。
您忘记提及您正在使用哪个发行版,因此没有人可以回答。
然而,在过去的 1.5 年中,我遇到的所有具有正确安装程序的发行版通常都会默认创建包含交换空间的磁盘布局。因此,您可能正在使用适当的分区,或者您选择了手动分区而不是使用默认分区,并且忘记添加 SWAP 分区。
答案4
如果不是分区,则只需使用交换文件。您可以使用以下命令创建一个:
dd if=/dev/zero of=/pendrive/swapfile count=4k bs=1M
mkswap /pendrive/swapfile
swapon /pendrive/swapfile
这里的问题是,当交换文件正在使用时,您无法删除随身碟。如果您这样做,您的系统可能会崩溃。要关闭此交换文件,请使用命令:
swapoff /pendrive/swapfile