ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

银河麒麟V10SP1重装:保留数据盘的分区与fstab挂载指南

银河麒麟V10SP1重装:保留数据盘的分区与fstab挂载指南

简介:这份 PDF 文档围绕银河麒麟桌面操作系统 V10 SP1 在保留数据盘前提下重装系统展开,面向具备一定 Linux 基础、希望升级或重装时不丢失个人数据的技术人员与高级用户。内容按操作顺序串联 liveCD 查看分区、创建同名用户、自定义分区时跳过 DATA 盘格式化,以及安装后通过 blkid 获取 UUID、编辑 /etc/fstab、创建挂载目录并用 mount -a 校验,最终重启确认数据可访问,兼顾数据安全与系统稳定。文中还提示数据盘不格式化、用户名保持一致、fstab 配置检查等易错点,便于按步骤对照执行和排查问题。文档结构清晰,步骤与命令说明较完整,尤其适合作为升级重装或数据盘迁移前的预演材料。资源包共 1 个 PDF 文件,大小约 2.9MB,适合离线保存与查阅。目前已有 1653 人学习,可用于实操前流程梳理、命令对照及理解 Linux 分区、UUID 与开机自动挂载之间的关系。

1. 重装前先想清楚:数据盘不是备份,格式化按钮一按就没了

给银河麒麟桌面操作系统V10SP1做系统重装,最容易被忽略的不是装不上,而是装完发现数据盘还在、里面的东西却"看不见"了。我见过一台办公机,/home 和几个项目目录全挂在第二块盘的 data 分区上,系统崩了重装,走默认全盘安装,结果 DATA 盘图标还在,点进去只剩 home、root 两个空壳目录,桌面上原来的快捷方式一个不剩——数据其实没丢,是文件系统挂载关系断了。更糟的是另一种:自定义分区时手一抖,把数据盘那一行也勾了格式化,那就是真的没了,谁也救不回来。

这套流程适合手上有一块独立数据盘、重装时必须保住 /home 和 /root 内容的人。它不难,但每一步都押在磁盘分区和挂载点这两个判断上,错一步就是返工。

2. 装前准备:启动盘、liveCD 与分区账本

2.1 做启动盘与两个启动入口的选择

启动盘我用得最多的是 dd,理由是它不挑环境,Linux 下一条命令写完,不用装额外工具。代价是没有二次确认,写错设备名就是把自己的系统盘抹了,所以第一步永远是先看清设备名。

# 先列设备树,靠容量和挂载点认出U盘,别靠 sda/sdb 的直觉 lsblk -o NAME,SIZE,TYPE,MOUNTPOINT,MODEL # if 写镜像路径,of 写U盘整盘设备(不是分区,别带数字后缀) sudo dd if=/path/to/Kylin-Desktop-V10-SP1.iso of=/dev/sdb bs=4M status=progress oflag=sync # 落盘后强制同步一次,拔出前确认没有残留缓存 sync

bs=4M是块大小,太小慢、太大在某些U盘上反而掉速;status=progress让 dd 边写边报进度,不然全程黑屏你不知道它死了没有;oflag=sync强制每次写完同步到设备,写U盘这种场景比默认行为稳。最后那个sync不是多余的,很多人 dd 完立刻拔盘,做出来的启动盘起不来,原因就在缓存没落盘。

写完插到目标机器,开机按启动菜单键。不同主板不一样,常见的是 F12 或 F11 调一次性启动菜单,F2 或 Del 进固件设置改启动顺序。进到安装介质菜单后有两个入口:一个是 liveCD 试用模式,一个是直接安装银河麒麟操作系统。这里我的建议很明确——只要你对旧机器的分区布局不是百分百记得,就先走 liveCD。直接进安装器也能看分区,但那个界面的信息是给"配置挂载点"用的,粒度不如命令行,而且一旦点快了容易往下走。

2.2 在 liveCD 里把分区账本记下来

