当前位置: 代码迷 >> 综合 >> 迁移ubuntu到新的ssd,修复xfs文件系统。mount: wrong fs type, bad option, bad superblock
  详细解决方案

迁移ubuntu到新的ssd,修复xfs文件系统。mount: wrong fs type, bad option, bad superblock

热度:90   发布时间:2023-12-15 16:57:02.0

1,给新ssd分区

使用usb安装u盘, try ubuntu,打开gparted。Device - 创建分区表。

创建新分区:

2M grub分区。     格式选 unformatted                                                 对应分区     /dev/nvme0n1p3

200MB /boot。  格式选   ext4                                                            对应分区     /dev/nvme0n1p2                                                    

80G /                  格式选  xfs(因为我之前的系统root分区是xfs的。)   对应分区     /dev/nvme0n1p1

300G /home       格式选   ext4                                                             对应分区     /dev/nvme0n1p4   

- 点对勾 - 保存

然后右键2M grub分区,manage flags选为 bios_grub。

右键200MB /boot 分区,manage flags选为 boot, esp 

参考:https://segmentfault.com/a/1190000008317976

 

2,拷贝文件

if=源磁盘   
of=目标磁盘

dd if=/dev/sda5 of=/dev/p2  # 迁移boot

dd if=/dev/sda8 of=/dev/p1 # 迁移root

dd if=/dev/sda7 of=/dev/p4 # 迁移 home

参考:https://blog.csdn.net/dark5669/article/details/53547955

 

看到gparted的下面 /dev/nvme0n1p1分区后面有红色叹号。修复xfs分区(之前的root: sda8是xfs分区类型):

分区/dev/nvme0n1p1使用gparted右键check不通过。报错:mount: wrong fs type, bad option, bad superblock on /dev/xvdf1, missing codepage or helper program, or other error主要是不能挂载。那么如何修复xfs分区的问题,然后挂载呢?1,检查错误
$ xfs_repair -n /dev/nvme0n1p12,尝试修复
$ xfs_repair /dev/nvme0n1p13,上一步2失败的话(报错 ERROR: The filesystem has valuable metadata changes in a log...),换丢失文件的方法再次修复
$ xfs_repair -L /dev/nvme0n1p14,修复(现在不报错)
$ xfs_repair /dev/nvme0n1p15,挂载硬盘
$ mount -t xfs -o nouuid /dev/nvme0n1p1 /mnt6,获取uuid
$ blkid7,卸载硬盘
$ umount /dev/nvme0n1p18,重新生成uuid
$ xfs_admin -U generate /dev/nvme0n1p19,现在可以正常的挂载和卸载硬盘了
$ mount /dev/nvme0n1p1 /mnt不再报错。此时 gparted check应该也可以通过了。

感谢:Simon Brady @ https://serverfault.com/questions/948408/mount-wrong-fs-type-bad-option-bad-superblock-on-dev-xvdf1-missing-codepage

https://blog.51cto.com/dangzhiqiang/1657511

之后再出现挂载不上的问题,在用gparted打开然后check一下应该就好了。

 

3,修复grub

挂载新ssd的三个分区 (home分区可能无所谓。可以不挂载)

$ sudo mkdir /mnt/ssd

$ sudo mkdir /mnt/ssd/root

$ sudo mkdir /mnt/ssd/boot

$ sudo mkdir /mnt/ssd/home

$ sudo mount /dev/nvme0n1p1 /mnt/ssd/root

$ sudo mount /dev/nvme0n1p2 /mnt/ssd/boot

$ sudo mount /dev/nvme0n1p4 /mnt/ssd/home

把原来硬盘(挂载在/media/ubuntu)的boot下的所有内容拷贝到新ssd的boot分区

$ sudo cp -r /media/ubuntu/boot /mnt/ssd/boot

改一下权限,防止可能出现权限问题

$ sudo chmod 777 -R /mnt/ssd/boot

此时可以看到新ssd的root下的内容同步更新了。修改新ssd的root中的/etc/fstab文件。替换老的root分区uuid为新的uuid

$ sudo gedit /media/ubuntu/etc/fstab

执行boot-repair

$ sudo add-apt-repository ppa:yannubuntu/boot-repair

$ sudo apt-get update

$ sudo apt-get install -y boot-repair

$ boot-repair

-> 选择recommend repair

repair成功,重启。(repair过程中如果提示efi问题,选择yes continue就好了)

感谢:https://blog.csdn.net/u011331731/article/details/90167020

 

 

注意:之前定义了swap分区,如果按照以上设置不单独划分swap分区的话,需要注释fstab中挂载swap的内容。否则开关机会卡慢。参考:https://blog.csdn.net/asahinokawa/article/details/79272761

 

注:

格式化某个分区为指定格式: mfks -t ext4 /dev/sda1   //将sda1分区格式化为ext4格式

  相关解决方案