简单来说,问题的核心在于挂载路径不统一。在麒麟操作系统中,硬盘默认会被自动挂载到/run/media/root/xxxx这类临时目录下——这与插入U盘后的行为完全一致。但如果您需要正式部署应用、存储用户数据,路径不统一会导致权限混乱,甚至服务启动失败。因此,必须将磁盘重新挂载到/data目录下,才能一劳永逸地解决这个问题。
具体操作步骤:编辑/etc/fstab文件,使用分区UUID替换原有的挂载项,并将目标路径指向/data。流程很简单:先卸载原分区、创建空挂载点、临时挂载验证一次,然后备份fstab、写入UUID行,最后用mount -a测试通过才算完成。只要耐心按步骤执行,就能稳定实现永久挂载。

确认目标分区与当前挂载状态
打开终端,输入lsblk命令,所有块设备会列出显示。找到需要操作的那块磁盘——比如/dev/sdb1,查看它当前的挂载点。如果显示为/run/media/root/xxx这类临时路径,说明这就是我们要手动接管的目标——它是自动挂载的可移动设备行为,需要改成固定挂载。
再执行mount | grep sdb1,确认分区确实已挂载。如果已经挂载,必须先卸载才能重新指定路径,否则系统会提示“device is busy”而拒绝操作。
创建目标挂载点并卸载原分区
运行sudo mkdir -p /data,新建一个空目录作为新挂载点。注意:这个目录必须为空,否则挂载后原目录下的内容会被隐藏,导致数据访问中断。
接着执行sudo umount /dev/sdb1卸载当前挂载。如果提示“target is busy”,说明有进程仍在访问该路径。使用lsof +D /run/media/root/xxx找出占用进程并结束它;如果无法解决,可以重启进入单用户模式再操作。
临时重挂载到新路径
直接运行sudo mount /dev/sdb1 /data,即可完成一次性的路径切换。随后用df -h | grep sdb1验证,输出应显示/dev/sdb1对应的挂载点已变为/data,而非旧路径。
这个命令很简单,执行后就能立即使用。但请注意——这只是临时生效,重启后挂载点会恢复原状。因此必须继续配置永久挂载。
永久修改挂载点:编辑fstab文件
第一步:获取分区的唯一标识。运行sudo blkid /dev/sdb1,记下输出中的UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"。务必使用UUID,不要用/dev/sdb1——设备名可能因硬件顺序变化而改变,一旦重启挂载失败,系统可能卡死。
第二步:备份原fstab文件。执行sudo cp /etc/fstab /etc/fstab.bak,防止误操作导致无法开机。
第三步:用vi打开fstab:sudo vi /etc/fstab,在末尾新起一行,写入:
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /data ext4 defaults 0 2
其中ext4必须与实际文件系统类型一致(可通过sudo file -sL /dev/sdb1确认)。最后的2表示该分区参与开机fsck检查,数据盘建议保留此值。如果原fstab中已存在针对/dev/sdb1的挂载条目,必须删除,否则重启后会报重复挂载。
保存退出后,执行sudo mount -a测试fstab语法是否正确——没有任何输出即表示成功。如果出现错误提示,请立即返回修正,切忌强行重启,否则很可能无法进入图形界面。
