1. 先弄明白麒麟V10SP1的"数据盘"到底是怎么回事
银河麒麟桌面操作系统 V10 SP1 的"系统重装保留数据盘",本质上不是某个复选框的功劳,而是你在动手之前有没有把这块盘的身份、挂载方式、归属关系摸清楚。很多人第一次重装都会下意识地认为:数据盘就是独立分区,只要安装时不勾格式化就行。这个判断方向是对的,但真实场景往往比这复杂——数据盘里挂的东西不只是几个文档文件夹,还牵着家目录绑定、用户 UID、应用配置、安全标签一连串问题。搞清楚这些,重装才不会变成"数据还在但打不开"的尴尬局面。
1.1 全盘安装默认切出来的那几块分区
先用最朴素的方式看一眼麒麟全盘安装的默认结果。装完之后执行lsblk,你能看到一块物理盘被切成了若干分区,典型布局大致是这样:
| 分区 | 典型大小 | 挂载点 | 作用 |
|---|---|---|---|
| 分区1 | 300MB~512MB | /boot/efi | EFI 引导,UEFI 模式必需 |
| 分区2 | 1GB~2GB | /boot | 内核与 initramfs |
| 分区3 | 20GB~40GB | / | 系统根目录,装系统和软件 |
| swap | 内存 1~2 倍 | swap | 交换分区 |
| 大分区 | 剩余空间 | /data | 数据盘,用户数据 |
| 恢复分区 | 视版本 | 无(或 recovery) | 一键还原用的备份镜像 |
这里面最容易被误伤的就是/data。它是整块盘里容量最大的一块,很多人一看"这么大,肯定是我存东西的地方",然后手动分区时手一抖就把它勾上了格式化。
需要提醒一句:不同版本、不同安装选项(比如是否勾选"全盘加密"、是否使用 LVM)切出来的分区数量会有差异。有的是/和backup放在 LVM 卷组里,/data是独立普通分区;有的版本把恢复分区做得比较隐蔽。所以在你自己的机器上以lsblk的实际输出为准,别拿别人的截图套自己的机器。
1.2 数据盘存在的意义:还原系统不丢资料
麒麟把/data单独拎出来,核心动机是配合"一键还原"机制。系统盘/是可以被还原点覆盖的,一旦系统出问题或者需要恢复出厂设置,还原过程会把/分区刷回去,但/data不动。用户的照片、文档、下载、代码仓库都放在那里,所以还原完系统,人还是你,东西还在。
理解了这一点,你就能明白重装和还原在"保数据"这件事上是同一个逻辑:让写操作只发生在系统分区,数据分区保持原封不动。
问题也随之而来。既然/data是设计给"数据"的,那么用户家目录/home/用户名里的东西,在麒麟上通常是经由/data来承载的。常见做法是/data下有一个home子目录,然后通过 fstab 的 bind 挂载,或者通过软链接,把/home的内容指向/data/home。具体是哪种方式,直接决定了你重装后要不要手动补挂载配置,这一步没做好,重装完你会看到一个空荡荡的家目录。
提示:不要凭记忆判断家目录的真实位置,重装前务必用
df -h /home和ls -la /home亲自确认一遍。
1.3 重装时哪些分区必须动、哪些绝对不能碰
把分区按"动不动"分成三类,思路会清晰很多:
- 必须重新创建或格式化的:
/、/boot、/boot/efi。这三个是系统的骨架,重装就是换掉它们。 - 可以保留、但要重新挂载的:
/data。它是本次任务的主角,保留数据、只补挂载配置。 - 视情况处理的:swap。可以复用原来的 swap 分区,也可以让安装器新建,问题不大。恢复分区则看你要不要继续用一键还原,如果要,建议保留原样。
一个常见的错误认知是"重装就是全盘重来"。如果你打算保数据,这个认知本身就是最大的风险源。真正要建立的观念是:这是一次外科手术,只切系统那几刀,数据那块原地不动。后面所有的操作,都是围绕"怎么在安装器里精准地只切系统分区"展开的。
2. 动手前的信息抄录:把旧系统的"底账"留下来
我见过太多人重装到一半才发现"我忘了数据盘是哪个分区""我忘了挂载参数怎么写的"。安装器一旦启动,旧系统的/etc/fstab你就再也读不到了,因为/已经被覆盖。所以这一节的所有操作,必须在旧系统还能正常运行的时候完成。这是整个流程里唯一一段"只能提前做、不能事后补"的工作。
2.1 用 lsblk 和 blkid 摸清磁盘拓扑
先看结构,再看标识。两条命令各有分工:
# 看分区树状结构和容量 lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT # 看每个分区的 UUID、TYPE、LABEL sudo blkidlsblk帮你确认哪块盘、哪个分区挂着/data,容量多大;blkid帮你拿到分区的 UUID。为什么要 UUID 而不是/dev/sda3这种设备名?因为重装之后设备名的顺序可能变——插拔过硬盘、换过启动顺序、BIOS 识别差异,都可能导致sda3变成sdb3。UUID 是分区创建时生成的,只要分区不重新格式化就永远不变,用 UUID 写 fstab 才稳。
我的习惯是把这两条命令的输出原样重定向到一个文件,再顺手复制到 U 盘或者另一台机器上:
lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT,UUID > /data/backup/disk-info.txt sudo blkid >> /data/backup/disk-info.txt别小看这一步。等你重装完对着分区表发懵的时候,这个文件就是你的地图。
2.2 /etc/fstab:数据盘的挂载方式全在这里
/etc/fstab决定了系统启动时怎么挂盘。重装后新系统的 fstab 是"干净"的,只会包含安装器自己写的那些条目,你原来那条/data的记录不会自动出现。所以现在就把整个文件抄下来:
cat /etc/fstab重点看这几类行:
- 一行挂载
/data的,记录它的 UUID、文件系统类型、挂载选项。 - 如果有 bind 挂载(选项里写着
bind),比如把/data/home绑到/home,这行最关键,重装后必须补。 - 如果有
nofail、nosuid、nodev之类的选项,照抄,不要自己简化。
麒麟的文件系统默认是 ext4,但也有版本用 xfs 或者 btrfs 的情况。挂载选项里如果出现defaults,noatime这类组合,原样保留最安全。不要凭印象改参数,抄下来是最省事的做法。
2.3 用户 UID/GID 和家目录真实路径
这是最容易被忽略、出事之后又最折腾的一环。Linux 里文件的"归属"记录的是数字 UID 和 GID,不是用户名。你重装系统创建用户时,如果用户名没变、但 UID 变了,那么/data下原来属于 UID 1000 的所有文件,在新系统里可能就变成了"归某个陌生数字所有",你登录进去会发现文件全是灰色锁头或者干脆看不到。
先把现状记下来:
# 看当前用户的 UID / GID / 家目录 id # 单独看家目录路径 getent passwd $(whoami)输出形如uid=1000(kylin) gid=1000(kylin) groups=1000(kylin),...和/home/kylin。把 UID、GID、用户名、家目录路径四项一起记下来。
然后在重装创建用户时,尽量让新用户的 UID/GID 和旧系统保持一致。如果安装器不允许指定,那就创建一个同名用户,装完之后用chown统一改归属。两种方案都可行,但提前知道旧 UID 是多少是前提。
2.4 兜底备份:不依赖任何单点
前面三步都是"信息备份",这一步是"数据备份"。原则很简单:任何涉及分区的操作都有失败的可能,哪怕你信心十足,也要有一份不放在本机/data上的拷贝。
我的习惯是分三层:
| 层级 | 备份内容 | 目标位置 | 说明 |
|---|---|---|---|
| 关键数据 | 文档、代码、密钥、配置文件 | 移动硬盘或网络存储 | 真正丢了会疼的东西 |
| 配置信息 | fstab、磁盘信息、已装软件清单 | U盘或另一台机器 | 用于重装后快速恢复 |
| 整盘快照 | 整个 /data 分区镜像 | 大容量外置盘 | 有条件的做,最彻底 |
整盘镜像可以用dd或者专门的磁盘克隆工具。dd命令简单粗暴但有效:
sudo dd if=/dev/sda3 of=/mnt/usb/data-disk.img bs=4M status=progress记得把if换成你实际的/data分区设备名,of换成外置盘的路径。这个过程比较耗时,容量越大越慢,但换来的是最完整的兜底。如果你的数据量不大,直接用文件同步工具把/data整个目录拷一份过去也够用。
提示:备份做完一定要拔下来验证一次,确认文件能打开、内容完整。备份最怕的就是"以为备好了"。
3. 安装器手动分区:把"格式化"这个勾去掉
现在可以动手重装了。核心原则只有一条:安装器里选择手动分区,只对系统分区做格式化,/data分区只指定挂载点、绝不勾选格式化。听起来简单,但界面上的措辞和选项位置每个版本略有差异,容易看走眼。
3.1 引导安装介质与分区识别
用制作好的启动盘引导,进入安装界面,一路走到分区环节时,务必选择"手动分区"或"自定义分区",不要选"全盘安装"或者"自动分区"。全盘安装会重新划分整块磁盘,那才是真的把你数据盘一起干掉的操作。
进入手动分区界面后,先别急着操作,观察一会儿:
- 安装器是否识别到了原来所有分区?
/data那个大分区显示的已用空间对不对?如果显示"已用 0",要警惕——可能是安装器没读到文件系统,也可能它已经被误处理了。- 分区设备名和你在旧系统里记录的是否对得上?
如果安装器识别不全,先退出来检查硬盘连接和启动模式(UEFI/BIOS 模式不一致会导致分区表读不全)。宁可停下来查清楚,也别在信息不全的情况下动手。
3.2 手动分区逐项配置
确认无误后,逐块设置。这里给一份典型配置对照表,实际操作以你机器的分区大小和类型为准:
| 分区 | 挂载点 | 操作 | 是否格式化 |
|---|---|---|---|
| 原 EFI 分区 | /boot/efi | 复用,指定该挂载点 | 建议格式化,干净 |
| 原 boot 分区 | /boot | 复用或新建 | 格式化 |
| 原根分区 | / | 复用,指定该挂载点 | 必须格式化 |
| 原 swap 分区 | swap | 复用 | 无需格式化 |
| 原数据分区 | /data | 复用,指定该挂载点 | 坚决不格式化 |
| 恢复分区 | 无 | 保留不动 | 不处理 |
关键在于最后两行。数据盘那一行,你要做的是:选中它,把挂载点填成/data,文件系统类型选对(比如 ext4),然后确认"格式化此分区"这个复选框是空的。有的安装器会默认勾上,一定要手动取消。
这一步做完,再检查一遍上方的"将要执行的操作"摘要,如果有任何一条写着"格式化 /data"或者"删除分区 /data",立刻退回去改。这是整个重装流程里最要命的一步,多看两眼不亏。
3.3 关于 /home 与 /data 的挂载点抉择
这里有个分叉:如果你的旧系统是/data/home通过 bind 挂到/home的模式,那么安装时只挂/data就行,/home让安装器在/分区里创建一个普通目录。等重装完成后,你再手动把 bind 挂载补进 fstab。这样做的好处是安装流程干净,坏处是重装后要记得补这一步,否则家目录看起来是空的。
另一种做法是安装时直接把/home挂到数据盘上的某个目录。这能省掉补挂载的步骤,但风险是安装器可能对/home目录做初始化操作(比如写入框架文件、重置权限),反而动到了你的数据。
我的建议是第一种:安装时只挂/data,/home由系统自建,重装后再补 bind 挂载。控制权在自己手里,比交给安装器自动处理要稳。
3.4 引导器安装位置
最后一步是引导器(GRUB)的安装位置。UEFI 模式下,引导文件安装在 EFI 分区上;传统 BIOS 模式下,安装在磁盘的 MBR 上。这里要注意两点:
一是如果机器上有多个系统(比如另一个 Windows),GRUB 覆盖引导记录后,原来的引导菜单可能变化,需要重新配置。二是如果你之前记录过 EFI 分区的位置,最好让引导器装回同一个 EFI 分区,避免出现两个 EFI 分区、启动项混乱的情况。
确认引导器位置无误后,就可以开始安装了。安装过程会格式化系统分区、写入新系统,/data分区因为没被勾选格式化,会安静地待在那儿等着你重装完去挂它。
4. 重装后的收尾:挂载、权限、校验
安装完成、重启进入新系统,这时候打开文件管理器多半会看到家目录是空的,别慌,这是正常现象——/data还没挂回来。接下来三件事按顺序做:补挂载、修权限、验数据。
4.1 fstab 补齐与 UUID 校对
新系统的/etc/fstab里通常只有/、/boot、EFI、swap 这几行,没有/data。把你在第 2 步抄下来的那条记录补回去:
# 先备份新系统的 fstab sudo cp /etc/fstab /etc/fstab.bak # 用编辑器打开 sudo vi /etc/fstab添加形如这样的行(UUID 换成你数据盘的真实值):
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /data ext4 defaults 0 2如果旧系统还有 bind 挂载,比如把/data/home绑到/home,再加一行:
/data/home /home none bind 0 0写完之后不要急着重启,先用mount -a验证配置有没有语法错误:
sudo mount -a df -h | grep data如果mount -a报错,说明 UUID 写错或者挂载选项有问题,根据报错信息修正。这一步验证通过,再考虑重启。重启是最后的确认手段,不是排查手段。
4.2 权限与所有权修复
挂载成功之后,进入/data看看文件在不在。如果一切正常,你会看到熟悉的目录结构。但接下来还有个高频问题:文件在,但打不开、改不了,提示权限不足。
原因通常就是第 2.3 节提到的 UID 不一致。确认新用户的 UID:
id $(whoami)如果新 UID 和旧 UID 不一样,把数据盘的归属改过来。假设你的用户名是kylin,旧 UID 是 1000:
# 改归属,只改用户和组 sudo chown -R kylin:kylin /data/home/kylin-R递归处理,数据量大时耗时较长,耐心等它跑完。如果你的数据盘里有多个用户的数据,逐个目录处理,别一股脑把整个/data都改成你自己的,那样可能影响其他用户。
麒麟系统上还有一层安全机制(KySec 之类),迁移过来的文件可能带有旧系统的扩展属性标签,表现为某些程序读取文件受限。这种情况可以用getfattr看一下文件的扩展属性,确认是否需要重新打标,或者通过系统的安全中心重新设置。遇到这类问题时,先确认是不是权限本身的问题,再往安全标签方向排查。
注意:
chown和chmod 777是两种完全不同的思路。不要用chmod -R 777来图省事,那会把数据盘的权限体系彻底打乱,后续很难收拾。
4.3 数据完整性与应用配置回迁
权限修好之后,做一次数据完整性校验。最直接的方式是随机抽几个目录进去翻一翻,打开几个大文件确认没有损坏。如果之前做过备份,可以用校验和对比关键文件:
# 对关键目录生成校验清单 find /data/documents -type f -exec md5sum {} \; > /tmp/after.txt把备份盘里的对应清单before.txt拿来对比,确认两个文件列表一致。这一步对普通文档来说有点重,但对于代码仓库、数据库文件这类"坏了就是坏了"的数据,值得做。
应用配置的回迁是另一个维度。你之前用的一些软件,配置可能散落在/home/用户名/.config、.local这些隐藏目录里。如果这些目录当初也被放在数据盘上,重装后它们会随着挂载一起回来;如果它们原来在系统盘的/home里,那就随系统盘一起没了。所以重装前最好把常用软件的配置目录也列一份清单,方便重装后逐项恢复。
5. 真实翻车现场复盘
光说正确流程不够,把几种典型的翻车场景摊开讲,你才知道哪些地方最容易出事。
5.1 数据盘被当成 /home 自动格式化
这是最高频的一种。表现是:手动分区时把数据盘分区的挂载点设成了/home,安装器一看"这是 home 目录啊",就顺手做了初始化,把原内容清了或者重置了权限。重装完发现家目录空了。
根因在于对"挂载点语义"的误解。安装器对/、/home、/boot这类"有特殊含义"的挂载点,会做额外的处理;对/data这种自定义挂载点则相对老实。所以数据盘就老老实实挂/data,别图省事挂/home。
5.2 只保留 /data 却忘了 /home 里的东西
有些系统里,一部分用户文件其实放在了系统盘的/home里(比如某些软件缓存、临时导出文件),并没有走数据盘。重装时只保了/data,这部分就丢了。
排查办法是重装前看一眼/home的挂载情况:
df -h /home如果输出显示/home属于根分区而不是/data,那就说明家目录当时不在数据盘上,重装前必须单独备份/home里的内容。
5.3 LVM 与普通分区混用导致的挂载失败
有的版本用 LVM,数据盘可能在一个卷组里。重装时如果安装器重新扫描了卷组,名字可能冲突(比如旧卷组叫kylin-vg,新系统也想用这个名字),导致挂载失败或者要交互确认。
遇到这种情况,先确认卷组和逻辑卷的名字:
sudo vgs sudo lvs然后在 fstab 里用/dev/mapper/卷组名-逻辑卷名或者逻辑卷的 UUID 来挂载。LVM 的 UUID 和普通分区 UUID 不是一回事,用blkid能看到对应的标识。混用场景下,先把 LVM 结构理清楚再写 fstab,别硬套普通分区的写法。
5.4 双系统环境下引导被覆盖
机器上如果还有另一个操作系统,重装麒麟后 GRUB 会重建引导菜单,另一个系统的启动项可能丢失。这不是数据丢失,但会让人以为"整个机器坏了"。
处理办法是在新系统里用引导修复工具重新扫描其他系统,或者在 GRUB 配置里手动添加启动项。重装前记一下原来的分区布局,能省不少排查时间。
6. 让下次重装更省事的几个习惯
如果你打算长期用这台机器,与其每次重装都手忙脚乱,不如把一些习惯养起来,下次会轻松很多。
6.1 给数据盘单独用一块物理盘
这是最彻底的方案。系统装在一块 SSD 上,数据放另一块盘上,重装系统时数据盘连"被误格式化的机会"都没有。分区表都不在一块盘上,安装器碰不到它。有条件的话,这个方案最省心。
代价是多一块盘的成本,以及需要自己规划挂载。但换来的是"重装随便折腾,数据稳如老狗",值。
6.2 配置文件版本化
把/etc/fstab、磁盘信息、已装软件清单这些"环境底账"定期导出一份,放到数据盘或者云端。可以用一个简单的脚本搞定:
#!/bin/bash DEST=/data/backup/configs mkdir -p $DEST cp /etc/fstab $DEST/fstab blkid > $DEST/blkid.txt lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT > $DEST/lsblk.txt dpkg -l > $DEST/packages.txt 2>/dev/null设个定时任务每月跑一次,或者在每次装完新软件后手动跑一次。这样任何一次重装,你都能快速回到"知道当初长什么样"的状态。
6.3 定期记录分区快照
分区结构是会变的——加过盘、扩容过、调整过分区大小。每次变动之后重新导一次lsblk和blkid,相当于给磁盘格局拍一张照片。真到了要重装的那天,翻出最近一张快照,对照着操作,心里就有底。
说到底,"保留数据盘重装"这件事,难点不在操作本身,而在于操作之前你有没有把信息准备齐全。安装器里的那几十秒操作,只是整个流程的收尾;真正花时间、真正决定成败的,是前面那些看起来琐碎的抄录和备份。我在自己机器上重装过好几回,每次最庆幸的都是当初把 fstab 和 blkid 的输出存了一份——它让我在安装界面里面对一堆分区编号时,能毫不犹豫地指出"这个挂 /data,别动"。