麒麟OS不支持ext4直接升级为XFS,必须通过卸载→备份→重分区/格式化→恢复→挂载→fstab配置的完整迁移流程,任何跳步或设备误判均可能导致数据丢失。

在麒麟OS中将现有ext4文件系统升级为XFS格式,必须通过数据迁移方式实现,因为Linux内核不支持直接转换文件系统类型,强行修改会导致数据完全丢失。
备份原分区全部数据
这一步不可跳过,且必须在目标分区卸载状态下执行。若仍挂载着就运行rsync,可能复制到不一致的文件状态,后续恢复后出现inode损坏或权限错乱。
先确认当前挂载点与设备:df -Th /data | grep -v Filesystem
假设输出为 /dev/sdb1 挂载在 /data,则执行:
sudo umount /data
创建临时备份目录(建议放在另一块磁盘):
sudo mkdir -p /backup/data_$(date +%Y%m%d)
使用rsync完整镜像(保留所有属性):
sudo rsync -avAXH --numeric-ids /mnt/old_data/ /backup/data_$(date +%Y%m%d)/
【务必验证备份完整性】:进入 /backup/data_*/ 目录,运行 ls -laR | head -20 查看目录结构是否完整;再随机选取3个文件比对md5sum,确认无传输损坏。
重新分区并格式化为XFS
方法一:使用parted创建单一分区(推荐用于整盘替换)
1、启动parted操作目标磁盘(例如/dev/sdb):
sudo parted /dev/sdb
2、清除原有分区表并设为GPT:
mklabel gpt
3、创建占满全盘的主分区:
mkpart primary 1MiB 100%
4、设置分区名为“xfs-data”便于识别:
name 1 xfs-data
5、退出:
quit
方法二:若原已有可用分区(如/dev/sdb1),可跳过分区步骤,直接格式化:
sudo mkfs.xfs -f -L data_xfs /dev/sdb1
注意:-f参数强制覆盖,【执行前必须再次确认设备名无误,输错将永久擦除其他磁盘】
挂载新XFS分区并恢复数据
创建挂载点:
sudo mkdir -p /data
立即挂载:
sudo mount /dev/sdb1 /data
从备份恢复(保持原权限与扩展属性):
sudo rsync -avAXH --numeric-ids /backup/data_$(date +%Y%m%d)/ /data/
等待同步完成,期间不要中断电源或强制关机——XFS对元数据写入顺序敏感,异常中断可能导致日志回滚失败。
检查挂载状态与文件系统类型:
findmnt -T /data
配置开机自动挂载
获取新分区UUID(比设备名更可靠):
sudo blkid /dev/sdb1 | grep -o 'UUID="[^"]*"'
编辑fstab:
sudo vim /etc/fstab
在末尾新增一行(用上一步查到的真实UUID替换):
UUID=12345678-9abc-def0-1234-56789abcdef0 /data xfs defaults 0 0
测试配置是否合法:
sudo mount -a
无报错即表示fstab语法正确,重启后将自动挂载XFS分区。


















