~ubuntu-branches/debian/sid/lvm2/sid

« back to all changes in this revision

Viewing changes to test/shell/lvcreate-raid.sh

  • Committer: Package Import Robot
  • Author(s): Bastian Blank
  • Date: 2014-08-19 15:37:06 UTC
  • mfrom: (1.1.18)
  • Revision ID: package-import@ubuntu.com-20140819153706-i1gaio8lg534dara
Tags: 2.02.109-1
New upstream version.

Show diffs side-by-side

added added

removed removed

Lines of Context:
9
9
# along with this program; if not, write to the Free Software Foundation,
10
10
# Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
11
11
 
12
 
. lib/test
 
12
. lib/inittest
13
13
 
14
14
lv_devices() {
15
 
        local local_vg=$1
16
 
        local local_lv=$2
17
 
        local count=$3
18
 
 
19
 
        [ $count == `lvs --noheadings -o devices $local_vg/$local_lv | sed s/,/' '/g | wc -w` ]
 
15
        test $3 -eq $(get lv_devices $1/$2 | wc -w)
20
16
}
21
17
 
22
18
########################################################
23
19
# MAIN
24
20
########################################################
25
 
aux target_at_least dm-raid 1 1 0 || skip
 
21
aux have_raid 1 3 0 || skip
26
22
 
27
23
aux prepare_pvs 6 20  # 6 devices for RAID10 (2-mirror,3-stripe) test
28
24
vgcreate -s 512k $vg $(cat DEVICES)
47
43
 
48
44
# Create RAID1 (explicit 3-way) - Set min/max recovery rate
49
45
lvcreate --type raid1 -m 2 -l 2 \
50
 
        --minrecoveryrate 50 --maxrecoveryrate 100 \
 
46
        --minrecoveryrate 50 --maxrecoveryrate 1M \
51
47
        -n $lv1 $vg
52
48
check lv_field $vg/$lv1 raid_min_recovery_rate 50
53
 
check lv_field $vg/$lv1 raid_max_recovery_rate 100
 
49
check lv_field $vg/$lv1 raid_max_recovery_rate 1024
54
50
aux wait_for_sync $vg $lv1
55
51
lvremove -ff $vg
56
52
 
70
66
        raid6 raid6_zr raid6_nr raid6_nc; do
71
67
 
72
68
        lvcreate --type $i -l 3 -i 3 \
73
 
                --minrecoveryrate 50 --maxrecoveryrate 100 \
 
69
                --minrecoveryrate 50 --maxrecoveryrate 1M \
74
70
                -n $lv1 $vg
75
71
        check lv_field $vg/$lv1 raid_min_recovery_rate 50
76
 
        check lv_field $vg/$lv1 raid_max_recovery_rate 100
 
72
        check lv_field $vg/$lv1 raid_max_recovery_rate 1024
77
73
        aux wait_for_sync $vg $lv1
78
74
        lvremove -ff $vg
79
75
done
83
79
# 6 PVs with 18.5m in each PV.
84
80
# 1 metadata LV = 1 extent   = .5m
85
81
# 1 image = 36+37+37 extents = 55.00m = lv_size
86
 
lvcreate --type raid1 -m 1 -l 100%FREE -n raid1 $vg
 
82
lvcreate --type raid1 -m 1 -l 100%FREE -an -Zn -n raid1 $vg
87
83
check lv_field $vg/raid1 size "55.00m"
88
84
lvremove -ff $vg
89
85
 
90
86
# 1 metadata LV = 1 extent
91
87
# 1 image = 36 extents
92
88
# 5 images = 180 extents = 90.00m = lv_size
93
 
lvcreate --type raid5 -i 5 -l 100%FREE -n raid5 $vg
 
89
lvcreate --type raid5 -i 5 -l 100%FREE -an -Zn -n raid5 $vg
94
90
should check lv_field $vg/raid5 size "90.00m"
95
91
#FIXME: Currently allocates incorrectly at 87.50m
96
92
lvremove -ff $vg
97
93
 
