近期因为服务器被重装系统导致之前配置全部丢失,所幸之前把网站的相关数据都放到了vps的另一块硬盘上,所以即使系统盘重装也不会影响数据的存储。正好也在重装的时候将之前的CentOS6升级到了CentOS8。系统安装完成后依据以前的经验和习惯,直接打开了/etc/rc.local文件,在这个文件最后添加一行:
1 |
mount /dev/xvdb1 /stroage/ |
然后保存文件,认为万事大吉了。没想到后续因为机房又一次断电导致服务器再次重启,重启后相关的服务竟然一个都没启动。进入ssh执行 df -h 命令输出如下:
1 2 3 4 5 6 7 8 9 10 |
[root@SCPFoundation ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 2.0G 4.0K 2.0G 1% /dev/shm tmpfs 2.0G 17M 1.9G 1% /run tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup /dev/mapper/centos-root 8.0G 5.9G 2.2G 73% / /dev/xvda1 976M 111M 799M 13% /boot tmpfs 392M 0 392M 0% /run/user/0 |
这不就是显然的没有挂盘吗!但是之前也修改了rc文件,按理说是可以的。于是后续百度一下,得出了相关结果:
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run ‘chmod +x /etc/rc.d/rc.local’ to ensure
# that this script will be executed during boot.
/etc/rc.local
于是先执行了 ll /etc/rc.local 命令,发现这个文件确实是软连接到 /etc/rc.d/rc.local 文件上的,之后使用 ll 命令检查这个文件:
1 2 |
[root@SCPFoundation ~]# ll /etc/rc.d/rc.local -rw-r--r--. 1 root root 474 Feb 5 2020 /etc/rc.d/rc.local |
发现这个文件确实没有可执行命令,按照rc文件里的说法需要手动执行chmod命令给他添加权限后才可以在启动时执行它内部的相关命令。结合前文所述该文件仅为兼容用途,可以推测出新版本可能已经有计划去掉这个方法。所以挂盘需要采用新的办法。继续搜索,找到了一个新的方法:首先使用 blkid 命令检查需要挂载的硬盘信息:
1 2 |
[root@SCPFoundation ~]# blkid /dev/xvdb1 /dev/xvdb1: UUID="1145a141-d919-8101-bd14-b51419ac19aa" BLOCK_SIZE="4096" TYPE="ext3" PARTUUID="1bf14ab5-14" |
在这个输出结果中记录下硬盘的UUID和硬盘的TYPE,在这里是 1145a141-d919-8101-bd14-b51419ac19aa 和 ext3 ,之后修改 /etc/fstab 文件,在最后添加一行:
1 |
UUID=1145a141-d919-8101-bd14-b51419ac19aa /stroage ext3 defaults 0 0 |
UUID=1145a141-d919-8101-bd14-b51419ac19aa | 磁盘分区的UUID |
/stroage | 挂载目录 |
ext3 | 分区格式 |
defaults | 挂载时所要设定的参数(只读,读写,启用quota等),输入defaults包括的参数有(rw、dev、exec、auto、nouser、async) |
0 | 使用dump是否要记录,0为不需要,1为需要 |
0 | 开机时检查的顺序,boot系统文件为1,其他文件系统都为2,如不要检查就为0 |
重启,发现这个分区果然可以成功的自动挂载了,问题解决。
这次问题出现的主要原因就是CentOS从7开始已经计划取消 /etc/rc.local 中脚本自动执行这个以往的习惯,若要使用这个文件自动执行需要手动添加权限。另外,CentOS官方也更推荐使用其他方法来达成开机自动执行脚本的功能。