Solaris 10 Advance Administrator 310-202 读书笔记 第九章 ---- SolarisVolume Manager 介绍

Solaris VolumeManager 是用于管理大量磁盘及磁盘上数据的软件产品。尽管 Solaris Volume Manager 产品的用途有很多,但主要任务包括:

增加存储容量

提高数据可用性

简化大型存储设备的管理

在某些情况下, Solaris VolumeManager 还可以提高 I/O 性能。

 

逻辑卷:

Solaris Volume Manager 使用虚拟磁盘来管理物理磁盘及其关联的数据。在 Solaris Volume Manager 中,虚拟磁盘称为卷。出于历史原因,一个逻辑卷工作起来像一个物理的 slice 。然而,一个物理卷可以跨越多个磁盘成员。 Solaris Volume Manager 把指向一个卷的 I/O 请求转化为一个对基础磁盘成员的 I/O 请求。

Solaris Volume Manager 卷是由磁盘片或其他 Solaris Volume Manager 卷构建的。创建卷的简单方法是使用内置于 Solaris Management Console 中的图形用户界面 (graphical user interface, GUI) Solaris Management Console 中增强的存储工具为您展示了所有现有卷的视图。按照向导中的步骤,您可以方便地生成任何种类的 Solaris Volume Manager 卷或组件。您还可以使用 Solaris Volume Manager 命令行实用程序生成和修改卷。

如果需要更多存储容量作为单个卷,可以使用 Solaris Volume Manager 使系统将片集合视为一个较大的卷。使用这些片创建卷之后,可以立即开始使用该卷,就像使用任何 真正 的片或设备一样。

Solaris Volume Manager 通过使用 RAID-1 (镜像)卷和 RAID-5 卷可以提高数据的可靠性和可用性。 Solaris Volume Manager 热备件可以进一步提高镜像卷和 RAID-5 卷的数据可用性。

 

软分区:

随着磁盘存储容量的增加,磁盘阵列为 Solaris 系统提供了更大的逻辑设备。为了创建更多便于管理的文件系统或分区大小,用户可能需要将磁盘或逻辑卷划分为八个以上的分区。 Solaris VolumeManager 的软分区功能可以满足此需要。 Solaris VolumeManager 最多可支持每个磁盘集8192 个逻辑卷。此数字包括本地(即未

指定的)磁盘集。Solaris VolumeManager 可以在需要卷时动态配置卷。

软分区提供用于将较大存储空间划分为更多便于管理的空间的工具。例如,在其他方案中,大的存储集合提供许多 GB 的冗余存储。但是,许多可能的方案最初不需要如此多的空间。软分区使您能够将存储空间划分为更多便于管理的分区。其中每个分区都可以具有完整的文件系统。例如,可以在 RAID-1 卷或 RAID-5 卷的顶部创建 1000 个软分区,以便每个用户都可以在单独的文件系统上具有起始目录。如果用户需要更多

空间,可能只需扩展软分区即可。

可以使用软分区根据需要将磁盘片或逻辑卷分成许多分区。必须为每个分区(即 软分区 )提供名称,就像为其他存储卷(如条带或镜像)提供名称一样。软分区命名后,只要它不包括在其他卷中,则应用程序(包括文件系统)便可对其进行访问。软分区包括在卷中后,就不应对其直接访问。

对于一个磁盘来说,做了分区,创建了文件系统之后,你就不可能增加一个slice ,你必须放弃现有的磁盘分区格式,修改分区。对于软分区来说,你可以在为一个基层的设备增加空间部分,而且需要移动和损坏其他软分区上的数据。

 

软分区的建议:

1.              可以在任何片上生成软分区。但是,创建占用整个磁盘的单个片,然后在该片上创建软分区是在磁盘级别上使用软分区的最有效方式。

2.              要扩展和管理存储空间,可以先在磁盘的slice 上创建条带,然后在条带上创建软分区。

3.              你可以使用卷上任何可用的空间增加软分区。

4.              创建RAID-1 卷或RAID-5 卷,然后在卷上创建软分区,来获得最大的弹性和更高的可用性。

 

状态数据库介绍:

使用solaris volume manager 创建卷之前,solaris volume manager 软件系统必须先保存了状态数据库副本。

状态数据库在磁盘上保存了solaris volume manager 的配置信息。你的配置信息可以改变状态数据库的数据和轨迹。当配置信息或状态改变时,solaris volume manager 可以自动更改状态数据库。例如,创建一个新的卷是配置信息的改变,一个子镜像的失败属于状态的改变。

状态数据库各部分如下:

1.              solaris volume manager 状态数据库

2.              推荐的状态数据库副本

3.              建议的 状态数据库副本

 

solaris volume manager 状态数据库:

状态数据库是多个重复的数据库副本。每个备份,都叫做状态数据库的副本,要确保数据库中的数据是合法的。 Solaris VolumeManager 可维护状态数据库的多个副本,以提供冗余并防止数据库在系统崩溃过程中损坏(最多只会有一个数据库副本损坏)。

状态数据库副本可以确保状态数据库中的数据始终有效。当状态数据库被更新时,每个状态数据库副本也被更新。一次只会对一个副本进行更新(以防止系统崩溃的情况下所有更新副本都会损坏)。