进 liveCD 桌面后,先别急着点安装。桌面上打开"计算机",能看到当前硬盘的分区结构,这是图形化的一遍;再在空白处右键"打开终端",跑命令,这是精确的一遍。两遍对照着看,账本就出来了。

# -h 人类可读容量,-T 显示文件系统类型,看哪些分区已经挂上、挂在哪 df -hT # 树形列出所有块设备,连带 FSTYPE、LABEL、UUID 一起出,比 df 全 lsblk -f # 直接吐 UUID,重装后写 fstab 要靠它 sudo blkid

三个命令的分工要弄清。df -hT只看已挂载的,输出里 Filesystem、Type、Size、Mounted on 四列最关键,能一眼看出哪个分区挂在/、哪个挂在/home、有没有独立的/data。lsblk -f不受挂载状态限制,没挂的分区也照样列出来,还带 LABEL 和 UUID,这是它比 df 强的地方。sudo blkid是给 fstab 用的最终数据源,UUID 从这里抄,不要从别处二手转抄。

提示:liveCD 自己也会挂载硬盘分区,通常挂在/media/下面。所以 df 里看到的挂载点未必等于旧系统的真实挂载点,别被/media/kylin/xxxx这类路径带偏,真正的挂载关系要去问旧系统的/etc/fstab——如果它还能读的话。

账本建议按下面这张表填,手写拍照都行,重装时照着它对:

设备容量文件系统卷标旧挂载点重装动作
/dev/sda1512Mvfat无/boot/efi格式化,挂 /boot/efi
/dev/sda230Gext4无/格式化,挂 /
/dev/sda38Gswap无swap格式化,设为交换分区
/dev/sdb1900Gext4DATA/data不格式化,挂 /data

2.3 三个必须先确认的参数:容量、卷标、文件系统类型

设备名是最不可靠的识别依据。/dev/sda和/dev/sdb谁是谁,取决于固件枚举顺序、SATA 口位置、有没有插U盘,同一台机器两次启动都可能变。所以我认盘只看三样:容量对不对、卷标是不是那个、文件系统类型是不是我预期的。

容量是硬指标,900G 的分区不可能是 512M 的 efi 分区,这个骗不了人。卷标次之,数据盘一般会起个 DATA 之类的名字,重装后系统自动挂载到/media/用户名/DATA,就是靠这个卷标。文件系统类型最容易被忽略:如果旧数据盘是 NTFS 或 exFAT,fstab 里就不能写 ext4,得写ntfs-3g或exfat,而且这类文件系统在 Linux 下的权限模型和 ext4 完全不同,属主信息是靠挂载参数模拟的,重装后经常会遇到"文件在但改不了"的情况。ext4 就省心得多,这也是我建议数据盘一律用 ext4 的原因。

UUID 放在最后确认,因为它会随格式化而改变。重装前抄下来的 UUID,只在"这个分区不被格式化"的前提下才有意义,用来写进新系统的 fstab。一旦格了,UUID 就重新生成,得重新 blkid。

3. 安装阶段的分区取舍:哪些钩能打,哪些不能打

3.1 创建用户这一步为什么必须和旧系统同名

安装器一路下一步到"创建用户",很多人随手填个新名字,觉得反正是自己用。这一步恰恰是后面数据能不能读回来的关键。

Linux 的文件属主记的是数字 UID,不是用户名字符串。图形界面显示"张三",是因为系统把 UID 1000 翻译成了"张三"这个名字。数据盘上那些文件,记录的是旧系统里那个用户的 UID,通常是 1000。新系统创建的第一个用户,UID 一般也是 1000,所以哪怕你换个名字,文件权限层面其实还能读写,只是显示的名字变了。

真正会翻车的是路径。用户主目录默认是/home/用户名,旧数据盘里存的是/home/旧用户名。新系统如果叫另一个名字,主目录就是/home/新用户名,你后面做 bind 挂载的时候路径对不上,桌面上那些指向旧路径的快捷方式也全部失效。加上桌面环境、浏览器配置、开发工具缓存,很多都按用户名硬编码在路径里,名字一改,一堆东西要重新配。

