前情
家里的AIO服务器硬盘原本是2T+4T组合,2T硬盘上部署了emby等服务,4T硬盘上存放了大量的视频文件。由于2T硬盘空间不足,所以需要将2T硬盘替换为4T硬盘,然后将原来4T硬盘位换一个大容量的硬盘。
迁移过程
网上选购了一段时间,考虑到性价比等因素最后网购了一个12T的希捷银河企业盘,体验一下炒豆子的感觉。
迁移要先把4T硬盘的数据直接拷贝到12T硬盘上,然后格式化4T硬盘,再将2T硬盘的数据拷贝到4T硬盘上。最终将2T硬盘替换为4T硬盘。
迁移4T硬盘的数据到12T硬盘上没有遇到什么问题,因为原本4T就是数据盘,没有乱七八糟的分区,直接拷贝即可。
对比了多种全盘拷贝方法,最后使用了 dd
命令方法,dd
命令可以将整个硬盘的数据拷贝到另一个硬盘上,拷贝完成后,新硬盘的分区表和原硬盘一样,不需要再次分区,甚至UUID都一样,拷贝完成后直接挂载即可.
以下操作都是在硬盘未挂载的情况下进行的,AIO宿主机是PVE系统,最终硬盘是通过硬盘直通到ubuntu虚拟机上的。因此只需要将ubuntu虚拟机关机,登录pve终端操作即可。
拷贝4T硬盘数据到12T硬盘
1
2# 4T -> 12T, 4T硬盘是sdb, 12T硬盘是sdc
dd if=/dev/sdb of=/dev/sdc bs=4M conv=noerror,sync status=progress格式化4T硬盘
1
2# 格式化4T硬盘
mkfs.ext4 /dev/sdb拷贝2T硬盘数据到4T硬盘
1
2# 2T -> 4T, 2T硬盘是sda, 4T硬盘是sdb
dd if=/dev/sda of=/dev/sdb bs=4M conv=noerror,sync status=progress
遇到的问题
dd
命令拷贝速度慢
以上第一步操作使用 dd
命令拷贝4T到12T时,没有加 bs=4M
命令,导致了拷贝速度非常慢,大概只有30M/s,后来加上 bs=4M
后,拷贝速度提升到了100M/s左右。这是因为dd默认是以512字节为单位拷贝的,加上 bs=4M
后,以4M为单位拷贝,速度提升了很多。
- 拷贝2T硬盘数据到4T硬盘后,挂载4T硬盘启动后,4T硬盘只有2T大小
原本的2T硬盘上有一个sdb1分区,sdb1分区有2t大小的使用空间,拷贝到4T硬盘后,4T硬盘上也存在了一个同样大小的分区。但是4T硬盘的剩余空间没有被分区,所以只有2T大小的使用空间。
查找方法后,可以使用 parted
命令来扩展分区大小。
1 | # 查看分区 |
以上操作按常理是可以顺利运行的,但是在扩展分区时,出现了MBR分区表无法扩展到2T以上的问题,这是因为MBR分区表最大只能支持2T的硬盘,所以需要将MBR分区表转换为GPT分区表。
转换硬盘的分区表,大部分方案都是需要格式化分区的,还好后面找到了DiskGenius这个工具,可以不格式化硬盘的情况下转换分区表。
使用DiskGenius转换分区表后,再使用 parted
命令扩展分区,最终成功扩展了4T硬盘的分区大小。
- 4T硬盘挂载后,进入挂载点
/media
目录下使用ls
命令查看,报错
1 | root@myubuntu:/media# ls |
这是因为可能在硬盘分区扩展的过程中,文件系统出现了问题,使用 e2fsck
命令检查文件系统,修复文件系统。
1 | e2fsck -fy /dev/sdb1 |
修复可能需要比较长的时间。
- 修复完成后可以正常挂载硬盘,但是进入
/media
目录下查看文件时,发现只有lost+found
目录,但是空间占用显示正常,进入lost+found
目录下查看,发现了大量的文件。但文件名都是数字,不是原来的目录名称。
这是因为e2fsck修复文件系统后,如果有文件无法关联到其正确的目录条目中,这些文件将被移动到lost+found文件夹。这是一个专门用于存放因修复文件系统而“丢失”的文件的特殊目录。
在lost+found文件夹中,每个找到的文件会被分配一个以inode编号命名的文件名。这意味着文件名可能不再保持原来的文件结构。
进入数字目录下查看,发现是原来的文件,只有最上层的目录结构丢失了,因此只需要将这些文件移动到正确的目录下即可。
使用 mv
命令将文件移动到正确的目录下。
最后启动服务,一切正常。