CentOS 7 无需重装系统,能否将MongoDB的EXT4文件系统转为XFS?
无需重装系统,将CentOS 7的EXT4转换为XFS的可行方案
当然可以不用重装系统完成转换!不过先敲个警钟:任何文件系统操作都有数据丢失风险,一定要先做好完整的数据备份——别嫌麻烦,真出问题哭都来不及。下面是具体的操作步骤,分根分区和非根分区两种情况说明:
一、非根分区(比如/data这类挂载点)的转换步骤
- 第一步:备份分区内所有数据
可以用tar打包到其他存储设备:
或者用tar -czvf /mnt/backup/data_backup.tar.gz /datadd做分区镜像(适合小分区):dd if=/dev/sdXn of=/mnt/backup/data_partition.img - 第二步:卸载目标分区
如果提示“device is busy”,先关闭所有正在访问该分区的进程,或者重启后再卸载。umount /dev/sdXn - 第三步:格式化为XFS文件系统
mkfs.xfs -f /dev/sdXn-f参数是强制格式化,会清空分区所有数据,所以备份一定要做! - 第四步:恢复数据到XFS分区
先重新挂载分区:
然后解压之前的备份:mount /dev/sdXn /datatar -xzvf /mnt/backup/data_backup.tar.gz -C /data - 第五步:更新
/etc/fstab
编辑/etc/fstab文件,把该分区对应的ext4改成xfs,确保下次开机自动挂载:
找到类似这样的行:vi /etc/fstab/dev/sdXn /data ext4 defaults 0 0
修改为:
/dev/sdXn /data xfs defaults 0 0
保存退出后,执行mount -a验证配置是否正确,没有报错就完成了。
二、根分区(/)的转换步骤
根分区不能直接卸载,所以需要借助CentOS 7的安装镜像进入救援模式操作:
- 第一步:准备CentOS 7安装介质(U盘或光盘),设置BIOS从介质启动。
- 第二步:进入救援模式
在安装界面选择Troubleshooting->Rescue a CentOS system,按照提示进入救援环境,选择1(Continue)进入系统挂载点,然后执行chroot /mnt/sysimage切换到根系统环境。 - 第三步:备份根分区数据
把根分区数据备份到外部存储(比如挂载U盘):
先挂载U盘:
然后打包根分区:mount /dev/sdYn /mnt/usb
排除那些临时和挂载目录,避免备份冗余数据。tar -czvf /mnt/usb/root_backup.tar.gz / --exclude=/mnt/usb --exclude=/proc --exclude=/sys --exclude=/dev - 第四步:卸载根分区并格式化
先退出chroot环境:
卸载挂载的根分区:exit
然后格式化为XFS:umount /mnt/sysimagemkfs.xfs -f /dev/sda1 # 这里替换成你的根分区设备名,比如/dev/mapper/centos-root如果是LVM的话 - 第五步:恢复数据到新的XFS根分区
重新挂载根分区:
进入chroot环境:mount /dev/sda1 /mnt/sysimage
解压备份:chroot /mnt/sysimagetar -xzvf /mnt/usb/root_backup.tar.gz -C / - 第六步:更新
/etc/fstab和GRUB配置
编辑/etc/fstab,把根分区的ext4改成xfs。
然后重新生成GRUB配置文件,确保系统能正常启动:grub2-mkconfig -o /boot/grub2/grub.cfg - 第七步:退出chroot,重启系统
重启后移除安装介质,系统就会从XFS格式的根分区启动了。exit umount /mnt/usb reboot
补充说明
- 如果你用的是LVM逻辑卷,步骤类似,只是设备名换成
/dev/mapper/centos-xxx这类,操作逻辑完全一致。 - 转换完成后,你可以用
df -Th验证文件系统类型,也可以启动MongoDB控制台,之前的警告应该就会消失了。
内容的提问来源于stack exchange,提问作者Hilfsschueler
相关产品推荐
相关产品推荐

