我一直在尝试遵循以下指南来设置 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、文件系统)。您也可以在使用时添加加密。 ;-)