我们禁用了已安装的旧交换空间(磁盘)/dev/mapper/centos-swap
以增加根的大小(/
)。然后我们在以下位置创建新的交换文件/dev/sda3
:
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 60G 0 disk
├─sda1 8:1 0 500M 0 part /boot
├─sda2 8:2 0 19.5G 0 part
│ └─centos-root 253:0 0 19.5G 0 lvm /
└─sda3 8:3 0 8G 0 part [SWAP]
sr0 11:0 1 1024M 0 rom
现在系统成功加载交换空间:
# free -h
total used free shared buff/cache available
Mem: 7.6G 1.2G 5.6G 11M 863M 6.2G
Swap: 8.0G 0B 8.0G
但是当我们重新启动系统时,操作系统会报告找不到centos-swap
文件的错误:
...
+ cat /proc/cmdline
Kernel command line: BOOT_IMAGE=/vmlinuz-3.10.0-229.14.1.el7.x86_64 root=/dev/mapper/centos-root ro rd.lvm.lv=centos/root rd.lvm.lv=centos/swap crashkernel=auto rhgb quiet LANG=en_US.UTF-8
...
[ 131.037146] ***** dracut-initqueue[278]: Failed to find logical volume "centos/swap"
[ 192.680201] ***** dracut-initqueue[278]: Warning: Could not boot.
[ 192.683555] ***** dracut-initqueue[278]: Warning: /dev/centos/swap does not exist
[ 192.694602] ***** systemd[1]: Starting Dracut Emergency Shell...
...
然后操作系统以紧急模式运行并且操作系统等待我们exit
从输入Dracut Emergency Shell
。
如何设置交换空间而不会在启动时出现任何问题?
答案1
解决方案:
在 CentOS 7 的默认安装中swap
,在 中创建的分区root
。当我们在 中使用默认参数禁用交换时,在中创建的分区无法更新。boot
sda
swapoff
boot
/proc/cmdline
我们安装grub-customizer
(或任何其他 grub 编辑器)并删除预定义的交换规则。例如:
BOOT_IMAGE=/vmlinuz-3.10.0-229.14.1.el7.x86_64 root=/dev/mapper/centos-root ro rd.lvm.lv=centos/root rd.lvm.lv=centos/swap crashkernel=auto rhgb quiet LANG=en_US.UTF-8
变成:
BOOT_IMAGE=/vmlinuz-3.10.0-229.14.1.el7.x86_64 root=/dev/mapper/centos-root ro rd.lvm.lv=centos/root crashkernel=auto rhgb quiet LANG=en_US.UTF-8
现在交换已启用,并且启动时不会出现错误。