Ubuntu22.04系统在将硬盘格式化分区后,为了将挂载信息持久化,我们会修改/etc/fstab文件,
在教程:http://help.boluoyun.com/admin_discussion/thread-281-1-1.html 中,使用的命令为:
```
echo "/dev/sdb1 /www ext4 defaults 0 0" >> /etc/fstab
```
这句话的意思是:让系统启动时将设备/dev/sdb1挂载到/www目录的位置,文件系统为ext4,采用默认的defaults参数,不备份,不检查。
--------------------------------------
但笔者发现,这种方法或许并不稳定,因为设备名是根据内核启动时设备发现的顺序来定的,挂载的数据盘有时是/sda,有时是/sdb。这会导致fstab中的配置失效,而配置文件采用的是defaults默认参数,从而会中断启动过程,进入应急模式。

如下图:

1.png
   
     如果你加上了nofails参数,就会在遇到问题时跳过,也就是挂载失败,但是可以正常启动,比如:"/dev/sdb1 /www ext4 defaults,nofail 0 0",但是即便启动了,在执行mount -a 命令进行挂载时也会报错(因为/dev/sdb1的设备名出错了,如图,这块硬盘之前是/dev/sdb的,重启后却变为了/dev/sda)。

2.png

   为了解决重启可能导致设备名发生变化的问题,我们可以用UUID来代替设备名,作为fstab的名称。解决步骤如下:

1. 硬盘的分区、格式化的过程都跟上文中提到的教程一样,不用变化。在格式化硬盘后,但是没mount的时候,我们用命令 blkid /dev/sda1 来获取设备的uuid(注意命令的设备名,视情况而定)。

2. 获取到uuid后更新fstab,也可以顺便加上nofail的参数(也可以再加一些其他参数)命令:echo "UUID=[这里替换为你的设备uuid] /www ext4 defaults,nofail 0 0" >> /etc/fstab

3.png

3. 修改完成后执行:mount -a   没有报错即成功。

=======================================

 感谢我们云主机用户:Loopy 提供本教程