Solaris
我可以將多磁碟 zfs zpool 合併到單個(更大)磁碟嗎?
我有這個 zpool:
bash-3.2# zpool status dpool pool: dpool state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM dpool ONLINE 0 0 0 c3t600601604F021A009E1F867A3E24E211d0 ONLINE 0 0 0 c3t600601604F021A00141D843A3F24E211d0 ONLINE 0 0 0
我想用一個(更大的磁碟)替換這兩個磁碟。可以做到嗎? zpool attach允許我更換一個物理磁碟,但它不允許我同時更換兩個。
不,我認為按照您所描述的方式這是不可能的。
但是,您可以使用單個磁碟創建一個新池,並使用簡單的zfs 發送/接收過程將 ZFS 文件系統複製到新池中。
您應該可以
zpool attach
使用新的和更大的驅動器,等待鏡像完成,然後再zpool detach
使用舊驅動器。編輯:我誤讀了你的問題,我很確定你是把它們當作鏡子來執行的。
我同意最好的做法是創建一個新池並遞歸地將所有數據集發送到新池,但如果你真的不能這樣做,那麼你仍然可以按照我概述的步驟進行操作,前提是你將新的,更大的磁碟,分成兩個分區,每個分區至少與要替換的磁碟一樣大。
我不建議這樣做,主要是因為 (1) 管理變得更加複雜,並且 (2) 您將無法利用驅動器的寫入記憶體。
我將在此處粘貼在最近的 Illumos 盒子上執行的序列。請注意,我正在創建空文件來顯示這一點,而不是使用整個磁碟和切片/分區,因為我無法在那個盒子上處理物理設備。這些文件被命名
aa1
為aa2
和aa3
。
- 準備設備。
aa3
是 200M 大,而aa1
和aa2
只有 100M:# dd if=/dev/zero of=/opt/local/aa1 bs=1M count=100 # dd if=/dev/zero of=/opt/local/aa2 bs=1M count=100 # dd if=/dev/zero of=/opt/local/aa3 bs=1M count=200
- 創建我們的測試池:
# zpool create test mirror /opt/local/aa1 /opt/local/aa2
檢查一切是否順利:
# zpool list -v test NAME SIZE ALLOC FREE EXPANDSZ CAP DEDUP HEALTH ALTROOT test 95,5M 106K 95,4M - 0% 1.00x ONLINE - mirror 95,5M 106K 95,4M - /opt/local/aa1 - - - - /opt/local/aa2 - - - -
- 設置
autoexpand
屬性:# zpool set autoexpand=on test
- 連接新設備:
# zpool attach test /opt/local/aa2 /opt/local/aa3
一切都還好嗎?
# zpool list -v test NAME SIZE ALLOC FREE EXPANDSZ CAP DEDUP HEALTH ALTROOT test 95,5M 120K 95,4M - 0% 1.00x ONLINE - mirror 95,5M 120K 95,4M - /opt/local/aa1 - - - - /opt/local/aa2 - - - - /opt/local/aa3 - - - -
是的。 5. 分離前兩個開發者:
# zpool detach test /opt/local/aa1 # zpool detach test /opt/local/aa2
最後,讓我們再次檢查一下池:
# zpool list -v test NAME SIZE ALLOC FREE EXPANDSZ CAP DEDUP HEALTH ALTROOT test 196M 124K 195M - 0% 1.00x ONLINE - /opt/local/aa3 196M 124K 195M -
它已正確增長到 200MB。