Lab 8 逻辑卷和阵列
时间:2007-02-07 来源:LinuxBoy!
新版本的RedHat系列已经不再使用raidtools相关工具而改用mdadm工具,此实验中磁盘阵列部分仅作为参考练习:
Lab 8 逻辑卷和阵列
目标: 在安装后创建逻辑卷和阵列的技巧
步骤一: 使用LVM创建逻辑卷
1. 使用fdisk在未分区空间创建四个新分区,类型为Linux LVM (0x8e), 尺寸一样,为了加快速度,不要大于1G. 退出时使用w保存更改.不要重启动.
2. 编辑/etc/modules.conf中包含以下行(RHEL 可以不用做以下修改):
alias block-major-58 lvm-mod
alias char-major-109 lvm-mod
使用当前内核创建initrd
mkinintrd –f –v /boot/initrd-$(uname –r).img $(uname –r)
这个命令将使系统在启动时加载lvm-mod模块,启用LVM
3. 重启动系统
4. 用root登录, 运行vgscan初始化LVM配置文件
5. 使用pvcreate将LVM分区初始化为物理卷.假设分区为
/dev/hda9
/dev/hda10
/dev/hda11
/dev/hda12
命令为: pvcreate /dev/hda9 /dev/hda10 /dev/hda11 /dev/hda12
可以使用pddisplay查看分区信息
6. 然后创建卷组test0. 使用默认4MB的扩展尺寸,只包含一个物理卷
vgcreate test0 /dev/hda9
可以使用pddisplay查看信息
7. 创建一个小逻辑卷,不要占用所有空间. 使用vgdisplay的VG size和 PE/size信息,比如创建一个40M的逻辑卷:
lvcreate –L 40M –n data test0
可以使用 lvdisplay /dev/test0/data 确认命令执行了.
8. 在逻辑卷上创建ext3文件系统: mke2fs –j /dev/test0/data
9. 创建/data目录. mount /dev/test0/data /data
10. 复制文件到/data. 可以创建一个大文件: dd if=/dev/zero of=/data/bigfile bs=1024 count=20000
使用df检查/data的磁盘使用情况和剩余空间. 确认能够正常使用.可以编辑/etc/fstab来自动加载/data.重启动测试
步骤二: 使用逻辑卷
1. 首先, 卸载/data. 使用e2fsadm扩展分区尺寸: e2fsadm –L+50M /dev/test0/data
2. 重加载/dev/test0/data到/data, 确认文件. 运行df检查/data的磁盘使用情况和剩余空间.
3. 使用剩余扩展创建第二个逻辑分区. 运行vgdisplay查看PE /size,格式类似于166/644MB,这表示卷组包含166个扩展,664MB剩余空间. 创建一个占用166个扩展逻辑卷/dev/test0/scratch, 命令为:
lvcreate –l 166 –n scratch test0
4. 格式化新卷: mke2fs –j /dev/test0/scratch
5. 把未使用的物理卷加入卷组 vgextend test0 /dev/hda10
6. 如果再次运行vgdisplay, 可以看到增加的扩展.用20MB的扩展定义新逻辑卷.
e2fsadm –L+20M /dev/test0/scratch
使用lvdisplay和vgdisplay确认成功
7. 接下来用/data的只读快照创建新的逻辑卷. 首先用只读选项加载/data
mount –o remount,ro /data
8. 快照不需要和父卷尺寸一致,我们假设不需要保存太多数据,可以设置为5M
lvcreate –s –L 5M –n snap /dev/test0/data
9. 现在重加载/data为读写状态
mount –o remount,rw /data
10. 创建新加载点/snap, 使用 mount /dev/test0/snap /snap 比较/data和/snap,两者内容应该一致
11. 运行命令 for I in$(seq 1 10); do echo $1 > /data/$1; done 将在/data下创建十个文件,名称从1到10. 这个命令不影响/snap, 可以用lvdisplay /dev/test0/snap检查
12. 当快照逻辑卷不能容纳改变的块时,将被LVM自动删除,即使当前在加载状态.(避免这一情况的方法是尺寸和父卷一致,或者及时用lvextend扩展尺寸)可以通过以下方式看到这一现象:
rm /data/bigfile
for i in $(seq 1 10000); do echo $1 > /data/$1; done
13. 在/var/log/messages里可以看到类似信息:
Mar 19 16:30:02 station12 kernel: lvm --giving up to snapshot
/dev/test0/data on /dev/test0/snap: out of space
运行ls /snap. 快照已经不可用了,目录是空的.运行 lvdisplay /dev/test0/snap,和11步的结果比较.
14. 做完快照之后,如果数据已经备份,或者快照已被删除,都需要被卸载,否则会造成轻微的性能下降, 使用 umount /snap; lvremove /dev/test0/snap
在进行阵列试验以前清除LVM卷:
删除所有/etc/fstab中增加的记录
umount /dev/test0/data; umount /dev/test0/scratch
lvremove /dev/test0/data; lvremove /dev/test0/scratch
vgchange –an test0; vgremove test0
步骤三: 软件阵列
1. 在实验中我们将在同一磁盘创建多个分区来实现阵列,但是在实际工作中我们一般使用在不同磁盘上的分区来创建.使用fdisk将Linux LVM(0x8e)分区转换为Linux raid auto(0xfd)分区.保存更改.
2. 重启动系统.
3. 创建/etc/raidtab文件定义四个RAID-5阵列设备.根据以下示例,用实际的分区替换.chunk-size是一个重要的参数,决定了一次向阵列中每个磁盘写入数据的量.RAID-5需要一个校验算法行,一般设为left-symmetric来提高磁盘性能
raiddev /dev/md0
raid-level 5
nr-raid-disks 4
chunk-size 32
persistent-superblock 1
parity-algorithm left-symmetric
device /dev/hda9
raid-disk 0
device /dev/hda10
raid-disk 1
device /dev/hda11
raid-disk 2
device /dev/hda12
raid-disk 3
4. 初始化阵列: mkraid /dev/md0. 如果阵列没有启动,手动启动 raidstart /dev/md0. 此时阵列会立即开始建立,但是已经可用了.可以在另一个虚拟控制台用 watch cat /pro/mdstat 监控建立过程.
5. 使用4k的块的ext3文件系统格式化. Stride选项应设为chunk size和阵列磁盘数的乘积, 可以加快格式化的速度
mke2fs –j –b 4096 –R stride=32 /dev/md0
6. 查看是否能 mount /dev/md0 /data. 即使仍在建立过程也可以加载. 使用df命令查看文件系统尺寸. 如果是四个同尺寸的分区组成的阵列,文件系统尺寸应该为三个分区之和.(其他空间用于储存校验信息)
7. 使用lsraid显示阵列设备的相关信息. Lsraid –A –a /dev/md0
8. 试着在/data创建文件. 可以在/etc/fstab中加入记录用来自动加载.
9. 检查/proc/mdstat, 确认阵列已经建立. 可以看到类似输出:
md0: active raid5 hda12[3] hda11[2] hda10[1] hda9[0]
2328064 blocks level 5, 32k chunk, algorithm 2[4/4] [UUUU]
10. 测试卷的破坏.用以下命令模拟: raidsetfaulty /dev/md0 /dev/hda11
在/var/log/messages中寻找出错信息, 注意/proc/mdstat文件的改变
md0: active raid5 hda12[3] hda11[2] hda10[1] hda9[0]
2328064 blocks level 5, 32k chunk, algorithm 2[4/3] [UUUU]
重启动系统, 查看启动时dmesg和/var/log/messages的出错信息
11. 模拟在重启前更换了损坏的磁盘. 使用命令替换阵列分区:
raidhotadd /dev/md0 /dev/hda11
12. 这时将看到/proc/mdstat显示阵列的重建
进阶实验:在软件阵列上创建LVM
以下实验可选,需要创建一个在两个磁盘上的物理卷建立的RAID1镜像卷基础上的RAID10. 使用同一磁盘的两个分区模拟这一情况.
1. 撤销前面的软件阵列设置: umount /dev/md0, 删除/et/fstab中的对应行.运行 raidstop /dev/md0. 从/etc/raidtab中删除/dev/md0设备.
2. 编辑/etc/raidtab创建两个RAID1镜像/dev/md0和/dev/md1, 分别由两个分区组成.示例如下:
raiddev /dev/md0
raid-level 1
nr-raid-disks 2
chunk-size 32
persistent-superblock 1
device /dev/hda9
raid-disk 0
device /dev/hda10
raid-disk 1
3. 注意: 运行命令时可能需要-f和-R重运行.因为系统会检测到上次创建的相关superblock.
4. 格式化并启动阵列设备: mkraid /dev/md0; mkraid /dev/md1
5. 设置阵列设备为物理卷: pvcreate /dev/md0 /dev/md1
6. 创建卷组: vgcreate test0 /dev/md0 /dev/md1
7. 使用vgdisplay查看有多少扩展可用
8. 设置条带的逻辑卷. 使用-i 指定构成条带逻辑卷的卷组中物理卷的数目. –I 设置条带的尺寸. 当使用-i时作用等同于RAID0阵列的chunk-size.使用 –l指定vgdisplay报告的卷组中逻辑卷可用的扩展.假设有500可用.示例为:
lvcreate –i 2 –I 64 –l 500 –n data test0
9. 使用ext3格式化/dev/test0/data ,作为条带的RAID阵列设置stride选项,
mke2fs –j –b 4096 –R stride=8 /dev/test0/data
10. 在/data加载/dev/md0/data. 把文件复制到/data,使用e2fsadm重设置尺寸.使用raidsetfaulty模拟磁盘损坏.(条带的逻辑卷在创建后可以重定义尺寸,只要不在另一个物理卷上使用这些扩展.)这样将得到RAID的冗余,条带的性能和LVM的灵活性.
Lab 8 逻辑卷和阵列
目标: 在安装后创建逻辑卷和阵列的技巧
步骤一: 使用LVM创建逻辑卷
1. 使用fdisk在未分区空间创建四个新分区,类型为Linux LVM (0x8e), 尺寸一样,为了加快速度,不要大于1G. 退出时使用w保存更改.不要重启动.
2. 编辑/etc/modules.conf中包含以下行(RHEL 可以不用做以下修改):
alias block-major-58 lvm-mod
alias char-major-109 lvm-mod
使用当前内核创建initrd
mkinintrd –f –v /boot/initrd-$(uname –r).img $(uname –r)
这个命令将使系统在启动时加载lvm-mod模块,启用LVM
3. 重启动系统
4. 用root登录, 运行vgscan初始化LVM配置文件
5. 使用pvcreate将LVM分区初始化为物理卷.假设分区为
/dev/hda9
/dev/hda10
/dev/hda11
/dev/hda12
命令为: pvcreate /dev/hda9 /dev/hda10 /dev/hda11 /dev/hda12
可以使用pddisplay查看分区信息
6. 然后创建卷组test0. 使用默认4MB的扩展尺寸,只包含一个物理卷
vgcreate test0 /dev/hda9
可以使用pddisplay查看信息
7. 创建一个小逻辑卷,不要占用所有空间. 使用vgdisplay的VG size和 PE/size信息,比如创建一个40M的逻辑卷:
lvcreate –L 40M –n data test0
可以使用 lvdisplay /dev/test0/data 确认命令执行了.
8. 在逻辑卷上创建ext3文件系统: mke2fs –j /dev/test0/data
9. 创建/data目录. mount /dev/test0/data /data
10. 复制文件到/data. 可以创建一个大文件: dd if=/dev/zero of=/data/bigfile bs=1024 count=20000
使用df检查/data的磁盘使用情况和剩余空间. 确认能够正常使用.可以编辑/etc/fstab来自动加载/data.重启动测试
步骤二: 使用逻辑卷
1. 首先, 卸载/data. 使用e2fsadm扩展分区尺寸: e2fsadm –L+50M /dev/test0/data
2. 重加载/dev/test0/data到/data, 确认文件. 运行df检查/data的磁盘使用情况和剩余空间.
3. 使用剩余扩展创建第二个逻辑分区. 运行vgdisplay查看PE /size,格式类似于166/644MB,这表示卷组包含166个扩展,664MB剩余空间. 创建一个占用166个扩展逻辑卷/dev/test0/scratch, 命令为:
lvcreate –l 166 –n scratch test0
4. 格式化新卷: mke2fs –j /dev/test0/scratch
5. 把未使用的物理卷加入卷组 vgextend test0 /dev/hda10
6. 如果再次运行vgdisplay, 可以看到增加的扩展.用20MB的扩展定义新逻辑卷.
e2fsadm –L+20M /dev/test0/scratch
使用lvdisplay和vgdisplay确认成功
7. 接下来用/data的只读快照创建新的逻辑卷. 首先用只读选项加载/data
mount –o remount,ro /data
8. 快照不需要和父卷尺寸一致,我们假设不需要保存太多数据,可以设置为5M
lvcreate –s –L 5M –n snap /dev/test0/data
9. 现在重加载/data为读写状态
mount –o remount,rw /data
10. 创建新加载点/snap, 使用 mount /dev/test0/snap /snap 比较/data和/snap,两者内容应该一致
11. 运行命令 for I in$(seq 1 10); do echo $1 > /data/$1; done 将在/data下创建十个文件,名称从1到10. 这个命令不影响/snap, 可以用lvdisplay /dev/test0/snap检查
12. 当快照逻辑卷不能容纳改变的块时,将被LVM自动删除,即使当前在加载状态.(避免这一情况的方法是尺寸和父卷一致,或者及时用lvextend扩展尺寸)可以通过以下方式看到这一现象:
rm /data/bigfile
for i in $(seq 1 10000); do echo $1 > /data/$1; done
13. 在/var/log/messages里可以看到类似信息:
Mar 19 16:30:02 station12 kernel: lvm --giving up to snapshot
/dev/test0/data on /dev/test0/snap: out of space
运行ls /snap. 快照已经不可用了,目录是空的.运行 lvdisplay /dev/test0/snap,和11步的结果比较.
14. 做完快照之后,如果数据已经备份,或者快照已被删除,都需要被卸载,否则会造成轻微的性能下降, 使用 umount /snap; lvremove /dev/test0/snap
在进行阵列试验以前清除LVM卷:
删除所有/etc/fstab中增加的记录
umount /dev/test0/data; umount /dev/test0/scratch
lvremove /dev/test0/data; lvremove /dev/test0/scratch
vgchange –an test0; vgremove test0
步骤三: 软件阵列
1. 在实验中我们将在同一磁盘创建多个分区来实现阵列,但是在实际工作中我们一般使用在不同磁盘上的分区来创建.使用fdisk将Linux LVM(0x8e)分区转换为Linux raid auto(0xfd)分区.保存更改.
2. 重启动系统.
3. 创建/etc/raidtab文件定义四个RAID-5阵列设备.根据以下示例,用实际的分区替换.chunk-size是一个重要的参数,决定了一次向阵列中每个磁盘写入数据的量.RAID-5需要一个校验算法行,一般设为left-symmetric来提高磁盘性能
raiddev /dev/md0
raid-level 5
nr-raid-disks 4
chunk-size 32
persistent-superblock 1
parity-algorithm left-symmetric
device /dev/hda9
raid-disk 0
device /dev/hda10
raid-disk 1
device /dev/hda11
raid-disk 2
device /dev/hda12
raid-disk 3
4. 初始化阵列: mkraid /dev/md0. 如果阵列没有启动,手动启动 raidstart /dev/md0. 此时阵列会立即开始建立,但是已经可用了.可以在另一个虚拟控制台用 watch cat /pro/mdstat 监控建立过程.
5. 使用4k的块的ext3文件系统格式化. Stride选项应设为chunk size和阵列磁盘数的乘积, 可以加快格式化的速度
mke2fs –j –b 4096 –R stride=32 /dev/md0
6. 查看是否能 mount /dev/md0 /data. 即使仍在建立过程也可以加载. 使用df命令查看文件系统尺寸. 如果是四个同尺寸的分区组成的阵列,文件系统尺寸应该为三个分区之和.(其他空间用于储存校验信息)
7. 使用lsraid显示阵列设备的相关信息. Lsraid –A –a /dev/md0
8. 试着在/data创建文件. 可以在/etc/fstab中加入记录用来自动加载.
9. 检查/proc/mdstat, 确认阵列已经建立. 可以看到类似输出:
md0: active raid5 hda12[3] hda11[2] hda10[1] hda9[0]
2328064 blocks level 5, 32k chunk, algorithm 2[4/4] [UUUU]
10. 测试卷的破坏.用以下命令模拟: raidsetfaulty /dev/md0 /dev/hda11
在/var/log/messages中寻找出错信息, 注意/proc/mdstat文件的改变
md0: active raid5 hda12[3] hda11[2] hda10[1] hda9[0]
2328064 blocks level 5, 32k chunk, algorithm 2[4/3] [UUUU]
重启动系统, 查看启动时dmesg和/var/log/messages的出错信息
11. 模拟在重启前更换了损坏的磁盘. 使用命令替换阵列分区:
raidhotadd /dev/md0 /dev/hda11
12. 这时将看到/proc/mdstat显示阵列的重建
进阶实验:在软件阵列上创建LVM
以下实验可选,需要创建一个在两个磁盘上的物理卷建立的RAID1镜像卷基础上的RAID10. 使用同一磁盘的两个分区模拟这一情况.
1. 撤销前面的软件阵列设置: umount /dev/md0, 删除/et/fstab中的对应行.运行 raidstop /dev/md0. 从/etc/raidtab中删除/dev/md0设备.
2. 编辑/etc/raidtab创建两个RAID1镜像/dev/md0和/dev/md1, 分别由两个分区组成.示例如下:
raiddev /dev/md0
raid-level 1
nr-raid-disks 2
chunk-size 32
persistent-superblock 1
device /dev/hda9
raid-disk 0
device /dev/hda10
raid-disk 1
3. 注意: 运行命令时可能需要-f和-R重运行.因为系统会检测到上次创建的相关superblock.
4. 格式化并启动阵列设备: mkraid /dev/md0; mkraid /dev/md1
5. 设置阵列设备为物理卷: pvcreate /dev/md0 /dev/md1
6. 创建卷组: vgcreate test0 /dev/md0 /dev/md1
7. 使用vgdisplay查看有多少扩展可用
8. 设置条带的逻辑卷. 使用-i 指定构成条带逻辑卷的卷组中物理卷的数目. –I 设置条带的尺寸. 当使用-i时作用等同于RAID0阵列的chunk-size.使用 –l指定vgdisplay报告的卷组中逻辑卷可用的扩展.假设有500可用.示例为:
lvcreate –i 2 –I 64 –l 500 –n data test0
9. 使用ext3格式化/dev/test0/data ,作为条带的RAID阵列设置stride选项,
mke2fs –j –b 4096 –R stride=8 /dev/test0/data
10. 在/data加载/dev/md0/data. 把文件复制到/data,使用e2fsadm重设置尺寸.使用raidsetfaulty模拟磁盘损坏.(条带的逻辑卷在创建后可以重定义尺寸,只要不在另一个物理卷上使用这些扩展.)这样将得到RAID的冗余,条带的性能和LVM的灵活性.
相关阅读 更多 +