我們目前有一台具有 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刪除最後一個原始鏡像,留下一條腿,即新建立的md3
mdadm --remove /dev/md2 /dev/sdc2
- 增長 md2 以使用所有 md3
mdadm --grow --size=max /dev/md2
- 調整檔案系統大小以使用所有 md2這取決於所使用的 FS
- 從最後一個分區擦除 FS 和 RAID 超級區塊
wipefs --all /dev/sdc2
- 將其新增至 RAID5 並完成重新同步。
mdadm --add /dev/md3 /dev/sdc2
您現在擁有一個只有一個鏡像的鏡像集,它本身就是一個 RAID5,是初始大小的兩倍。這似乎在冗餘和大小之間取得了很好的平衡。
好的部分是:您不會遇到任何停機時間 - 使用檔案系統時可以執行上述所有步驟。