前几天买了一块sn550固态硬盘(1T),用来给笔记本电脑的存储系统扩容,安装过程勉强比较顺利,就是拆开后盖的时候遇到了一点点困难,有一颗螺丝滑丝了,在试图绕过这个螺丝的时候直接把固定螺丝的塑料拽了下来……
安装过程不麻烦,对准接口,拧上螺丝就好了。我的设备是2016年买的,当时预算不太够,就买了8G内存500GB机械硬盘的那一版本,想着以后等固态硬盘或者内存降价之后再进行升级或扩容,可是谁知道2016年之后硬盘与内存条的价格快速上涨,直到去年才有钱安排上8G内存条,今年才添加大容量固态硬盘。
由于一开始安装的是win10与ubuntu双系统,所以即使作为主力系统的ubuntu所分到的硬盘空间也是不是十分充足,紧张的存储空间造成好几次系统上的故障,但考虑到win10的兼容性问题(即有些软件只能在win10上用)虽然一年内启动win10的次数不超过个位数(18年之后再也没启动过),也没有打win10的C盘的主意。2019年末,又购买了一个win10设备(surface),于是就把win10的C盘分局格式化,然后把/home
目录迁移了过去,详细可以见去年写的。虽然暂时缓解了存储空间不足的问题,但没有对此进行根本性的解决,但今年实施了更加积极的财政政策,于是就在某宝上买了这个1T的SSD。
拿到之后打开包装第一感觉是好小,感觉比去年的内存条还小,安装之后直接就有了/dev/nvme0n1
这个设备,然后fdisk -l
也很成功的识别了出来
Disk /dev/nvme0n1:931.53 GiB,1000204886016 字节,1953525168 个扇区
Disk model: WDC WDS100T2B0C-00PXH0
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
磁盘标识符:BB42291B-B3AE-462D-81DD-C057F4DA1EAB
设备 起点 末尾 扇区 大小 类型
/dev/nvme0n1p1 2048 1945135103 1945133056 927.5G Linux 文件系统
/dev/nvme0n1p2 1945135104 1953523711 8388608 4G Linux 文件系统
显然ubuntu作为一个现代的操作系统、linux kernel作为一个成熟操作系统内核,对nvme固态硬盘有着完善的系统层次的支持,根本不需要安装什么奇奇怪怪的驱动程序等……
然后试着格式化成ext4
文件系统,然后挂载了一下,读写了几个文档,运行了一下ubuntu自带的性能测试……
看上去一切都没问题了,然后就准备开始迁移了。
首先准备一个ubuntu的live cd,由于这次需要改动根目录,好像没法像迁移家目录那样进入单用户root模式操作了。至于制作ubuntu的live cd,也很容易,下载镜像之后用ubuntu自带的启动盘制作器安排就行了。
在进入live cd之前,首先要找到原来根目录所在的位置与新的ssd的位置,我这里的根目录在移动硬盘的/dev/sda13
,准备移动到/dev/nvme0n1p1
,明确之后就可以进live cd。
进入live cd之后,会在/dev/
下自动识别出这两个存储设备,一般情况下与刚才以一样的。即还是/dev/sda13
和/dev/nvme0n1p1
,如果不放心,可以挂载上看一下。
然后就到了最关键的一步了,使用dd
命令复制整个根目录。
注意 dd 是一个非常危险的命令,在使用前要反复多次检查,否则会造成硬盘数据不可逆丢失
dd可以在设备层面进行数据的读写,所以用dd可以进行彻底的分区复制,即复制之后的分区的UUID和原来是一样的。
sudo dd if=/dev/sda13 of=/dev/nvme0n1p1
这条命令是指在/dev/sda13读取数据,然后写入到/dev/nvme0n1p1这需要等相当长的一段时间(视总文件大小而定),dd命令没有任何输出,也不知道进度。再次期间不建议进行其他操作,毕竟IO占用很厉害,再加上是live cd,本来就在U盘上,干什么都一卡一卡的。
等操作完成之后,下载就与两个一模一样的根目录所在的分区的,由于grub在启动的时候需要根据UUID来定位内核以及根目录的所在位置,为了防止两个一样的UUID的分区给grub造成困扰,所以要给原来的分区一个新的UUID,这个操作可以通过GParted
来在图形界面下完成。在dd命令完成之后,由于原来的分区小,新的分区大,会导致空间没有完全利用,这个时候按照GParted提示的操作进行就可以了。右键点击相应的分区,有一个生成新的UUID就可以了。由于grub与fstab都是通过UUID对分区进行定位,dd这种原样复制的分区就不用对系统非配置做任何形式的更改了。
然后就可以退出live cd,试一下能不能正常启动,原来的旧分区先不要格式化或者删除,万一发现有什么问题还可以再通过改UUID的方式改回来,确认正常之后就可以格式化掉回收存储空间了。