將多個磁碟機合併到一個磁碟區中

將多個磁碟機合併到一個磁碟區中

我們目前有一台具有 3 個 SSD 驅動器的專用伺服器。我們注意到我們實際上已將作業系統部署在單一磁碟機上,而其他 2 個磁碟機目前尚未使用。然而,該磁碟幾乎已滿:

/dev/md2         91G   83G  3.0G  97% /home

這裡的邏輯解決方案是將所有三個驅動器的容量 (3 x 120 GB) 結合起來,並將它們變成一個磁碟區。最好的方法是什麼?

不幸的是,目前無法重新安裝作業系統等。

伺服器運行的是 Ubuntu 14.04.5 LTS。我找到了 LVM,但尚未確定這是否是最佳解決方案。

按照要求:

root@hv01:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        20G  2.5G   16G  14% /
devtmpfs         16G  4.0K   16G   1% /dev
none            4.0K     0  4.0K   0% /sys/fs/cgroup
none            3.2G  572K  3.2G   1% /run
none            5.0M     0  5.0M   0% /run/lock
none             16G   24K   16G   1% /run/shm
none            100M     0  100M   0% /run/user
/dev/md2         91G   84G  2.6G  98% /home

root@hv01:~# cat /proc/mdstat 
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]     [multipath] [faulty] 
md1 : active raid1 sdc1[2] sda1[0] sdb1[1]
  20478912 blocks [3/3] [UUU]

md2 : active raid1 sdc2[2] sda2[0] sdb2[1]
  96211904 blocks [3/3] [UUU]

unused devices: <none>

答案1

/proc/mdstat明確表示您為作業系統 (md1) 和主目錄 (md2) 建立了 3 路鏡像集 (RAID1)。雖然這提供了充足的冗餘,但會花費大量空間。

由於您僅在 上受磁碟限制/home,因此最簡單的方法是進行一些磁碟操作。

警告:請注意,在錯誤的時間點損壞的 SSD 會遺失您的所有檔案 - 請備份並做好準備。

也就是說,我會沿著以下路線繼續

  • 從 md2 中刪除 2 個鏡像。這將為您留下一個仍然可用的系統,無需任何停機,但有 2 個可用分區。mdadm --remove /dev/md2 /dev/sda2 && mdadm --remove /dev/md2 /dev/sdb2
  • 擦除這兩個檔案中的所有檔案系統和 RAID 超級區塊。wipefs --all /dev/sda2 && wipefs --all /dev/sdb2
  • 用這 2 個分割區建立 RAID5,用作missing第三個分割區。這實際上將建立一個臨時 RAID0,其大小是原始分割區 (md3) 的兩倍。mdadm --create -n 3 --level=5 --bitmap=internal /dev/md3 /dev/sda2 /dev/sdb2 missing
  • 將此RAID5作為一個鏡像添加到原始md2中並等待重新同步完成mdadm --add /dev/md2 /dev/md3 等待同步,否則您的資料將會遺失!
  • 從md2刪除最後一個原始鏡像,留下一條腿,即新建立的md3mdadm --remove /dev/md2 /dev/sdc2
  • 增長 md2 以使用所有 md3mdadm --grow --size=max /dev/md2
  • 調整檔案系統大小以使用所有 md2這取決於所使用的 FS
  • 從最後一個分區擦除 FS 和 RAID 超級區塊wipefs --all /dev/sdc2
  • 將其新增至 RAID5 並完成重新同步。mdadm --add /dev/md3 /dev/sdc2

您現在擁有一個只有一個鏡像的鏡像集,它本身就是一個 RAID5,是初始大小的兩倍。這似乎在冗餘和大小之間取得了很好的平衡。

好的部分是:您不會遇到任何停機時間 - 使用檔案系統時可以執行上述所有步驟。

相關內容