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
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)
22
18
########################################################
24
20
########################################################
25
aux target_at_least dm-raid 1 1 0 || skip
21
aux have_raid 1 3 0 || skip
27
23
aux prepare_pvs 6 20 # 6 devices for RAID10 (2-mirror,3-stripe) test
28
24
vgcreate -s 512k $vg $(cat DEVICES)
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"
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
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"
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
111
# Eat 18 of 37 extents from dev1, leaving 19
112
lvcreate -l 18 -n lv $vg "$dev1"
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)
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)
120
check pv_field "$dev2" pv_free "$EAT_SIZE"
121
lvremove -ff $vg/raid1
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`
130
check pv_field "$dev6" pv_free "$EAT_SIZE"
131
lvremove -ff $vg/raid5
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"
140
lvremove -ff $vg/raid5
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"
148
lvremove -ff $vg/stripe
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"
158
# end of use of '$vg/eat_space'
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"
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
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