Solaris Volume Manager 管理指南

Procedure如何从文件系统创建 RAID-1 卷

使用本过程可以对现有文件系统进行镜像。如果该文件系统可以取消挂载,则无需重新引导即可完成整个过程。对于无法取消挂载的文件系统(如 /usr/swap),必须重新引导系统才能完成该过程。

如果从构建于磁盘片上的现有文件系统创建 RAID-1 卷,则主 RAID-0 卷(子镜像)中只能包含这一个片。如果要镜像对系统非常关键的文件系统,则所有的子镜像都必须仅包含一个片。

有关与对根 (/) 文件系统进行镜像相关联的过程,请参见SPARC: 如何从根 (/) 文件系统创建 RAID-1 卷x86: 如何使用 DCA 从根 (/) 文件系统创建 RAID-1 卷

在本过程使用的示例中,现有的片是 c1t0d0s0。第二个片 c1t1d0s0 适用于镜像的另一半。子镜像分别是 d1d2,镜像是 d0


注意 – 注意 –

请确保使用 metainit 命令创建单向镜像,然后使用 metattach 命令附加其他子镜像。如果不使用 metattach 命令,则不会执行重新同步操作。因此,当 Solaris Volume Manager 假定镜像的两面相同并且可以互换使用时,数据可能会损坏。


开始之前

请查看创建 Solaris Volume Manager 组件的先决条件创建和维护 RAID-1 卷

  1. 确定包含要进行镜像的现有文件系统的片,本示例使用片 c1t0d0s0

  2. 使用以下方法之一,在上一步中的片上创建一个新的 RAID-0 卷:

    • 从 Solaris Management Console 中增强的存储工具中,打开“卷”节点,然后选择“操作”⇒“创建卷”。请按照屏幕上的说明操作。有关更多信息,请参见联机帮助。

    • 使用以下格式的metainit 命令:


      # metainit -f  volume-name number-of-stripes components-per-stripe component-name
      
      -f

      强制继续执行该命令。如果片中包含已挂载的文件系统,则必须使用此选项。

      volume-name

      指定要创建的卷的名称。有关对卷进行命名的信息,请参见卷名称

      number-of-stripes

      指定要创建的条带的数目。

      components-per-stripe

      指定每个条带应包含的组件的数目。

      component-names

      指定所使用的组件的名称。本示例使用根片 c0t0d0s0

  3. 在未使用的片(在本示例中为 c1t1d0s0)上创建另一个 RAID-0 卷(串联),将其用作第二个子镜像。第二个子镜像不得小于原来的子镜像的大小。请使用以下方法之一:

    • 从 Solaris Management Console 中增强的存储工具中,打开“卷”节点,然后选择“操作”->“创建卷”并按照屏幕上的说明操作。有关更多信息,请参见联机帮助。

    • 使用以下格式的 metainit 命令:


      # metainit volume-name number-of-stripes components-per-stripe component-name
      

      注 –

      有关这些选项的说明,请参见步骤 2。


  4. 使用以下方法之一创建单向镜像:

    • 从 Solaris Management Console 中增强的存储工具中,打开“卷”节点,然后选择“操作”⇒“创建卷”。请按照屏幕上的说明操作。有关更多信息,请参见联机帮助。

    • 使用以下格式的metainit 命令:


      # metainit volume-name -m submirror-name
      
      volume-name

      指定要创建的卷的名称。

      -m

      指定要创建镜像。

      submirror-name

      指定将成为镜像中的第一个子镜像的组件的名称。在本示例中,这是包含根片的 RAID-0 卷。

    有关更多信息,请参见 metainit(1M) 手册页。


    注意 – 注意 –

    从现有文件系统创建镜像时,必须严格按照以下两个步骤操作以避免数据损坏。


  5. 编辑 /etc/vfstab 文件,以便文件系统挂载指令引用镜像,而不引用块设备。有关 /etc/vfstab 文件的更多信息,请参见《系统管理指南:设备和文件系统》中的“挂载文件系统”

    例如,如果 /etc/vfstab 文件包含文件系统的以下项:


    /dev/dsk/slice /dev/rdsk/slice /var ufs 2 yes -

    请更改该项,使其显示为:


    /dev/md/dsk/mirror-name /dev/md/rdsk/mirror-name /var ufs 2 yes -
  6. 按照以下过程之一重新挂载新镜像的文件系统:

    • 如果要对可以取消挂载的文件系统进行镜像,则取消挂载该文件系统并将其重新挂载。


      # umount /filesystem
      
      
      # mount /filesystem
      
    • 如果要对无法取消挂载的文件系统进行镜像,则重新引导系统。


      # reboot
      
  7. 使用以下格式的 metattach 命令附加第二个子镜像。


    # metattach volume-name submirror-name
    
    volume-name

    指定要向其中添加子镜像的 RAID-1 卷的名称

    submirror-name

    指定将成为附加到该镜像的第二个子镜像的组件的名称

    有关更多信息,请参见 metattach(1M) 手册页。