所以规则很简单:用户名照抄旧的,全小写,字母开头,别用大写和特殊字符。密码可以不一样,但建议也保持一致,省得自己混淆。主机名改不改无所谓,不影响数据,只影响终端提示符和一些网络配置。

注意:如果旧系统里那个用户的 UID 不是 1000(比如后来手动建过用户,把 1000 占了),那新系统第一个用户拿到 1000 就对不上了。这种情况装完后需要手动 chown,第 5 章会讲。

3.2 手动分区:格式化、挂载点与设备名的对应关系

安装方式那一步有"全盘安装"和"自定义安装"两个选项,要保留数据盘只能选自定义。全盘安装会重建分区表,数据盘一并清掉,连抢救的机会都没有。

进到分区界面后,会列出当前所有分区,双击某一行进入编辑,里面有格式化勾选框、挂载点下拉框、文件系统类型下拉框。动作对照是这样的:

分区勾选格式化文件系统挂载点说明
/dev/sda1是vfat/fat32/boot/efiUEFI 启动必须,300~500M 够用
/dev/sda2是ext4/根分区,20G 起步,装开发环境建议 50G
/dev/sda3是swap无交换分区,内存 8G 以下给等量,以上给一半
/dev/sdb1否ext4/data数据盘原样保留,卷标和数据都在

关于根分区大小,装完系统本体大概占 10G 上下,但开发机装 IDE、容器镜像、编译产物,20G 很快就见底。我的习惯是根分区给 50G 以上,剩下的空间反正都在数据盘上,不缺。

关于 efi 分区,只有 UEFI 启动的机器需要,老 BIOS 机器没有这个分区,安装器也不会要求你配。判断方法很简单:liveCD 里看一眼有没有/sys/firmware/efi目录,有就是 UEFI。配错了装完起不来,属于白干。

数据盘那一行的处理是整篇文章的核心:不勾格式化,挂载点可以先设成/data,也可以留空后面手动配。安装器对"不格式化"的分区只做挂载,不动数据。这里有个容易误解的点——安装器在这一步设的挂载点,只对安装过程生效,装完重启后并不会自动写进/etc/fstab,所以后面第 4 章还得手动配一次。这也是为什么装完首次进系统,数据盘是被临时挂到/media/用户名/DATA而不是/data的原因。

3.3 安装前的最后一次核对

点"下一步"之前,把分区表逐行念一遍:容量对不对、格式化勾没勾、挂载点写没写错。这一步花三十秒,能省掉后面几小时的返工。

三个具体的检查点。第一,数据盘那行格式化必须是空的,鼠标移上去确认勾选框状态,别看走眼。第二,U盘本身也会出现在设备列表里,容量通常是 8G、16G、32G,别把它的分区当成目标盘格了。第三,如果机器上有两块以上的硬盘,设备名可能和你在 liveCD 里记的不一样,靠容量和卷标重新认一遍,别硬套/dev/sdb1。

如果核对下来发现哪个分区拿不准,别赌。退回去重新进 liveCD,把lsblk -f再跑一遍,账本补全了再装。系统重装这件事,谨慎的成本远低于后悔的成本。

4. 装完后的挂载配置:UUID 加 fstab 才是长久之计

4.1 先卸载自动挂载的 DATA 盘

装完第一次进系统,桌面上会出现"文件系统"和"DATA"两个图标。点开 DATA,里面只有home、root两个空目录(或者看起来是空的),昨天还在桌面上的项目文件夹一个都不见了。