98
94
# 1 image = 36+37 extents
99
95
# 2 images = 146 extents = 73.00m = lv_size
100
 
lvcreate --type raid5 -i 2 -l 100%FREE -n raid5 $vg
 
96
lvcreate --type raid5 -i 2 -l 100%FREE -an -Zn -n raid5 $vg
101
97
check lv_field $vg/raid5 size "73.00m"
102
98
lvremove -ff $vg
103
99
 
104
100
# 1 image = 36 extents
105
101
# 4 images = 144 extents = 72.00m = lv_size
106
 
lvcreate --type raid6 -i 4 -l 100%FREE -n raid6 $vg
 
102
lvcreate --type raid6 -i 4 -l 100%FREE -an -Zn -n raid6 $vg
107
103
should check lv_field $vg/raid6 size "72.00m"
108
104
#FIXME: Currnently allocates incorrectly at 70.00m
109
105
lvremove -ff $vg
110
106
 
111
 
# Eat 18 of 37 extents from dev1, leaving 19
112
 
lvcreate -l 18 -n lv $vg "$dev1"
 
107
###
 
108
# For following tests eat 18 of 37 extents from dev1, leaving 19
 
109
lvcreate -l 18 -an -Zn -n eat_space $vg "$dev1"
 
110
EAT_SIZE=$(get lv_field $vg/eat_space size)
 
111
 
113
112
# Using 100% free should take the rest of dev1 and equal from dev2
114
113
# 1 meta takes 1 extent
115
114
# 1 image = 18 extents = 9.00m = lv_size
116
 
lvcreate --type raid1 -m 1 -l 100%FREE -n raid1 $vg "$dev1" "$dev2"
 
115
lvcreate --type raid1 -m 1 -l 100%FREE -an -Zn -n raid1 $vg "$dev1" "$dev2"
117
116
check lv_field $vg/raid1 size "9.00m"
118
117
# Ensure image size is the same as the RAID1 size
119
118
check lv_field $vg/raid1 size $(get lv_field $vg/raid1_rimage_0 size -a)
120
119
# Amount remaining in dev2 should equal the amount taken by 'lv' in dev1
121
 
check pv_field "$dev2" pv_free $(get lv_field $vg/lv size)
122
 
lvremove -ff $vg
 
120
check pv_field "$dev2" pv_free "$EAT_SIZE"
 
121
lvremove -ff $vg/raid1
123
122
 
124
 
# Eat 18 of 37 extents from dev1, leaving 19
125
 
lvcreate -l 18 -n lv $vg "$dev1"
126
123
# Using 100% free should take the rest of dev1 and equal amount from the rest
127
124
# 1 meta takes 1 extent
128
125
# 1 image = 18 extents = 9.00m
129
126
# 5 images = 90 extents = 45.00m = lv_size
130
 
lvcreate --type raid5 -i 5 -l 100%FREE -n raid5 $vg
 
127
lvcreate --type raid5 -i 5 -l 100%FREE -an -Zn -n raid5 $vg
131
128
check lv_field $vg/raid5 size "45.00m"
132
129
# Amount remaining in dev6 should equal the amount taken by 'lv' in dev1
133
 
check pv_field "$dev6" pv_free `lvs --noheadings -o size $vg/lv`
134
 
lvremove -ff $vg
 
130
check pv_field "$dev6" pv_free "$EAT_SIZE"
 
131
lvremove -ff $vg/raid5
135
132
 
136
 
# Eat 18 of 37 extents from dev1, leaving 19
137
 
lvcreate -l 18 -n lv $vg "$dev1"
138
133
# Using 100% free should take the rest of dev1, an equal amount
139
134
# from 2 more devs, and all extents from 3 additional devs
140
135
# 1 meta takes 1 extent
141
136
# 1 image = 18+37 extents
142
137
# 2 images = 110 extents = 55.00m = lv_size
143
 