如果系统丢失了状态数据库副本,则 Solaris VolumeManager 必须确定哪个状态数据库副本仍然包含有效数据。 Solaris VolumeManager 通过使用 多数一致算法 来确定此信息。在此算法中,只有当多数(半数 + 1 个)状态数据库副本可用并一致时,才会认为其中的任何状态数据库副本是有效的。由于多数一致算法的要求,设置磁盘配置时,必须创建至少三个状态数据库副本。只要三个状态数据库副本中至少有两个可用,就

可以取得一致。

在引导过程中, Solaris VolumeManager 将忽略损坏的状态数据库副本。在某些情况下, Solaris Volume Manager 会尝试重写损坏的状态数据库副本。否则,在修复这些状态数据库副本之前,会将其忽略。如果状态数据库副本由于其基础片遇到错误而损坏,则需要修复或替换该片,然后再启用副本。

如果丢失所有的状态数据库副本,则理论上可能会丢失存储在 Solaris VolumeManager 卷中的所有数据。出于此原因,最好是在单独的驱动器上跨多个控制器创建足够的状态数据库副本,以防止灾难性故障。另外,保存初始的 Solaris VolumeManager 配置信息以及磁盘分区信息也是明智之举。

为了保护数据,只有当所有状态数据库副本中有一半可用时, Solaris VolumeManager 才会运行。因此,该算法可确保不会损坏数据。

多数一致算法可提供以下功能:

1.              如果至少有一半状态数据库副本可用,则系统将继续运行。

2.              如果少于一半的状态数据库副本可用,则系统将崩溃。

3.              仅当全部状态数据库副本中的多数(半数 + 1 )可用时,系统才能重新引导至多用户模式。

 

关于状态数据库副本的推荐:

要避免单点故障,请将状态数据库副本分布于片、驱动器和控制器上。一般希望在单个组件发生故障时大部分副本完好。如果丢失了副本(例如,由于设备故障),则运行 Solaris VolumeManager 或重新引导系统时可能会出现问题。当处理状态数据库的问题时,应该考虑以下几个方面:

1.              缺省情况下,状态数据库副本的大小为 4MB 8192 个块。应在专用片上创建每个副本大小至少为 4MB 的状态数据库副本。

2.              可以在将用作 RAID-0 RAID-1 RAID-5 卷的一部分的片或软分区中创建状态数据库副本

3.              可以在未使用的片上创建状态数据库副本。不可以用已经使用的slice 创建。

4.              建议至少要有 3 个状态数据库副本,每个 Solaris VolumeManager 磁盘集最多有 50 个副本。建议遵循以下原则:

对于只有一个驱动器的系统:一个片上放置全部三个副本。

对于具有两个到四个驱动器的系统:一个驱动器上放置两个副本。

对于具有五个或更多驱动器的系统:一个驱动器上放置一个副本。

5.              RAID-1 卷用于小规模的随机 I/O (如数据库中的随机 I/O )。要获得最佳性能,请在未连接到 RAID-1 卷的片上(最好位于单独的磁盘和控制器上)的每个 RAID-1 卷中至少放置两个附加副本。

6.              可以随时向系统中添加附加的状态数据库副本。附加的状态数据库副本有助于确保 Solaris VolumeManager 的可用性。

注意 如果已从 Solstice DiskSuite 产品升级到 Solaris VolumeManager ,并且使状态数据库副本与文件系统或逻辑卷共享片(与单独的片相对),请不要删除现有副本并将其替换为同一位置中的新副本。

Solaris VolumeManager 中状态数据库的缺省大小为 8192 个块,而 Solstice DiskSuite 产品中的缺省大小为 1034 个块。删除在 Solstice DiskSuite 产品中创建的缺省大小的状态数据库副本,然后使用 Solaris VolumeManager 添加新的缺省大小的副本时,请务必小心谨慎。这会覆写占用共享片其余空间的任何文件系统的前 7158 个块,从而会损坏数据。

 

热备件和热备用池的概述:

热备用池 Solaris VolumeManager 用于为 RAID-1 (镜像)和 RAID-5 卷提供增加的数据可用性的片( 热备件 )的集合。在子镜像或 RAID-5 卷中出现片故障时, Solaris Volume Manager 会自动使用热备件替换出现故障的片。不能使用处于空闲状态的热备件来存放数据或状态数据库副本。热备件必须保持就绪状态,以便在与其关联的卷中出现片故障时,能够立即投入使用。 要使用热备件,除了系统实际要求运行的那些磁盘以外,还必须另购其他磁盘。

热备件用于应对出现硬件故障的情况。 RAID-1 RAID-5 卷中的片在出现故障时将由热备件自动替换。热备件经过重新同步便可在卷中使用。修复或替换出现故障的子镜像或 RAID-5 卷片之前,可以临时使用热备件。

 

热备用池:

热备用池是热备件的有序列表(集合)。Solaris volume manager 使用热备用池提高 RAID-1 RAID-5 卷的数据可用性。当处在镜像或RAID-5 卷中的一个slice 失败的时候,Solaris volume manager 保留一个可自动置换的热备件。

注意:热备件不可以应用在RAID-0 卷和单向镜像上。在自动置换工作的时候,冗余的数据必须可用的。

 

 

Solaris 10 Advance Administrator 310-202 读书笔记 第九章 ---- Configuring SolarisVolumeManager Software

目标: Solaris Volume Manager 软件提供命令行和用户图形界面工具,让用户把磁盘物理 slice 设置成逻辑卷。