先别慌,这不是数据丢了。旧系统的工作方式是:数据盘挂到/data,然后再把/data/home和/data/root分别 bind 到/home和/root,所以你平时在文件管理器里看到的/home/用户名/xxx,物理上其实躺在数据盘的home/用户名/下面。重装之后这层 bind 关系没了,新系统按卷标把数据盘临时挂到/media/用户名/DATA,你打开看到的自然是数据盘的根目录——里面本来就是 home 和 root 两个子目录,东西都在里面,只是没映射回原位。

要做的第一件事是把自动挂载卸掉。图形界面在 DATA 图标上右键选"卸载",或者命令行:

# 先看清当前挂载点,别对着错误的路径卸载 findmnt | grep -i data # 卸载自动挂载的 DATA($USER 会展开成当前用户名) sudo umount /media/$USER/DATA

不卸直接往下走,等会儿mount -a会因为设备已被挂载而报错,或者出现同一个分区挂两个位置的混乱状态。如果 umount 提示target is busy,说明还有文件管理器窗口开着这个目录,先关掉窗口再试;实在不行用sudo fuser -vm /media/$USER/DATA看是谁占着。

4.2 blkid 取 UUID 与 fstab 条目写法

UUID 是分区格式化时生成的一串标识,只要不重新格式化就不会变,比设备名靠谱得多。取的时候直接跑 blkid,把 UUID 后面引号里那一串完整抄下来。

# 精确到分区,输出里 UUID= 后面引号内的内容就是你要的 sudo blkid /dev/sdb1 # 典型输出: # /dev/sdb1: LABEL="DATA" UUID="1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d" TYPE="ext4" PARTUUID="..."

抄 UUID 有个血泪经验:一定从终端里选中复制,别手打。32 位十六进制加 4 个连字符,中间错一个字符,挂载就失败,而报错信息只会告诉你找不到这个 UUID,不会告诉你错在哪一位。

改 fstab 之前先备份,这是后悔药:

# 带日期备份,改坏了随时能滚回去 sudo cp /etc/fstab /etc/fstab.bak.$(date +%F) # 麒麟桌面版自带 pluma 编辑器,用 sudo 提权打开 sudo pluma /etc/fstab

在文件末尾加一行:

# <设备> <挂载点> <类型> <选项> <dump> <fsck顺序> UUID=1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d /data ext4 defaults 0 2

六个字段逐个说清楚。第一列设备,写UUID=xxx而不是/dev/sdb1,理由前面讲过。第二列挂载点,/data这个目录必须真实存在,不存在挂载会失败。第三列文件系统类型,ext4 就写 ext4,写错会报 wrong fs type。第四列挂载选项,defaults包含 rw、suid、dev、exec、auto、nouser、async 这一套,日常够用;如果希望开机不自动挂(比如移动硬盘),把 auto 改成 noauto。第五列 dump 备份标志,现在基本没人用 dump,写 0。第六列 fsck 检查顺序,根分区是 1,其他分区写 2,不需要检查写 0;数据盘容量大的话写 0 能省一点开机时间。

字段之间用空格或 Tab 分隔都行,但不能用中文全角空格,这是复制粘贴最容易带进来的隐形错误。

4.3 建目录、mount -a 与自检

挂载点目录要先建出来。原文里建的是/data/root和/data/home,那是为了 bind 做准备;/data本身如果不存在也得建。

# -p 递归创建,已存在不报错 sudo mkdir -p /data /data/home /data/root # 按 fstab 挂载所有 auto 项,无输出代表全部成功 sudo mount -a # 验证:能看到 /data 挂上了对应的设备和文件系统类型 findmnt /data df -hT | grep -E 'data|home'

mount -a这个命令的设计很实用:它读一遍 fstab,把所有非 noauto 的条目挂一遍,成功不吭声,失败才输出。所以判断标准就一句——没有输出就是对的。如果冒出mount: /data: can't find UUID=...或者wrong fs type, bad option, bad superblock,说明 fstab 那行有问题,回头核对 UUID 和文件系统类型,别急着重启。

