使用 mdadm 创建 raid1 阵列可节省空间

使用 mdadm 创建 raid1 阵列可节省空间

我正在尝试在已部署的系统(CentOS 6.4)上创建 RAID1 镜像磁盘。我有两个磁盘:源 /dev/星展银行与操作系统和 /dev/安全数据库这将是镜像。磁盘作为虚拟磁盘从 VMware ESXi 连接,它们具有相同的大小和厚/薄配置。

我正在关注这个教程: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

创建数组: 因此,当创建数组时,我使用以下命令:

[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”创建物理卷时,卷的大小不同,我不能使用“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

(注意尺寸的差异)

对于磁盘阻塞等问题,我不是专家。有人知道这可能是什么原因造成的吗?

答案1

/dev/md2 小于 /dev/sda2 的原因在于分区 /dev/sdb2 的开头有一个 RAID 超级块。超级块包含唯一标识符以及组成阵列的其他磁盘/分区的信息,因此即使您更改磁盘的顺序或将内容复制到全新的磁盘,Linux 内核也可以在启动时自动组装阵列。您付出的代价很小,但可以换来很大的灵活性。

当然,由于大小不同,它会阻止您将 /dev/sda2 镜像到 /dev/sdb2。如果您继续阅读链接的文章,则必须在(降级的)RAID 阵列中创建一个文件系统,复制文件,将引导加载程序更改为从 /dev/md1 引导并挂载 /dev/md2,然后然后您最终可以将 /dev/sda* 附加为 RAID 配置中的第二个磁盘。这是可能的,但不适合胆小的人...从一开始就备份并重新安装 RAID 可能更快、更安全、更容易。

相关内容