1.   描述 Solaris Volume Manager 软件概念。

2.   创建一个 RAID-0( 串联的 ) 卷。

3.   root(/) 文件系统创建一个 RAID-1( 镜像 ) 卷。

 

Solaris Volume Manager 概念:

Solaris 9 10 操作系统中 Solaris Volume Manager 替换了 Solstice Disk Suite 软件。

Solaris Volume Manager 软件被用来实现 RAID 0,RAID 1 RAID 1+0, RAID 5.

这个模块包含如下的配置:

1.   RAID 0 :非冗余磁盘阵列(串联的和条带的)。

2.   RAID 1 :镜像的磁盘阵列。

 

状态数据库副本:

状态数据库在磁盘上保存了你在 solaris volume manager 软件中的配置信息。多个数据库的拷贝(或称为副本)提供了数据的冗余和保护,防止由于一个备份的数据丢失所导致的系统崩溃或其他失败。状态数据库的副本分布在多个磁盘上,所以一个磁盘的失败只可能导致一个状态数据库副本的丢失。

如果系统丢失了一个状态数据库的副本, Solaris Volume Manager 会使用多数一致算法来决定哪个数据库副本是可用的。 在此算法中,只有当多数(半数 + 1 个)状态数据库副本可用并一致时,才会认为其中的任何状态数据库副本是有效的。由于多数一致算法的要求,设置磁盘配置时,必须创建至少三个状态数据库副本。只要三个状态数据库副本中至少有两个可用,就可以取得一致。

 

多数一致算法功能:

1.  如果至少有一半状态数据库副本可用,则系统将继续运行。

2.  如果少于一半的状态数据库副本可用,则系统将崩溃。

3.  为了保护数据,只有当所有状态数据库副本中有一半可用时, Solaris VolumeManager 才会运行。因此,该算法可确保不会损坏数据。

如果可用的状态数据库副本数量不足,则必须将系统引导至单用户模式,并且删除足够的已损坏副本或缺失副本以达到定额。

 

创建状态数据库:

你可以使用下面的方法创建状态数据库:

1.   metadb -a 命令。

2.   Solaris Volume Manager 用户图形界面。

命令行的方式创建状态数据库:

metadb 命令的语法是:

metadb -a [-f] [-c n] [-l nnnn] disk_slice

-a ---- 表示增加一个数据库副本。

-f ---- 指定要强制执行该操作,即使没有副本存在也是如此。使用 -f 可强制创建初始副本。

-c n ---- 指定要添加到给定片中的副本数量。

-l nnnn ---- 指定新副本的大小(用块表示)。缺省大小是 8192 。此大小应适合几乎所有的配置(包括那些具有数千个逻辑卷的配置)。

disk_slice ---- 指定将用来存放副本的部件的名称。

注意 在命令行上输入的不带任何选项的 metadb 命令可报告所有状态数据库副本的状态。

下面的例子显示怎样创建一个状态数据库的副本:

# metadb -a -f c0t0d0s4 c0t0d0s5 c1t0d0s0 c1t0d0s1

# metadb

  flags   first blk     block count

a    u        16             8192            /dev/dsk/c0t0d0s4

a    u        16             8192            /dev/dsk/c0t0d0s5

a    u        16             8192            /dev/dsk/c1t0d0s0

a    u        16             8192            /dev/dsk/c1t0d0s1

这个例子列出了四个刚刚创建的副本。每个副本从指定的 slice 的块 16 开始。每个副本包含 8192 个块,或 4 兆空间。 Flags 表示副本是活动的和最新的。如果在 flags 栏出现了大写字母,则表示副本损坏了。

注意 -- 上面的例子吧状态数据库的副本放置在不同的控制器的磁盘上。对于一个生产环境,这是一个适当的容错配置。

使用 Solaris Volume Manager 图形界面创建状态数据库副本。

1. 执行 smc ,打开 solaris manager 控制器。

2.  使用导航栏找到 Enhanced Storage 工具。点击This Computer, 选择Storage ,点击Enhanced Storage 显示该工具的内容。

3.  点击状态数据库副本的图标。

4.  如果状态数据库当前包含副本,那么副本就会显示在浏览框内。如果没有副本,则浏览框是空的。

5.  要创建一个副本,从Action 菜单里选择Create Replicas. 一连串的窗口会指引你创建状态数据库副本。

6.  当存在附加的磁盘配置时,选择一个交换的磁盘配置。

注意- 一个磁盘配置是指在共享的磁盘上的配置,它包含逻辑卷管理对象,可以被单独共享。不能并行的被一个或多个主机共享。磁盘配置是主机故障切换的使能器。

7.  点击Next.

8.  最少要选择三个slice ,用来存储状态数据库副本。

9.  点击Next.

10.           副本的默认大小是8192 个数据块,或4 兆空间。你可以在“Set Length and Count ”窗口中增加副本的大小和每个slice 上副本的数量。除非设备的局限,需要你你在一个磁盘上部署多个副本,否则接受默认的数量1

11.           点击Next.

12.           在“Review ”窗口,会显示你选择的所有选项。另外,该窗口还显示Storage Volume Manager 创建你的配置的命令。双击你的选项,确认一些关键的配置。

13.           点击“Finish ”,完成配置。

如果至少有三个副本配置在不同的磁盘上,系统可以允许一个磁盘损坏,并且可以保持多数一致算法。多数一致算法对于系统保持运行或重新启动到多用户模式下是必须的。

 

