]> git.proxmox.com Git - mirror_zfs-debian.git/blame - scripts/zpool-config/zpool-raid10.sh
Imported Upstream version 0.6.4.2
[mirror_zfs-debian.git] / scripts / zpool-config / zpool-raid10.sh
CommitLineData
cb39a6c6
BB
1#!/bin/bash
2#
3# Zpool Raid-10 Configuration
4#
dbf763b3
BB
5# This script is used to test with the /dev/disk/by-vdev/[A-Z][1-n] devices.
6# It assumes that you have already populated /dev/disk/by-vdev/ by creating
7# an /etc/zfs/vdev_id.conf file based on your system design.
cb39a6c6
BB
8#
9# You can then use either the zpool-create.sh or the zpios.sh test script to
10# test various Raid-10 configurations by adjusting the following tunables.
11# For example if you wanted to create and test a single 4-disk Raid-10
12# configuration using disks [A-D]1 with dedicated ZIL and L2ARC devices
13# you could run the following.
14#
15# ZIL="log A2" L2ARC="cache B2" RANKS=1 CHANNELS=4 \
16# zpool-create.sh -c zpool-raid10
17#
18# zpool status tank
19# pool: tank
20# state: ONLINE
21# scan: none requested
22# config:
23#
24# NAME STATE READ WRITE CKSUM
25# tank ONLINE 0 0 0
26# mirror-0 ONLINE 0 0 0
27# A1 ONLINE 0 0 0
28# B1 ONLINE 0 0 0
29# mirror-1 ONLINE 0 0 0
30# C1 ONLINE 0 0 0
31# D1 ONLINE 0 0 0
32# logs
33# A2 ONLINE 0 0 0
34# cache
35# B2 ONLINE 0 0 0
36#
37# errors: No known data errors
38#
39
40# Number of interior vdevs to create using the following rank ids.
41RANKS=${RANKS:-1}
42RANK_LIST=( 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 )
43
44# Number of devices per vdev using the following channel ids.
45CHANNELS=${CHANNELS:-8}
46CHANNEL_LIST=( A B C D E F G H I J K L M N O P Q R S T U V W X Y Z )
47
48# Create a ZIL vdev as follows.
49ZIL=${ZIL:-}
50
51# Create an L2ARC vdev as follows.
52L2ARC=${L2ARC:-}
53
54
55raid10_setup() {
56 local RANKS=$1
57 local CHANNELS=$2
58 local IDX=0
59
60 RAID10S=()
61 for (( i=0, l=0 ; i<${RANKS}; i++ )); do
62 RANK=${RANK_LIST[$i]}
63
64 for (( j=0, k=1; j<${CHANNELS}; j+=2,k+=2,l++ )); do
65 DISK1="${CHANNEL_LIST[$j]}${RANK}"
66 DISK2="${CHANNEL_LIST[$k]}${RANK}"
67 RAID10S[$l]="mirror ${DISK1} ${DISK2}"
68 done
69 done
70
71 return 0
72}
73
74zpool_create() {
75 raid10_setup ${RANKS} ${CHANNELS}
76
77 ZPOOL_DEVICES="${RAID10S[*]} ${ZIL} ${L2ARC}"
ea04106b
AX
78 msg ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} ${ZPOOL_DEVICES}
79 ${ZPOOL} create ${ZPOOL_FLAGS} ${ZPOOL_NAME} ${ZPOOL_DEVICES} || exit 1
cb39a6c6
BB
80}
81
82zpool_destroy() {
83 msg ${ZPOOL} destroy ${ZPOOL_NAME}
84 ${ZPOOL} destroy ${ZPOOL_NAME}
85}