
我一直在嘗試遵循以下指南來設定 RAID1: https://www.howtoforge.com/set-up-raid1-on-a-running-lvm-system-debian-etch
我目前有兩個 6TB 硬碟,我直接在其中一個上建立了物理卷,另一個是全新且未受影響的。
sdc 8:32 0 5.5T 0 disk
├─DATA-user_data 254:0 0 4T 0 lvm
└─DATA-app_data 254:1 0 1T 0 lvm
sdd 8:48 0 5.5T 0 disk
物理sdc
卷上有一個包含兩個邏輯卷的捲組
root@server:# pvscan
PV /dev/sdc VG DATA lvm2 [5.46 TiB / 469.03 GiB free]
Total: 1 [5.46 TiB] / in use: 1 [5.46 TiB] / in no VG: 0 [0 ]
root@server:# vgscan
Reading volume groups from cache.
Found volume group "DATA" using metadata type lvm2
root@server:# lvscan
ACTIVE '/dev/DATA/user_data' [4.00 TiB] inherit
ACTIVE '/dev/DATA/app_data' [1.00 TiB] inherit
我已經在指南中需要將分區表從 複製sdc
到sdd
,但是當然這是不可能的,因為sdc
上面沒有分區表。
如何使用sdc
和設定 RAID1 sdd
?
答案1
可以透過加入sdd
VG來建立鏡像卷
pvcreate /dev/sdd
vgextend DATA /dev/sdd
然後更改每個LV的副本數量
lvconvert -m1 DATA/user_data
lvconvert -m1 DATA/app_data
(1表示兩份數據,0表示一份)您可以透過以下指令查看鏡像進度:
lvs -a -o name,copy_percent,devices DATA
答案2
嗯,懶惰的選項是簡單地採用當前配置,/dev/sdd
按原樣添加到 LVM,然後讓 LVM 本身為您處理 RAID。這意味著mdadm
根本不參與(至少不是直接參與)。看看羅密歐的回答,這是一個很好的答案。
如果您想使用mdadm
,儘管這並非不可能(在磁碟末尾使用 1.0 版元資料),但合適的方式這樣做的方法是分割區/dev/sdd
,mdadm
在分割區上放置 RAID,在 RAID 上放置 LVM,然後將資料遷移過來。一旦您確認副本完好,您就可以解散/dev/sdc
,以相同的方式對其進行分區,然後將其添加到 RAID 中。
大致:
# partition step
parted /dev/sdd
(parted) mklabel gpt
(parted) mkpart md0_0 1MiB -1MiB
(parted) print free
(parted) quit
# mdadm step
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdd1 missing
mdadm --detail --scan > /etc/mdadm.conf
# lvm step (rsync variant, two independent copies)
vgcreate RAIDDATA /dev/md0
lvcreate ...
mkfs ...
mount ...
# LV structure and filesystems as you see fit, then copy everything over
rsync -a /mnt/DATA/. /mnt/RAIDDATA/.
# alternative lvm step (pvmove variant, single copy)
vgextend DATA /dev/md0
pvmove /dev/sdc
vgreduce DATA /dev/sdc
使用 遷移檔案rsync
應該更快、更安全(出現任何問題,原始副本仍然存在)。同時它很容易出現用戶錯誤(很難判斷是否rsync
遺漏了某些內容)。
遷移資料速度pvmove
較慢且風險較高(出現任何問題,原始副本也會遺失),但不會遺失任何內容(包括已刪除的文件等)。
此時,您想要更新 fstab / grub 中的 UUID(如果您使用了 mkfs、rsync)並更新 initramfs。重新啟動並驗證一切是否正常且/dev/sdc
不再使用。然後您就可以將其新增至 RAID 。
# partition step
parted /dev/sdc
(parted) mklabel gpt
(parted) mkpart md0_1 1MiB -1MiB
(parted) print free
(parted) quit
# raid resync step
mdadm /dev/md0 --add /dev/sdc1
watch -n 60 cat /proc/mdstat
就是這樣......
總而言之,它將為您提供大多數人期望的設定(硬碟、分割區、raid、lvm、檔案系統)。您也可以在使用時新增加密。 ;-)