配置 RAID-0

RAID-0 卷方便你有效的扩展磁盘空间。这些卷不会提供数据冗余功能,但是可以用来扩展磁盘存储空间。如果RAID-0 卷中的一个磁盘损坏,磁盘上的数据就会丢失。RAID-0 有两种形式,条带和串连。

1.              串连的卷

一个串连卷,会先在第一个可用的slice 上写数据,当第一个slice 满了,在到第二个可用的slice 上写数据。

2.              条带卷

一个条带就像穿过所有slice 的一条带子一样分布数据

RAID-0 条带卷

RAID-0 (条带化)卷是跨一个或多个组件安排数据存储的卷。条带化时会跨越两个或更多组件交替存储大小相等的数据区段,形成一个逻辑存储单元。这些区段循环交插,使得组合的空间由各组件交替组成,效果上就像洗牌一样。

条带化后,多个控制器可以同时访问数据,这也称为并行访问。并行访问可以增大I/O 吞吐量,因为卷中的所有磁盘在大多数时间里都在忙于为I/O 请求提供服务。

不能将现有文件系统直接转换为条带化系统。必须备份文件系统、创建卷,然后将文件系统恢复为条带化卷。

 

创建一个RAID-0 卷:

使用命令行:

在这个例子中,用在/export/home 文件系统的slice 几乎没有空间了。把存在另一个磁盘上的新的slice 串连起来,创建一个RAID-0 串连卷。

当前的slice 显示为:

# df -h /export/home

Filesystem          size    used     avail    capacity    Mounted on

/dev/dsk/c0t0d0s7   470M   395M     28M    94%       /export/home

如果还没有配置 metadatabase ,在创建任何 metadevice 之前先配置 metadatabase.

# metadb -a -f -c 2 c3t2d0s7 c3t3d0s7

# metadb

flags first blk   block count

a     u   16        8192            /dev/dsk/c3t2d0s7

a     u   8208      8192                  /dev/dsk/c3t2d0s7

a     u   16        8192                 /dev/dsk/c3t3d0s7

a     u   8208      8192                 /dev/dsk/c3t3d0s7

串连的卷必须有一个相关的 metadevice 名称。 Metinit 命令可以创建 metadevice. 语法如下:

metainit -f concat/stripe numstripes width component ...

 

-f  ---- 强制metainit 命令继续,甚至在slice 上已经挂接了一个文件系统或用作swap 交换空间的情况下。当在root,swap,/usr 文件系统中配置景象或串连时,这个选项非常有用。

Concat/stripe ----- 指定定义的串连或条带卷的名称。

Numstripes ---- 指定metadevice 上的条带的个数。例如,条带状的numstripes 经常设置为1 ,对于串连来说,numstripesslice 数量相同。

Width ---- 指定创建条带的slice 数量。当width 大于1 的时候,slice 是条带的。

Component ---- 指定物理slice 的逻辑名称,例如:/dev/dsk/c0t0d0s1

Metadevice 参照字母d 和紧跟其后的数字。一个新的metadeviced0. 当一个slice 存在一个串连的已挂接卷中时–f 选项是必须的。在串连中,条带的数量和slice 的数量相同,所以在这种情况下值是2 。在每个条带上slice 的数量是1 ,所以每个slice 前的数据是1

# metainit -f d0 2 1 c0t0d0s7 1 c3t2d0s0

d0: Concat/Stripe is setup

 

metastat 命令用来检查配置信息。

# metastat

d0: Concat/Stripe

Size: 3118752 blocks (1.5 GB)

Stripe 0:

Device Start Block Dbase Reloc

c0t0d0s7 0 No Yes

Stripe 1:

Device Start Block Dbase Reloc

c3t2d0s0 2160 No Yes

Device Relocation Information:

Device Reloc Device ID

c0t0d0 Yes id1,dad@AST38420A=7AZ0VMFG

c3t2d0 Yes id1,sd@SFUJITSU_MAB3045S_SUN4.2G00F50615____

 

d0 metadevice 显示了串连卷由两个条带组成。新的设备的块设备和裸设备文件的表述如下。

 

# ls -lL /dev/md/dsk

total 0

brw-r----- 1 root sys 85, 0 Oct 25 12:35 d0

# ls -lL /dev/md/rdsk

total 0

crw-r----- 1 root sys 85, 0 Oct 25 12:35 d0

 

新的metadevice(d0) 创建好了,但是还没有被使用。/export/home 文件系统仍然挂接在一个固定的磁盘slice 上。

 

# df -h /export/home

Filesystem size used avail capacity Mounted on

/dev/dsk/c0t0d0s7 470M 395M 28M 94% /export/home

 

需要重新挂接到新建的 metadevice 上,配置 /etc/vfstab 文件,把文件系统的挂接信息设定进去。在系统启动的时候就会把文件系统挂接到 metadevice 上。

原来的 è

/dev/dsk/c0t0d0s7 /dev/rdsk/c0t0d0s7 /export/home ufs 2 yes –

配置后的 è

/dev/md/dsk/d0   /dev/md/rdsk/d0   /export/home ufs 2 yes –

然后执行 unmount remount 命令,使新挂接生效。

# umount /export/home

# mount /export/home

# df -h /export/home

Filesystem size used avail capacity Mounted on

