Ubuntu
Ubuntu + ZFS:如何將整個系統遷移到新磁碟?
這是我的場景:
我在具有 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
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
zpool 列表
# zpool list NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT labpool 464G 70.7G 393G 15% 1.00x ONLINE -
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
我一直在想:如果我從 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
。- 刪除舊磁碟
您應該能夠使用
zpool replace <pool> <old disk> <new disk>
每個磁碟。這將保留所有分區、文件屬性等。我已經成功地將它與 zfs-fuse 一起使用。請參閱手冊頁。