# Redhat CoreOS系统迁移约束限制和迁移前准备工作
Redhat CoreOS是用于运行容器节点的操作系统。使用主机迁移服务（SMS）迁移前，请了解相关的约束和限制、迁移须知，并完成迁移前的准备工作，以确保迁移过程顺利进行。
#### 约束和限制
| 限制项               | 约束和限制                                                                                  |
|:---|:---|
| /sysroot只读权限     | /sysroot默认通过"chattr +i /sysroot"命令设置为只读，迁移前需要解除/sysroot的禁止写入。                        |
| 挂载点为只读权限         | /etc、/sysroot、/boot、/usr等目录默认是只读挂载，迁移前需要改为读写模式。                                       |
| /boot/efi默认不挂载 | /boot/efi目录在开机后默认不挂载，需要手动挂载。                                                        |
| BIOS+GPT启动方式的主机   | 文件级迁移无法支持BIOS boot分区，因此文件级迁移不支持迁移BIOS+GPT启动方式的主机。但块级迁移支持该启动方式的主机。                     |
| 迁移过程中注入virtio驱动    | Redhat CoreOS的initramfs内核结构与系统版本紧密相关，在迁移过程中无法使用"dracut"命令注入驱动。如果迁移前系统缺少virtio驱动，则无法迁移。 |
   
#### 迁移须知
- **迁移或者同步时间慢**：由于SMS的迁移原理是在远程复制和拷贝文件，因此无法准确计算首次复制或者同步所需时间。
- **PVS方式挂载可能会受影响** ：目的端磁盘会根据源端磁盘信息自动进行更新，这可能导致已有的PV和PVC配置发生变化，从而影响原有的挂载方式。
  ![](https://support.huaweicloud.com/sms_faq/public_sys-resources/note_3.0-zh-cn.png)
  PVS方式挂载是指通过静态方式预先创建PV（Persistent Volume）和PVC（Persistent Volume Claim），然后将PV绑定到PVC，供Pod使用。
  
- **无法保证容器正常启动**：SMS只能保证文件系统一致，无法保证迁移后容器能正常启动。
 
#### 迁移前准备工作
- **解除/sysroot的只读属性** 。
  由于/sysroot通过"chattr +i /sysroot"命令实现只读，需要在源端使用root用户执行以下命令，解除其禁止写入的属性。
  ```
  chattr -i /sysroot
  ```
  
- **将挂载点改为读写模式** 。
  由于/etc、/sysroot、/boot、/usr等目录默认是只读挂载，需要重新挂载为读写模式。可以在源端使用root用户执行以下命令：
  ```
  mount -o remount,rw /etc
  mount -o remount,rw /sysroot
  mount -o remount,rw /boot
  mount -o remount,rw /usr
  ```
  
- **手动挂载/boot/efi目录** 。
  Redhat CoreOS启动后会自动卸载/boot/efi，但迁移过程需要读取该挂载点的文件。可以使用blkid命令找到 /boot/efi对应的设备，该设备通常是带有LABEL="EFI-SYSTEM" 的分区。
  ![](https://support.huaweicloud.com/sms_faq/zh-cn_image_0000002329818468.png "点击放大")
  然后手动挂载该分区，例如：
  ```
  mount /dev/vda2 /boot/efi
  ```
  
- **检查virtio驱动** 。
  Redhat CoreOS的initramfs内核结构与系统版本紧密相关，无法使用"dracut"命令注入驱动。您可以通过以下命令检查initrd文件中是否包含virtio驱动，如果没有则需要自行添加。
  ```
  lsinitrd {initrd文件} | grep virtio
  ```
  
 
