最近,我为服务器添加了更多内存,现在我的内存总量为 24GB。最初,我将操作系统设置为具有 2GB 交换空间。
/dev/sdc1 1 281 2257101 82 Linux swap / Solaris
/dev/sdc2 * 282 60801 486126900 83 Linux
目前已为交换空间分配了 2GB,但阅读了相关资料后发现似乎不够。对于具有 24GB 的系统,我考虑分配至少 10GB 的交换空间。
我的问题是:我可以在操作系统运行时执行此操作吗?我必须重新安装吗?我正在使用 OpenSuse 11.3
答案1
您决定在安装时创建一个单独的交换分区。您无法在线调整其大小 - 即使离线调整大小也会花费大量时间,并且存在损坏 /dev/sdc2 上后续文件系统的潜在风险。
解决这个问题最简单的办法是,要么在你目前不使用的另一个磁盘上创建一个新的交换分区(或者可以离线重新分区),要么干脆在现有的文件系统中使用交换文件(这会带来一些小问题)。由于文件系统开销导致的性能损失)。
添加交换分区/文件的一般步骤:
- 使用以下方法创建类型为 82h 的新分区或新的 8 GB 文件
dd if=/dev/zero of=/swapfile bs=1M count=8192
mkswap /swapfile
使用或初始化它mkswap /dev/sdXX
- 使用
swapon /swapfile
或者swapon /dev/sdXX
分别启用新的交换空间 - 在 /etc/fstab 中添加一个条目,以确保新的交换空间在重启时被激活
您当前的交换分区仍在使用中,您可能希望删除它以减少复杂性。只需使用swapoff /dev/sdc1
暂时禁用它的使用并删除/etc/fstab
答案2
在这种情况下,您需要交换吗?我不知道您的系统上运行着什么,但我尝试在服务器中留出足够的内存以完全避免交换...(我确实有它,但只是作为故障保护,如果我的服务器开始交换,我会购买更多内存...)
答案3
您必须重新对磁盘进行分区。如果我没记错的话,parted 不支持移动 Linux 分区的开头,但您也可以缩小 Linux 文件系统和分区,然后在磁盘末尾进行另一次交换。系统在线时您无法执行此操作。
另一种解决方案是使用大文件作为交换。(不知道现在这是否是个好主意。)
答案4
1 关闭所有交换进程
sudo swapoff -a
2 调整交换大小
sudo dd if=/dev/zero of=/swapfile bs=1G count=8
if = input file
of = output file
bs = block size
count = multiplier of blocks
3 使文件可用作交换文件
sudo mkswap /swapfile
4 激活交换文件
sudo swapon /swapfile
5 检查可用的交换量
grep SwapTotal /proc/meminfo