El *_*rto 5 ubuntu zfs migration replication
这是我的场景:
我在带有 2 x 500 GB SATA 磁盘的服务器上安装了带有本机 ZFS 的Ubuntu 。我按照本指南安装了它:https : //github.com/dajhorn/pkg-zfs/wiki/HOWTO-install-Ubuntu-to-a-Native-ZFS-Root-Filesystem
所以我在磁盘 1 上有一个 16 MB 的分区用于 /boot/grub 和该磁盘的其余部分,以及在镜像 zpool 中专用于 ZFS 的整个第二个驱动器。一切正常。
问题是现在我需要摆脱 500 GB 的磁盘并将它们替换为 2 x 1.5 TB 的磁盘。
有什么方法可以将我的两个 500 GB 硬盘上的所有内容(数据、分区表等)复制到两个 1.GB TB 硬盘上,而无需从头开始重新安装系统?
我在这里添加@jlliagre 要求的信息:
磁盘:
# fdisk -l
Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xf4bfe018
Device Boot Start End Blocks Id System
/dev/sda1 * 63 32129 16033+ be Solaris boot
/dev/sda2 32130 976773167 488370519 5 Extended
/dev/sda5 32193 976773167 488370487+ bf Solaris
Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I /O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xf4bfe018
Device Boot Start End Blocks Id System
/dev/sdb1 63 976773167 488386552+ 5 Extended
/dev/sdb5 126 976773167 488386521 bf Solaris
Run Code Online (Sandbox Code Playgroud)
zpool状态:
# zpool status
pool: labpool
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
labpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sda5 ONLINE 0 0 0
sdb5 ONLINE 0 0 0
errors: No known data errors
Run Code Online (Sandbox Code Playgroud)
zpool列表
# zpool list
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
labpool 464G 70.7G 393G 15% 1.00x ONLINE -
Run Code Online (Sandbox Code Playgroud)
zpool历史
# zpool history
History for 'labpool':
2012-02-17.19:23:39 zpool create labpool mirror /dev/disk/by-id/ata-WDC_WD5000AAKX-001CA0_WD-WCAYUFF66324-part5 /dev/disk/by-id/ata-WDC_WD5000AAKX-001CA0_WD-WCAYUFJ06204-part5
2012-02-17.19:26:39 zfs create labpool/ROOT
2012-02-17.19:26:44 zfs create labpool/ROOT/ubuntu-1
2012-02-17.19:27:15 zfs set mountpoint=/ labpool/ROOT/ubuntu-1
2012-02-17.19:27:36 zpool set bootfs=labpool/ROOT/ubuntu-1 labpool
2012-02-17.19:28:03 zpool export labpool
2012-02-17.19:28:30 zpool import -d /dev/disk/by-id/ -R /mnt labpool
2012-02-17.20:48:20 zpool export labpool
2012-02-17.21:03:30 zpool import -f -N labpool
2012-02-17.21:07:35 zpool import -f -N labpool
2012-02-17.21:42:09 zpool import -f -N labpool
2012-02-17.21:51:39 zpool import -f -N labpool
2012-02-17.21:55:49 zpool import -f -N labpool
2012-02-17.21:58:10 zpool import -f -N labpool
2012-02-22.13:25:26 zpool import -f -N labpool
2012-02-22.13:40:15 zpool import -f -N labpool
2012-02-22.12:50:38 zpool import -f -N labpool
Run Code Online (Sandbox Code Playgroud)
我一直在想:如果我从 LiveCD 启动,按照安装指南直到第 4 步(在我的新磁盘对上分区和创建 ZFS 池),然后将新文件系统挂载到 /mnt/new 和旧的一个在 /mnt/old 和 rsync 从旧到新?那可能吗?还是会把一切都搞砸?
这应该有效:
在新磁盘上创建类似的分区布局,ZFS 不会为您完成。
复制引导分区并重新安装引导加载程序。
在您的根池 zpool 上设置 autoexpand 属性 set autoexpand=on labpool
更换其中一个磁盘,例如zpool replace labpool sda5 sdc5,等待重新同步以使用以下方法镜像所有池数据集zpool status
更换第二个磁盘zpool replace labpool sdb5 sdd5。
删除旧磁盘
我给我安装 Ubuntu+ZFS 的指南的作者发了电子邮件,他给了我一个有效的解决方案:
ZFS 实例无法调整大小,因此您必须在更大的磁盘上重新创建池才能扩大它。做这样的事情:
- 安装新磁盘。
- 将新磁盘分区为 /boot 以及更大的池区域。
- 创建一个新池,但为其指定一个不同的名称。
zfs snapshot -r oldpool@nowzfs send -R oldpool@now | zfs recv newpool- 将旧的 /boot 复制到新的 /boot 中。
- 重复 GRUB 安装。
- 取出旧磁盘。
如果要保留相同的池名称,则必须导出新池并
zpool import -R在步骤 3 之后使用,这在手册页中进行了描述。
我遇到了一些问题,因为我需要更改磁盘连接的套接字,但我认为答案可以帮助其他人解决我的情况。
我没有尝试@jlliagre的解决方案,因为我后来看到了它,但我认为我引用的关于ZFS实例无法调整大小的电子邮件中提到的内容可能存在问题(记住我想从2x500 GB 镜像到 2x1.5 TB 镜像)。
| 归档时间: |
|
| 查看次数: |
7535 次 |
| 最近记录: |