前言(废话)
从之前的ntfs,到后面的ext4,现在看了很多资料,和在虚拟机里体验,还是觉得zfs比较划算,我比较看重两点,1:快照,2:内存缓存
可惜我现在只有1块8T硬盘,数据没法转移,只能冒险单盘转换了,先压缩分区,将分区压缩到2.3T,然后将空出来的空间分区,并加入zpool,然后将数据从ext4转移到zfs,然后再将ext4的分区也加入到zfs池
我们开始压缩分区吧!
准备工作
以下操作磁盘越大,耗时越久,从现在开始一定要在screen下操作,否则执行中中断的后果没人能预料
- 卸载分区
检查和修复文件系统
e2fsck -f -y /dev/sdc1压缩文件系统到最小尺寸并将文件移动到前面的扇区
resize2fs -M /dev/sdc1- dumpe2fs -h /dev/sdc1 或者 tune2fs -l /dev/sdc1 查看分区文件系统所占区块数量
- 主要是两个:“Block count” 和 “Block size”,
- 两者相乘得到文件系统字节数
- fdisk /dev/sdc 输入p,得到分区起始扇区数和扇区大小
- 字节数除以扇区大小得到扇区数
- 扇区数+起始扇区数-1=新的截至扇区数
公式:start_sectors+((block_countblock_size)/sectors_size)-1=end_sectors
例如:2048+((7385089714096)/512)-1=5908073815
到这一步还有后悔药,直接resize2fs /dev/sdc1 <原分区大小>,就完事了
开始调整
使用parted /dev/sdc 调整分区
- 输入 unit s 更改单位为扇区
- 输入p打印现有分区,并保存下来,这至关重要,例如
1
2
3
4
5
6
7
8
9
10
11
12
13
14root@ubuntu:~# parted /dev/sdc
GNU Parted 3.3
Using /dev/sdc
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit s
(parted) p
Model: ATA WDC WD80EZAZ-11T (scsi)
Disk /dev/sdc: 15628053168s
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 2048s 5908073815s 5908071768s ext4 - 确认你上面的数据已经保存下来了(最好用笔记下来)
- 这时候你还可以后悔
- 更改分区大小 resizepart 1 <end_end_sectors> (就是准备工作中最后得到的值),如果提示会丢失数据,输入y确认
- 可以mount测试了
mount的时候,如果提示“wrong fs type, bad option, bad superblock on /dev/sdc1, missing codepage or helper program, or other error.”,说明扇区分少了,不要慌,继续使用上面的fdisk编辑分区表,给分区多加100个扇区就行,再次挂载应该就ok了,如果还是不行,那神仙难救了,直接mkfs然后从备份里恢复数据吧。什么?你说你没有备份?
参考
无损调整EXT4分区大小
缩小分区以完全适合基础文件系统的大小
忍一时风平浪静,zfs也没啥好的,就是个快照嘛,不要也没事,等下次买了大硬盘,数据备份好再换文件系统吧,万一再丢一次数据承受不起
最终还是冒险在线转换了,成功转换到zfs了,爽歪歪