使用mdadm创buildraid1数组会削减空间

我正在尝试在已部署的系统(CentOS 6.4)上创buildRAID1镜像磁盘。 我有两个磁盘:操作系统的源/ dev / sda和/ dev / sdb将是镜像。 这些磁盘作为虚拟磁盘从VMware ESXi连接,它们具有相同的大小和精简/精简configuration。

我正在学习本教程: http : //www.howtoforge.com/how-to-set-up-software-raid1-on-a-running-lvm-system-incl-grub-configuration-centos-5.3

系统信息:

/ dev / sda大小和分区:

Disk /dev/sda: 96.6 GB, 96636764160 bytes 255 heads, 63 sectors/track, 11748 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00029e34 Device Boot Start End Blocks Id System /dev/sda1 * 1 26 204800 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 26 11749 94166016 8e Linux LVM 

/ dev / sdb是完全空的,所以在复制分区表之后:

 sfdisk -d /dev/sda | sfisk --force /dev/sdb 

并将分区/ dev / sdb1和/ dev / sdb2更改为Linux Raid Autodetect,

/ dev / sdb大小和分区看起来像这样:

 Disk /dev/sdb: 96.6 GB, 96636764160 bytes 255 heads, 63 sectors/track, 11748 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000c1935 Device Boot Start End Blocks Id System /dev/sdb1 * 1 26 204800 fd Linux raid autodetect Partition 1 does not end on cylinder boundary. /dev/sdb2 26 11749 94166016 fd Linux raid autodetect 

为了确保没有以前的数组的剩余物或任何我对超级块进行了归零:

 mdadm --zero-superblock /dev/sdb1 mdadm --zero-superblock /dev/sdb2 

创build数组:所以当涉及到创build数组我使用以下命令:

 [root@testmachine test]# mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdb1 mdadm: Note: this array has metadata at the start and may not be suitable as a boot device. If you plan to store '/boot' on this device please ensure that your boot-loader understands md/v1.x metadata, or use --metadata=0.90 Continue creating array? y mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md1 started. 

 [root@testmachine test]# mdadm --create /dev/md2 --level=1 --raid-disks=2 missing /dev/sdb2 mdadm: Note: this array has metadata at the start and may not be suitable as a boot device. If you plan to store '/boot' on this device please ensure that your boot-loader understands md/v1.x metadata, or use --metadata=0.90 Continue creating array? y mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md2 started. 

数组可以看出:

 [root@testmachine test]# cat /proc/mdstat Personalities : [raid1] md2 : active raid1 sdb2[1] 94100352 blocks super 1.2 [2/1] [_U] md1 : active raid1 sdb1[1] 204608 blocks super 1.2 [2/1] [_U] unused devices: <none> 

问题 :问题在于/ dev / md2数组的大小为94100352块,但是/ dev / sda的大小略微大一些(大约50MB?) – 所以当我用“pvcreate / dev / md2”创build物理卷时卷的大小是不同的,我不能使用“pvmove”,因此我无法完成镜像LVM卷。

  --- Physical volume --- PV Name /dev/sda2 VG Name vg_testmachine PV Size 89.80 GiB / not usable 3.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 22989 Free PE 0 Allocated PE 22989 PV UUID KSqdKU-9ckP-gZ1r-JwYo-QPSE-RFrZ-lAfRBi "/dev/md2" is a new physical volume of "89.74 GiB" --- NEW Physical volume --- PV Name /dev/md2 VG Name PV Size 89.74 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID LqNUb7-5zsr-kZ7T-L96R-xKjD-OReg-k6BqDV 

(注意大小的差异)

我不是专家,因为它涉及到磁盘块等。有谁知道这可能是什么原因?

/ dev / md2小于/ dev / sda2的原因是因为在分区/ dev / sdb2的开头有一个RAID超级块。 超级块包含一个唯一的标识符以及构成该数组的其他磁盘/分区的信息,所以Linux内核可以在启动时自动组装数组,即使您更改磁盘的顺序或将内容复制到新的联合磁盘。 这是一个很小的开销,你付出了很多的灵活性交换。

当然,由于大小不同,它会阻止将/ dev / sda2镜像到/ dev / sdb2。 如果您继续阅读链接的文章,则必须在(降级的)RAIDarrays中创build一个文件系统,将这些文件复制过来,将引导装载程序更改为从/ dev / md1引导并挂载/ dev / md2, 然后您最终可以将/ dev / sda *作为RAIDconfiguration中的第二个磁盘。 这是可能的,但不是因为内心的脆弱……从一开始,使用RAID进行备份和重新安装可能更快,更安全,更容易。