这里必须强调:mount -a是重启前的最后一道闸门。很多人改完 fstab 直接 reboot,结果卡在开机阶段进不去系统,只能拿 liveCD 救。养成习惯,改完先mount -a,通过了再重启。

4.4 让 /home 和 /root 落回数据盘

到 4.3 为止,数据盘挂上了/data,ls /data/home能看到旧文件了。但桌面上的东西还没回来,因为系统读的还是本地/home/用户名,不是/data/home/用户名。要把这层关系接回去,用 bind 挂载。

# 确认数据盘里的目录结构,旧用户目录应该在这里 ls -ln /data/home ls -ln /data/root

在 fstab 里/data那行下面追加两行:

# /data 必须先挂载成功,bind 才有意义,所以顺序不能颠倒 /data/home /home none bind 0 0 /data/root /root none bind 0 0

bind 挂载的意思是"把源目录原样映射到目标路径",不走文件系统驱动,本质上是同一个 inode 树的两次视图。所以源和目标必须在同一个文件系统上倒不是硬性要求,但目标路径原有的内容会被遮住——这就是为什么执行之前要确认/data/home/用户名确实存在,否则/home下面会变成空的,连登录都成问题。

none那一列是文件系统类型,bind 挂载不指定具体类型,写 none 就行。第五、六列同样写 0 0,bind 不涉及 fsck。

不是所有人都需要这一步。如果旧系统的/home本来就在系统盘上,数据盘只存项目文件,那 4.3 做完就够了,别画蛇添足。判断依据还是 liveCD 里记的那张账本:/home那一行的设备是系统盘还是数据盘。

5. 排查与避坑:重装后数据盘"不正常"的五种真相

5.1 现象:DATA 盘能打开,但里面只有 home、root 两个空目录