/dev/md/dsk/d0 470M 395M 28M 94% /export/home

现在文件系统挂接到 metadevice 上了,但是,需要注意的是,文件系统并没有显示有较大的空间,仍然是 94% 。现在的文件系统需要增加新的空间。使用 growfs 命令,和 -M 选项指定一个挂接点。

# growfs -M /export/home /dev/md/rdsk/d0

/dev/md/rdsk/d0: 3118752 sectors in 3094 cylinders of 16 tracks, 63

sectors

1522.8MB in 194 cyl groups (16 c/g, 7.88MB/g, 3776 i/g)

super-block backups (for fsck -F ufs -o b=#) at:

32, 16224, 32416, 48608, 64800, 80992, 97184, 113376, 129568, 145760,

2968096, 2984288, 3000480, 3016672, 3032864, 3049056, 3065248, 3081440,

3096608, 3112800,

文件系统现在占有了 d0 上所有的空间。

# df -h /export/home

Filesystem size used avail capacity Mounted on

/dev/md/dsk/d0 1.4G 395M 988M 29% /export/home

 

使用 SMC

在使用 SMC 的时候,没有可能实现和命令行相同的配置。在 SMC 里执行 metainit 命令的时候,在 slice 选项的后面,没有使用 -f 强行添加一个挂接的文件系统到 metadevice 上。 SMC 里配置串连卷,必须先取消 /export/home 的文件系统。

# umount /export/home

这里使用和命令行例子一样的 slice 和文件系统,并假设 metastate 数据库已经配置好了。

1.              运行 SMC

# smc &

2.              选择卷工具,使用“ Action ”菜单创建卷。每次新建一个卷的时候,你可以新建一个附加的状态数据库副本。当创建 RAID-0 卷的时候,不一定需要创建一个附加的状态数据库副本。

3.              ”Create Volume” 窗口里选择“ Don’t Create State Database Replicas ”,点击 next.

4.              每次你新建一个卷的时候你可以把它重新定位到一个可交换得磁盘配置。选择默认的 <none> 。并继续。

5.              在“ Select Volume Type ”窗口选择你需要创建的类型。选择串连的 RAID-0 ,并继续到下一页。

6.              给卷起个名字。这里命名为 d0. next 继续。

7.              选择一个可用的 slice ,并加入到已选中的列表里。继续。

8.              为选中的 slice 排序。继续。

9.              对于权限大的用户,热备件池是 slice 的设置,你可以使用它提高系统的容错性。它允许你继续向一个失败的卷里访问数据直到你替换了这个失败的 slice. 热备件自动替换失败的 slice 。当使用一个新的 slice 替换了失败的 slice 之后,热备件会自动返回到可交换的 slice 上。

RAID-0 没有任何数据冗余部分,也没有创建热备件池。所以这里选择“ No Hot Spare Pool ”,继续。

10.       Create Volume ”窗口显示了你选择的的所有配置信息。它也提供了命令的总合,提供了命令行必须的元素。点击 Finish, 结束配置。

上面的步骤创建了 d0 串连的元设备。接下来配置 /etc/vfstab 。文件系统重新挂接,并且增加可用空间。

首先配置 /etc/vfstab

/dev/dsk/c0t0d0s7 /dev/rdsk/c0t0d0s7 /export/home ufs 2 yes –

=== è

/dev/md/dsk/d0 /dev/md/rdsk/d0 /export/home ufs 2 yes –

 

# mount /export/home

# growfs -M /export/home /dev/md/rdsk/d0

/dev/md/rdsk/d0: 3118752 sectors in 3094 cylinders of 16 tracks, 63

sectors

1522.8MB in 194 cyl groups (16 c/g, 7.88MB/g, 3776 i/g)

super-block backups (for fsck -F ufs -o b=#) at:

32, 16224, 32416, 48608, 64800, 80992, 97184, 113376, 129568, 145760,

2968096, 2984288, 3000480, 3016672, 3032864, 3049056, 3065248, 3081440,

3096608, 3112800,

# df -h /export/home

Filesystem size used avail capacity Mounted on

/dev/md/dsk/d0 1.4G 395M 988M 29% /export/home

 

配置 RAID-1

RAID-1 卷也叫做镜像,可以提供数据冗余。在双向镜像中,数据被写在两个磁盘的相同大小的slice 上。如果一个磁盘的slice 坏掉,另一个磁盘会提供当前的数据备份。

一个RAID-1 卷在若干个RAID-0 卷上维护了数据的相同的备份。镜像需要更多的磁盘。你需要至少两个磁盘来实现镜像。

当配置好一个镜像之后,你可以把它当作一个物理slice 来使用。当数据的多个备份可用的,并且正确配置了读写策略,可以降低数据的访问时间。

你可以镜像任何文件系统,包含已经存在的文件系统。

 

使用多个子镜像:

一个镜像由两个或多个RAID-0 卷组成。被镜像的RAID-0 卷被称作子镜像。一个镜像由两个子镜像组成,被称作双向镜像。当一个镜像由三个子镜像组成,被称作三向镜像。

创建一个双向镜像,通常用来满足数据冗余的需要,一个三向镜像可以让你在一个子镜像脱机的情况下维持数据冗余。

当一个子镜像脱机的时候,是只读模式的。Solaris Volume Manager 追寻所有写在在线子镜像的变化信息,当脱机的子镜像重新在线子后,只有新写入的部分被重新同步。把子镜像脱机的典型原因包括,备份,查找问题和修复。

你可以在任何时候从一个镜像上装载或卸载一个子镜像,但是至少要保持一个子镜像存在镜像中。通常,你可以先创建一个只包含一个子镜像的镜像,之后再添加附加的镜像。

镜像选项:

1.              镜像读策略

2.              镜像写策略

注意—- 这里列出的镜像的可选项只代表使用Solaris Volume Manager 配置RAID-1 时显示的可选项。

最初创建镜像时,可以定义镜像选项。设置镜像且镜像处于运行状态后,还可以更改镜像选项。你可以分布数据的装载在各个子镜像上,这样可以提高读的性能。

RAID-1 卷读取策略:

读取策略

说明

循环(缺省)

尝试平衡子镜像中的负载。从镜像的所有子镜像中依照循环顺序(一个接着一个)执行所有读取操作。

几何

可以基于逻辑磁盘块地址划分不同子镜像的读取操作。例如,使用双向子镜像时,可以将镜像上的磁盘空间划分为两个大小相等的逻辑地址范围。从某个子镜像的读取操作被限制到逻辑范围的一半。从其他子镜像的读取操作被限制到另一半。几何读取策略可以有效减少读取所需的查找时间。性能提高的程度(通过使用此读取策略)取决于系统 I/O 负载以及应用程序的访问模式。

第一

将所有读取操作导向第一个子镜像。只有在组成第一个子镜像的设备比第二个子镜像的设备速度明显更快时,才应使用此策略。

通过同时复制所有子镜像可以提高写的性能。如果在写的过程中有一个失败了,失败的子镜像就会处在维护的状态。

RAID-1 卷写入策略

写入策略

说明

并行(缺省)

对镜像执行同时复制并分发到所有子镜像的写入操作。

串行

对子镜像连续执行写入操作(也就是说,第一个子镜像写入操作完成后,才能启动第二个子镜像写入操作)。此策略指定必须完成向一个子镜像的写入操作,才能启动下一个子镜像写入操作。如果因电源故障等无法访问子镜像,则系统会提供此策略。

当一个子镜像脱机的时候,任何写入镜像的信息追寻信息会纪录在一个脏区域log 里。当子镜像在线后,这些数据就会更新或同步到子镜像上。

 

创建一个Root 文件系统的镜像:

创建过程可以通过命令行模式独立完成,但是SMC 不能独立完成,需要命令行的帮助。就像RAID-0 创建过程中,SMC 不可以使用-f 来强行为一个挂接过的文件系统创建一个metadevice

这部分介绍怎样创建一个不可以卸载的root 文件系统的RAID-1 卷,步骤如下:

1.              为将要镜像的文件系统创建一个RAID-0 卷。

2.              创建第二个RAID-0 卷,它包含了RAID-1 卷的第二个子镜像。

3.              使用包含被镜像的文件系统的RAID-0 卷创建一个单向镜像。

4.              因为这是一个root 镜像,所以我们使用metaroot 命令更新系统配置。

5.              因为这是一个root 镜像,所以需要重新启动系统。

6.              把第二个子镜像加入到文件系统的镜像中去。

7.              纪录可替代的启动路径。因为这是一个root 镜像,在一个主要子镜像失败的时候,这个路径可以用来启动系统。

具体实现情景:

这个情景假设root 文件系统存在磁盘的c0t0d0s0slice 上。

1.              通过c0t0d0s0 创建一个名为d11RAID-0 卷。

2.              通过一个备用的磁盘slice c3t3d0s1 创建一个名为d12RAID-0 卷。

3.              使用RAID-0d11d12 创建一个名为d10RAID-1 卷。

创建RAID-0 卷:

使用metainit 命令强行创建一个RAID-0 卷,-f 的强制选项在这里是必须的,因为root 文件系统是不可以卸载的。metainit 命令如下:

# /usr/sbin/metainit -f d11 1 1 c0t0d0s0

d11: Concat/Stripe is setup

注意---- 如果把一个现有的文件系统转换为一个RAID-0 卷,numstripeswidth 项的值必须为1 ,否则数据会丢失。

这个命令强行创建了一个d11 卷,d11 创建了由一个条带组成的串联卷,占有一个slice 的宽度,被保存在/dev/dsk/c0t0d0s0 磁盘slice 上。

注意---- 在这个例子中,root 文件系统保存在/dev/dsk/c0t0d0s0 上。应为root 文件系统保存在上面。必须使用-f 强行创建。

可以使用Solaris Management ConsoleEnhanced Storage Tool 。为root 文件系统创建第二RAID-0 卷,作为第二个子镜像。

以命令行的方式创建第二个卷,通过metainit 命令实现:

# metainit d12 1 1 c3t3d0s1

d12: Concat/Stripe is setup

通过GUI 完成创建的步骤如下:

(1)       点击Volumes 标志。

(2)       在“Action” 菜单中选择“Create Volume ”。

(3)       在“Create Volume Wizard ”窗口回答 提醒信息。每次创建一个新卷的时候,都可以创建一个附加的状态数据库副本。当创建 RAID-0 卷的时候通常不需要创建一个附加的状态数据库。

(4)       在“ Create Volume ”窗口选择“ Don’t Create State Database Replicas ”,继续。每次你创建一个卷的时候,你可以重新定位一个可替换的磁盘配置。

(5)       选择默认的选项 none 。继续

(6)       在“Select Volume Type ”窗口选择串联的RAID-0. 继续

(7)       把卷命名为d12 。继续。

(8)       为新卷选择一个slice 。这个卷属于镜像的第二个子镜像,所以slice 的大小必须大于或等于第一个子镜像的大小。

(9)       点击Add ,选入slice. 继续。

(10)   如果在一个条带组里包含多个slice, 你可以为这些slice 定一个顺序。

但是对于root 镜像来说,你不可以分散到多个slice 上。

(11)   继续到下一页。

(12)   因为没有创建任何热备件,所以在“Use Hot Spare Pool ”里选择“No Hot Spare Pool ”。

(13)   继续到下一页。

(14)   在“Review ”窗口检查所有配置信息和完成工作的所有必须的命令信息。

(15)   点击“Finish

在这个步骤中,创建了两个RAID-0 卷,d11d12d11 包含了root 文件系统。d12 包含了root 文件系统的备份空间。

创建RAID-1 卷:

你可以使用metainit 命令或“Enhanced Storage Tool ”。

使用metainit 命令的格式如下:

metainit mirror -m submirror [ read_options ] [ write_options ] [ pass_num ]

Mirror -m submirror

指定镜像的卷名。 -m 表示配置的是镜像。 Submirror 是用来初始化单向镜像的(一个串联或条带)卷。

Read_options

镜像的可用的读选项有:

1 -g---- 启用几何读取选项,在序列读取的时候速度会很快。

2 -r---- 把所有读操作指向第一个子镜像。只有在操作第一个子镜像的速度优于其他子镜像的时候才用 -r 选项。但是 -r 不可以与 -g 一起使用。

如果没有使用 -g -r 选项,会像洗扑克牌一样的顺序读取子镜像,这样可以平衡对子镜像的访问。

Write_options

可以使用的写选项:

S ---- 执行序列写操作。是平行写入的默认配置选项。

Pass_num

0-9 中间的一个数字,定义一个镜像时,放在最后,它决定了镜像重新同步的顺序。默认值是 1 。越小的数字,表示先被重新同步。相同的数字,表示同时被同步。如果使用 0 ,会跳过重新同步。只有在以只读模式挂接镜像的时候才使用 0 ,或者做为一个交换空间的时候。

 

下面的例子创建了一个 d10 镜像,并加入了一个单向镜像的子镜像 d11

# /usr/sbin/metainit d10 -m d11

d10: Mirror is setup

 

使用“Enhanced Storage Tool:

1.              选中volume 标志

2.              之前配置的RAID-0 卷信息会显示在右侧窗口中,如果没有RAID-0 卷存在,你必须在创建镜像之前新建一些RAID-0 卷。

3.              通过菜单“Action ”选择Create Volume

因为脏区域log 可以用来追溯子镜像中被修改的数据块,并记录在状态数据库副本里。当你创建RAID-1 卷的时候你可以添加一个附加的状态数据库副本。这个步骤不是一定要做的,但是如果你不做,镜像的性能会降低。

4.              由于设备的限制,这里选择“Don’t Create State Database Replicas, 继续。

5.              选择“noneDisk set

6.              选择Mirror(RAID-1).

7.              把镜像命名为d10

8.              选择d11 作为主子镜像。

9.              在“Select Remaining Submirror ”窗口选择第二个子镜像。当你镜像root 文件系统的时候,你必须用命令行挂接第二个子镜像。当你为一个没有任何数据的镜像挂接第二个子镜像时,你可以通过GUI 窗口选择第二个子镜像。

10.       选择镜像的读选项,写选项,和pass_num. 这里使用默认。

11.       检查配置信息。

12.       结束。

13.       现在RAID-1 镜像d10 显示在窗口中,但是还没有完全建好镜像,需要在命令行模式下运行metaroot

 

执行metaroot 命令:

当创建一个已经挂接文件系统的镜像的时候,你必须修改/etc/vfstab 文件,改变slice 的挂接点。把类似于/dev/dsk/c#t#d#s# 改为卷名,例如/dev/md/dsk/d##. 当挂接非root 文件系统的镜像时,你可以使用vi 修改/etc/vfstab 文件。当镜像root 文件系统时,使用metaroot 命令修改/etc/vfstab/etc/system 文件。

命令格式如下:

Metaroot device

Device 指定root 文件系统使用的metadevice 或传统的磁盘slice.

下面的例子显示如何修改/etc/vfstab 文件:

# metaroot d10

# grep md /etc/vfstab

/dev/md/dsk/d10 /dev/md/rdsk/d10 / ufs 1 no –

另外,metaroot 也会同时修改/etc/system 文件以支持逻辑卷。

# tail /etc/system

rootdev:/pseudo/md@0:0,10,blk

在挂接第二个子镜像之前必须重新启动系统,在系统启动之后root 文件系统会使用修改后的metadevice

执行init 6 重启电脑。

# init 6

启动之后察看文件系统信息:

# df -h /

Filesystem size used avail capacity Mounted on

/dev/md/dsk/d10 141M 111M 15M 88% /

 

Metastat 命令显metadevice 的状态,注意这里只有一个子镜像挂接在d10 上。

# metastat

d10: Mirror

Submirror 0: d11

State: Okay

Pass: 1

Read option: roundrobin (default)

Write option: parallel (default)

Size: 307440 blocks (150 MB)

d11: Submirror of d10

State: Okay

Size: 307440 blocks (150 MB)

Stripe 0:

Device Start Block Dbase State Reloc Hot Spare

c0t0d0s0 0 No Okay Yes

在命令行挂接第二个子镜像。

# metattach d10 d12

d10: submirror d12 is attached

注意---- 使用metainit 创建一个单向镜像,并且用metattach 命令挂接第二个子镜像。如果没有使用metattach 命令,那么就不可以实现重新同步的操作,而且数据会崩溃,应为Solaris Volume Manager 会认为两个子镜像是完全一样的,而且可以彼此替换。

Metastat 命令显示镜像同步信息:

# metastat d10

d10: Mirror

Submirror 0: d11

State: Okay

Submirror 1: d12

State: Resyncing

Resync in progress: 83 % done

Pass: 1

Read option: roundrobin (default)

Write option: parallel (default)

Size: 307440 blocks (150 MB)

 

d11: Submirror of d10

State: Okay

Size: 307440 blocks (150 MB)

Stripe 0:

Device Start Block Dbase State Reloc Hot Spare

c0t0d0s0 0 No Okay Yes

 

d12: Submirror of d10

State: Resyncing

Size: 2097360 blocks (1.0 GB)

Stripe 0:

Device Start Block Dbase State Reloc Hot Spare

c3t3d0s1 0 No Okay Yes

 

更改boot-device PROM 变量。

镜像了root 文件系统,可以设置PROMboot-device 可替换的启动路径。使用ls -l 首先确定存在第二个子镜像上的root 文件系统的可替换的启动磁盘slice.

# ls -l /dev/dsk/c3t3d0s1

lrwxrwxrwx 1 root root 57 Oct 25 11:22 /dev/dsk/c3t3d0s1 -

> ../../devices/pci@1f,0/pci@1/pci@1/SUNW,isptwo@4/sd@3,0:b

 

记录/devices 之后的路径: /pci@1f,0/pci@1/pci@1/SUNW,isptwo@4/sd@3,0:b

注意---- 当使用多个磁盘controller 时,/devices 目录下和PROM 中的磁盘路径会变化。这里是采用了PROM 中的路径。

如果在Ultra 5 工作站里,PCI-SCSI controller 返回路径:

/pci@1f,0/pci@1/scsi@4,1/sd@2,0:b

使用show-devs 命令显示/devices 目录,PROM 返回:

/pci@1f,0/pci@1/scsi@4,1/disk

可替换的启动路径必须为:

/pci@1f,0/pci@1/scsi@4,1/disk@2,0:b

如果你没有改写需要改变的部分,当你试图通过可替换的启动磁盘启动机器的时候就会有错误提示:

Can’t open boot device

 

在主子镜像失败的时候,通过另一个子镜像自动启动系统,需要完成如下的工作。

1.              使用 nvalias 命令为第二个子镜像定义 backup_root 磁盘别名:

ok nvalias backup_root /pci@1f,0/pci@1/pci@1/SUNW,isptwo@4/sd@3,0:b

2.              参照主子镜像和次子镜像重新定义boot-device 变量,按照你设想得访问的顺序排列。

ok printenv boot-device

boot-device= disk net

ok setenv boot-device disk backup_root net

boot-device= disk backup_root net

3.              在这种配置下,如果主子镜像失败了,系统会从次子镜像上启动。如果要测试第二个子镜像启动,执行如下命令:

ok boot backup_root

 

卸载root 文件系统镜像

1.              运行metastat 命令,检查子镜像0 处在ok 状态。

# metastat d10

d10: Mirror

Submirror 0: d11

State: Okay

Submirror 1: d12

State: Okay

Pass: 1

Read option: roundrobin (default)

Write option: parallel (default)

Size: 307440 blocks (150 MB)

d11: Submirror of d10

State: Okay

Size: 307440 blocks (150 MB)

Stripe 0:

Device Start Block Dbase State Reloc Hot Spare

c0t0d0s0 0 No Okay Yes

d12: Submirror of d10

State: Okay

Size: 2097360 blocks (1.0 GB)

Stripe 0:

Device Start Block Dbase State Reloc Hot Spare

c3t3d0s1 0 No Okay Yes

Device Relocation Information:

Device Reloc Device ID

c0t0d0 Yes id1,dad@AST38420A=7AZ0VMFG

c3t3d0 Yes id1,sd@SFUJITSU_MAB3045S_SUN4.2G00F52267____

2.              运行metadetach 命令,把d10 改为单向镜像。

# metadetach d10 d12

d10: submirror d12 is detached

3.              应为这是一个root 文件系统镜像,所以使用metaroot 命令改变/etc/vfstab/etc/system 文件。

# metaroot /dev/dsk/c0t0d0s0

# grep c0t0d0s0 /etc/vfstab

/dev/dsk/c0t0d0s0 /dev/rdsk/c0t0d0s0 /  ufs  1  no  -

4.              重新启动系统

# init 6

5.              运行metaclear 命令,清除镜像和子镜像。-r 选项递归的删除指定的metadevice ,热备件池 和相关的命令中指定的文件。

# metaclear -r d10

d10: Mirror is cleared

d11: Concat/Stripe is cleared

# metaclear d12

d12: Concat/Stripe is cleared

恢复boot-device 变量原来的设置。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值