示例 11–3 从可以取消挂载的文件系统创建双向镜像


# metainit -f d1 1 1 c1t0d0s0

d1: Concat/Stripe is setup

# metainit d2 1 1 c1t1d0s0

d2: Concat/Stripe is setup

# metainit d0 -m d1

d0: Mirror is setup

# umount /master

(编辑 /etc/vfstab 文件使该文件系统引用镜像)

# mount /master

# metattach d0 d2

d0: Submirror d2 is attached

在本示例中,-f 选项会强制创建第一个串联 d1,其中包含已在 /dev/dsk/c1t0d0s0 上挂载的文件系统 /master。第二个串联 d2 是从 /dev/dsk/c1t1d0s0 创建的。该片不得小于 d1 的大小。带有 -m 选项的 metainit 命令可用来从 d1 创建单向镜像 d0

接下来,应当在 /etc/vfstab 文件中更改与文件系统对应的项,使其引用该镜像。/etc/vfstab 文件中以下行最初如下所示:


/dev/dsk/c1t0d0s0 /dev/rdsk/c1t0d0s0 /var ufs 2 yes -

该项更改为如下所示:


/dev/md/dsk/d0 /dev/md/rdsk/d0 /var ufs 2 yes -

最后,重新挂载该文件系统,并将子镜像 d2 附加到该镜像,这会导致重新同步镜像。系统会确认是否已设置 RAID-0 和 RAID-1 卷并已附加子镜像 d2



示例 11–4 从无法取消挂载的文件系统创建双向镜像


# metainit -f d12 1 1 c0t3d0s6

d12: Concat/Stripe is setup

# metainit d22 1 1 c1t0d0s6

d22: Concat/Stripe is setup

# metainit d2 -m d12

d2: Mirror is setup

(编辑 /etc/vfstab 文件使 /usr 引用该镜像)

# reboot

...

# metattach d2 d22

d2: Submirror d22 is attached

本示例使用包含 /usr 文件系统的片创建双向镜像。-f 选项会强制创建第一个串联 d12,其中包含已在 /dev/dsk/c0t3d0s6 上挂载的文件系统 /usr。第二个串联 d22 是从 /dev/dsk/c1t0d0s6 创建的。该片不得小于 d12 的大小。带有 -m 选项的 metainit 命令使用包含 /usr 文件系统的串联创建单向镜像 d2。接下来,必须编辑 /etc/vfstab 文件以更改 /usr 的项,使其引用该镜像。

/etc/vfstab file 包含 /usr 文件系统的以下项:


/dev/dsk/c0t3d0s6 /dev/rdsk/c0t3d0s6 /usr ufs 1 yes -

将该项更改为如下所示:


/dev/md/dsk/d2 /dev/md/rdsk/d2 /usr ufs 1 yes -

重新引导之后,第二个子镜像 d22 将附加到该镜像,这会导致对镜像重新同步。



示例 11–5 从 /swap 空间创建镜像


# metainit -f d11 1 1 c0t0d0s1

d11: Concat/Stripe is setup

# metainit d21 1 1 c1t0d0s1

d21: Concat/Stripe is setup

# metainit d1 -m d11

d1: Mirror is setup

(编辑 /etc/vfstab 文件使 swap 引用该镜像)

# reboot

...

# metattach d1 d21

d1: Submirror d21 is attached

在本示例中,-f 选项会强制创建第一个串联 d11,其中包含已在 /dev/dsk/c0t0d0s1 上挂载的文件系统 swap。第二个串联 d21 是从 /dev/dsk/c1t0d0s1 创建的。该片不得小于 d11 的大小。带有 -m 选项的 metainit 命令可使用包含 swap 的串联创建单向镜像 d1。接下来,如果 /etc/vfstab 文件中存在与 swap 对应的项,则必须编辑该项,使其引用该镜像。

/etc/vfstab file 包含 swap 空间的以下项:


/dev/dsk/c0t0d0s1 - - swap - no -

请更改该项,使其显示为:


/dev/md/dsk/d1 - - swap - no -

重新引导之后,第二个子镜像 d21 将附加到该镜像,这会导致对镜像重新同步。

要在对 swap 空间进行镜像之后保存崩溃转储,请使用 dumpadm 命令将转储设备配置为卷。例如,如果交换设备的名称为 /dev/md/dsk/d2,请使用 dumpadm 命令将该设备设置为转储设备。