lvcreate --type raid5 -i 2 -l 100%FREE -n raid5 $vg
 
138
lvcreate --type raid5 -i 2 -l 100%FREE -an -Zn -n raid5 $vg
144
139
check lv_field $vg/raid5 size "55.00m"
145
 
lvremove -ff $vg
 
140
lvremove -ff $vg/raid5
146
141
 
147
142
# Let's do some stripe tests too
148
 
# Eat 18 of 37 extents from dev1, leaving 19
149
 
lvcreate -l 18 -n lv $vg "$dev1"
150
143
# Using 100% free should take the rest of dev1 and an equal amount from rest
151
144
# 1 image = 19 extents
152
145
# 6 images = 114 extents = 57.00m = lv_size
153
 
lvcreate -i 6 -l 100%FREE -n stripe $vg
 
146
lvcreate -i 6 -l 100%FREE -an -Zn -n stripe $vg
154
147
check lv_field $vg/stripe size "57.00m"
155
 
lvremove -ff $vg
 
148
lvremove -ff $vg/stripe
156
149
 
157
 
# Eat 18 of 37 extents from dev1, leaving 19
158
 
lvcreate -l 18 -n lv $vg "$dev1"
159
150
# Using 100% free should take the rest of dev1, an equal amount from
160
151
#  one more dev, and all of the remaining 4
161
152
# 1 image = 19+37+37 extents
162
153
# 2 images = 186 extents = 93.00m = lv_size
163
 
lvcreate -i 2 -l 100%FREE -n stripe $vg
 
154
lvcreate -i 2 -l 100%FREE -an -Zn -n stripe $vg
164
155
check lv_field $vg/stripe size "93.00m"
 
156
 
165
157
lvremove -ff $vg
 
158
# end of use of '$vg/eat_space'
 
159
###
166
160
 
167
161
# Create RAID (implicit stripe count based on PV count)
168
162
#######################################################
173
167
not lvcreate --type raid6 -l3 $vg "$dev1" "$dev2" "$dev3" "$dev4"
174
168
 
175
169
# Implicit count comes from #PVs given (always 2 for mirror though)
176
 
lvcreate --type raid1 -l1 -n raid1 $vg "$dev1" "$dev2"
 
170
lvcreate --type raid1 -l1 -an -Zn -n raid1 $vg "$dev1" "$dev2"
177
171
lv_devices $vg raid1 2
178
 
lvcreate --type raid5 -l2 -n raid5 $vg "$dev1" "$dev2" "$dev3"
 
172
lvcreate --type raid5 -l2 -an -Zn -n raid5 $vg "$dev1" "$dev2" "$dev3"
179
173
lv_devices $vg raid5 3
180
 
lvcreate --type raid6 -l3 -n raid6 $vg "$dev1" "$dev2" "$dev3" "$dev4" "$dev5"
 
174
lvcreate --type raid6 -l3 -an -Zn -n raid6 $vg "$dev1" "$dev2" "$dev3" "$dev4" "$dev5"
181
175
lv_devices $vg raid6 5
182
176
lvremove -ff $vg
183
177
 
184
178
# Implicit count comes from total #PVs in VG (always 2 for mirror though)
185
 
lvcreate --type raid1 -l1 -n raid1 $vg
 
179
lvcreate --type raid1 -l1 -an -Zn -n raid1 $vg
186
180
lv_devices $vg raid1 2
187
 
lvcreate --type raid5 -l2 -n raid5 $vg
 
181
lvcreate --type raid5 -l2 -an -Zn -n raid5 $vg
188
182
lv_devices $vg raid5 6
189
 
lvcreate --type raid6 -l3 -n raid6 $vg
 
183
lvcreate --type raid6 -l3 -an -Zn -n raid6 $vg
190
184
lv_devices $vg raid6 6
191
185
 
192
186
vgremove -ff $vg