系统RAM数量 | 推荐交换空间 | 推荐与休眠的交换 |
小于2GB | RAM数量的2倍 | RAM数量的3倍 |
2GB-8GB | 等于RAM的数量 | RAM数量的2倍 |
8 GB-64 GB | 内存数量的0.5倍 | 1.5倍的RAM数量 |
超过64 GB | 工作负荷依赖 | 不建议冬眠 |
在上面列出的每个范围之间的边界(例如,具有2GB、8GB或64 GB系统RAM的系统),对选择的交换空间和休眠支持使用谨慎。如果您的系统资源允许的话,增加交换空间可能会带来更好的性能。
当然,大多数Linux管理员对于交换空间的适当数量有自己的想法-以及几乎所有其他的东西。下表2是我根据个人在多种环境中的经验提出的建议。这些可能不适用于您,但与表1一样,它们可能会帮助您开始工作。
表2:作者推荐的系统交换空间
RAM数量 | 推荐交换空间 |
≤2GB | 2x RAM |
2GB-8GB | =RAM |
>8GB | 8GB |
这两个表中的一个考虑因素是,随着RAM数量的增加,超过某个点,添加更多的交换空间只会在交换空间几乎被填满之前就会导致混乱。如果您在遵循这些建议的同时,虚拟内存太少,则应该在可能的情况下添加更多的RAM,而不是更多的交换空间。与影响系统性能的所有建议一样,请使用对特定环境最有效的建议。这将需要时间和精力来根据您的Linux环境中的条件进行实验和进行更改。
将更多的交换空间添加到非lvm磁盘环境中。
由于已经安装了Linux的主机上对交换空间的需求发生了变化,可能需要修改为系统定义的交换空间的数量。此过程可用于任何需要增加交换空间的一般情况。它假定有足够的可用磁盘空间。此过程还假定磁盘在“原始”EXT 4和交换分区中分区,不使用逻辑卷管理(LVM)。
要采取的基本步骤很简单:
不应该需要重新启动。
为了安全起见,在关闭交换之前,您至少应该确保没有运行应用程序,也没有使用交换空间。这,这个,那,那个free或top命令可以告诉您是否正在使用交换空间。为了更安全,您可以恢复到运行级别1或单用户模式。
使用关闭所有交换空间的命令关闭交换分区:
swapoff -a
现在,在硬盘上显示现有分区。
fdisk -l
这将显示每个驱动器上的当前分区表。按编号标识当前交换分区。
启动fdisk在与命令交互的模式下:
fdisk /dev/<device name>
例如:
fdisk /dev/sda
在这一点上,fdisk现在是交互式的,并且将只在指定的磁盘驱动器上运行。
使用fdiskp子命令来验证磁盘上是否有足够的空闲空间来创建新的交换分区。硬盘上的空间以512字节块和起始和结束柱面数表示,因此您可能需要做一些计算来确定分配分区之间和末尾的可用空间。
使用n命令创建一个新的交换分区。fdisk会问你启动汽缸的问题。默认情况下,它选择编号最低的可用圆柱.如果希望更改,请键入起始气缸的数目。
这,这个,那,那个fdisk命令现在允许您以多种格式输入分区的大小,包括最后一个圆柱号或以字节、KB或MB为单位的大小。输入4000米,这将在新分区上提供大约4GB的空间(例如),然后按Enter键。
使用p子命令,以验证分区是否按您指定的方式创建。注意,除非使用结束圆柱号,否则分区可能不是您指定的。这,这个,那,那个fdisk命令只能在整个圆柱上以增量方式分配磁盘空间,因此分区可能比指定的要小或大一些。如果分区不是您想要的,您可以删除它并再次创建它。
现在有必要指定新分区为交换分区。分命令t允许您指定分区的类型。所以进入t,指定分区号,当它请求十六进制代码分区类型时,类型82,即Linux交换分区类型,然后按Enter键。
当您对所创建的分区感到满意时,请使用w命令将新分区表写入磁盘。这,这个,那,那个fdisk程序在完成修改后的分区表后将退出并返回到命令提示符。您可能会收到以下消息:fdisk完成编写新分区表:
The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot. Syncing disks.
此时,您可以使用partprobe命令强制内核重新读取分区表,以便不需要执行重新启动。
partprobe
现在使用以下命令fdisk -l要列出分区和新的交换分区,应该在列出的分区中。确保新的分区类型是“Linux交换”。
为了指向新的交换分区,必须修改/etc/fSTAB文件。现有的行可能如下所示:
LABEL=SWAP-sdaX swap swap defaults 0 0
哪里X是分区号。根据新交换分区的位置,添加一个类似于此的新行:
/dev/sdaY swap swap defaults 0 0
确保使用正确的分区号。现在,您可以执行创建交换分区的最后一步。使用mkswap命令将分区定义为交换分区。
mkswap /dev/sdaY
最后一步是使用以下命令打开交换:
swapon -a
您的新交换分区现在与以前存在的交换分区一起联机。您可以使用free或top验证这一点的命令。
将交换添加到lvm磁盘环境中。
如果您的磁盘安装程序使用LVM,则更改交换空间将相当容易。同样,这假设当前交换卷所在的卷组中有可用的空间。默认情况下,LVM环境中FedoraLinux的安装过程会将交换分区创建为逻辑卷。这很容易,因为您可以简单地增加交换卷的大小。
以下是在LVM环境中增加交换空间所需的步骤:
首先,让我们使用lvs命令(列出逻辑卷)。
[root@studentvm1 ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert home fedora_studentvm1 -wi-ao---- 2.00g pool00 fedora_studentvm1 twi-aotz-- 2.00g 8.17 2.93 root fedora_studentvm1 Vwi-aotz-- 2.00g pool00 8.17 swap fedora_studentvm1 -wi-ao---- 8.00g tmp fedora_studentvm1 -wi-ao---- 5.00g usr fedora_studentvm1 -wi-ao---- 15.00g var fedora_studentvm1 -wi-ao---- 10.00g [root@studentvm1 ~]#
您可以看到当前交换大小为8GB。在本例中,我们希望将2GB添加到此交换卷中。首先,停止现有的交换。如果正在使用交换空间,则可能必须终止正在运行的程序。
swapoff -a
现在增加逻辑卷的大小。
[root@studentvm1 ~]# lvextend -L +2G /dev/mapper/fedora_studentvm1-swap Size of logical volume fedora_studentvm1/swap changed from 8.00 GiB (2048 extents) to 10.00 GiB (2560 extents). Logical volume fedora_studentvm1/swap successfully resized. [root@studentvm1 ~]#
运行mkswap命令将整个10 GB分区放入交换空间。
[root@studentvm1 ~]# mkswap /dev/mapper/fedora_studentvm1-swap mkswap: /dev/mapper/fedora_studentvm1-swap: warning: wiping old swap signature. Setting up swapspace version 1, size = 10 GiB (10737414144 bytes) no label, UUID=3cc2bee0-e746-4b66-aa2d-1ea15ef1574a [root@studentvm1 ~]#
打开掉包。
[root@studentvm1 ~]# swapon -a [root@studentvm1 ~]#
现在,使用List块设备命令验证新的交换空间是否存在。同样,不需要重新启动。
[root@studentvm1 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 60G 0 disk |-sda1 8:1 0 1G 0 part /boot `-sda2 8:2 0 59G 0 part |-fedora_studentvm1-pool00_tmeta 253:0 0 4M 0 lvm | `-fedora_studentvm1-pool00-tpool 253:2 0 2G 0 lvm | |-fedora_studentvm1-root 253:3 0 2G 0 lvm / | `-fedora_studentvm1-pool00 253:6 0 2G 0 lvm |-fedora_studentvm1-pool00_tdata 253:1 0 2G 0 lvm | `-fedora_studentvm1-pool00-tpool 253:2 0 2G 0 lvm | |-fedora_studentvm1-root 253:3 0 2G 0 lvm / | `-fedora_studentvm1-pool00 253:6 0 2G 0 lvm |-fedora_studentvm1-swap 253:4 0 10G 0 lvm [SWAP] |-fedora_studentvm1-usr 253:5 0 15G 0 lvm /usr |-fedora_studentvm1-home 253:7 0 2G 0 lvm /home |-fedora_studentvm1-var 253:8 0 10G 0 lvm /var `-fedora_studentvm1-tmp 253:9 0 5G 0 lvm /tmp sr0 11:0 1 1024M 0 rom [root@studentvm1 ~]#
您还可以使用swapon -s命令,或top, free,或者其他几个命令中的任何一个来验证这一点。
[root@studentvm1 ~]# free total used free shared buff/cache available Mem: 4038808 382404 2754072 4152 902332 3404184 Swap: 10485756 0 10485756 [root@studentvm1 ~]#
注意,不同的命令以不同的形式显示或要求设备特殊文件作为输入。在/dev目录中访问特定设备的方式有很多种。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接