原因不复杂,是理解错位。数据盘的根目录从来就长这样,旧系统通过 bind 把home和root映射到了/home、/root,你在文件管理器里逛的/home/用户名其实是数据盘里的二级目录。重装后 bind 关系断了,新系统直接展示数据盘根目录,看起来就像"被清空了"。数据一直在,du -sh /data/home/*跑一下就有数。

解决就是走完 4.3 和 4.4:挂/data,补 bind,重启。如果暂时不想动 fstab,也可以临时手动挂一次看看东西在不在:sudo mount /dev/sdb1 /mnt && ls /mnt/home。

5.2 现象:/data/home 下的文件属主显示成一串数字,普通用户改不了

原因是 UID 对不上。旧系统那个用户的 UID 可能是 1000,也可能因为历史原因变成了 1001,而新系统创建的第一个用户固定从 1000 开始。一旦对不上,文件名就翻译不出来,显示成数字,权限判定也按数字 UID 走,结果就是"文件在那儿,但我没权限"。

解决分两种。装之前发现的,重装时用户名保持一致基本就避开了。已经装完的,先确认新用户的 UID:

# 看新用户的 UID/GID,输出里 uid=1000 这种 id 用户名 # 确认无误后,把数据盘里旧用户目录的属主改成新 UID sudo chown -R 1000:1000 /data/home/旧用户名

-R递归,两个数字分别是 UID 和 GID。这一步有风险,chown 之前先ls -ln看清当前属主,改错了会把系统文件的权限搞乱,所以路径一定要精确到用户目录,不要图省事对整个/data执行。

5.3 现象:手滑把数据盘勾了格式化,装完发现文件全没了

原因就一个:靠设备名认盘。/dev/sdb1这个编号在重装前后完全可能指到不同的物理分区,你以为在格系统盘,实际格的是数据盘。这类事故没有技术手段能完全挽回,格式化写入的新数据会覆盖旧数据块。

真发生了,第一件事是立刻停手,不要再往那块盘写任何东西,包括不要重装、不要往里拷文件。然后用 liveCD 启动,用 photorec、testdisk 这类工具扫描未分配空间尝试恢复,能捞回多少看覆盖程度。但说实话,成功率不高。真正的后悔药是装之前把关键文件复制到另一块物理盘或者外部存储上,"数据盘"不等于"备份盘",这个区别值得写张便签贴显示器上。

5.4 现象:mount -a 报 can't find UUID 或 wrong fs type

前者是 UUID 抄错了,后者是文件系统类型写错了,还有一种隐蔽情况是 fstab 里混进了中文全角空格或者不可见字符。

排查顺序:先sudo blkid /dev/sdb1重新取一次 UUID,逐字符比对 fstab 里那行;再确认第三列写的是不是ext4(如果数据盘实际是 xfs 就得写 xfs,用lsblk -f看 FSTYPE 列);最后用cat -A /etc/fstab看行尾有没有奇怪的^I之外的控制字符,正常应该是$结尾。改完再跑mount -a,没输出就过了。

5.5 现象:改完 fstab 重启,卡在紧急模式或黑屏光标

这是最典型的一次翻车。fstab 里有挂不上的条目,systemd 在启动阶段等挂载超时,直接把你丢进 emergency mode,连图形界面都进不去。

救法有两条。能进 emergency shell 的,输入 root 密码,先mount -o remount,rw /把根分区改成可写,然后vi /etc/fstab把新加的那行注释掉,reboot。进不去 shell 的,用 liveCD 启动,手动挂载根分区到/mnt,编辑/mnt/etc/fstab,卸载后重启。

避免方法前面说过,这里再钉一遍:改之前cp备份,改完mount -a验证,通过了才重启。我吃过一次亏之后,fstab 相关操作一律按这三步走,没再出过事。

6. 装完怎么验证:重启两次才算真跑通

mount -a没有输出,只说明当前这次挂载成功了,不代表重启后还能挂上。真正的验证要跨过一次重启,而且得验两遍。

第一遍在改完 fstab、执行完mount -a之后,当场验:

# 看挂载点和来源设备对不对得上 findmnt /data findmnt /home # 看文件系统类型、容量、使用率是否合理 df -hT | grep -E 'data|home' # 看属主,确认不是一串看不懂的数字 ls -ln /data/home # 写入测试:能建文件、属主正确,才算权限通 touch /data/home/用户名/verify_test.txt && ls -l /data/home/用户名/verify_test.txt

第二遍重启之后,把上面这套再跑一遍。之所以要两次,是因为 fstab 的坑有一半藏在开机顺序里——比如/data/home的 bind 写在/data前面,手动mount -a时/data可能已经挂着了所以看不出问题,重启后就暴露。桌面上的"数据盘"图标也是重启后才会按新挂载点重新生成。

几个验证点的期望值,对照着看:

验证项命令期望结果
挂载来源findmnt /dataSOURCE 是数据盘分区,FSTYPE 是 ext4
容量df -hT | grep data大小接近数据盘实际容量,不是几十 G
属主ls -ln /data/home显示 uid=1000 这类数字,不是问号或异常值
读写touch 测试文件创建成功,属主是当前用户
桌面文件管理器能看到"数据盘"入口,点进去有原文件

还有一个容易被忽略的点:桌面上的文件快捷方式。如果旧系统把文件摆在桌面上,那些.desktop或者普通文件的链接路径是按旧/home/用户名/桌面写的,bind 挂载恢复之后它们会自动重新出现,不需要重建。如果没出现,去/data/home/用户名/桌面里看看物理文件在不在,在的话手动拷回桌面一次即可。

那次在一台跑着模拟项目X的机器上重装,我就是图省事改完 fstab 直接重启,结果 bind 那两行顺序写反,开机落在 emergency mode,蹲在机房里拿手机查命令。从那以后我每次动 fstab,都是先cp备份、再mount -a、最后重启后完整跑一遍上面这套验证,一步不省。数据盘保得住,靠的不是运气,是这几条命令跑没跑。希望帮到你。

本文还有配套的精品资源,点击获取

返回列表