-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathfs-common.sh
92 lines (77 loc) · 1.71 KB
/
fs-common.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#!/bin/bash
fs_options() {
fstype=${fs%%:*}
nr_devices=$(echo $devices | wc -w)
case $fs in
xfs)
mntopt="-o allocsize=1g,nobarrier,inode64"
[[ $RAID_LEVEL =~ raid ]] && {
mntopt+=",logbsize=262144"
mkfsopt="-f -l size=131072b -d agcount=$nr_devices"
}
fs_events='xfs:*,workqueue:*'
;;
ext*)
[[ $fs =~ :wb ]] && mntopt="-o data=writeback"
[[ $fs =~ :jsize=8 ]] && mkfsopt="-J size=8"
[[ $fstype = ext3 ]] && fs_events='ext3:*,jbd:*'
[[ $fstype = ext4 ]] && fs_events='ext4:*,jbd2:*'
;;
btrfs)
fs_events='btrfs:*'
;;
nfs)
mntopt="-o v3,nolock"
bdevs=$NFS_DEVICE
;;
esac
}
is_btrfs_raid_levels() {
[[ $fstype = 'btrfs' && $RAID_LEVEL =~ raid(0|1|10) ]]
}
destroy_devices() {
for dev in $devices
do
dd if=/dev/zero of=$dev bs=4k count=100
[[ $kopt = deadline || $kopt = noop ]] && {
disk=$(echo $dev | cut -f3 -d/ | tr -d [0-9])
echo $kopt > /sys/block/$disk/queue/scheduler
}
done
}
make_md() {
[[ $fstype = 'nfs' ]] && return
[[ $RAID_LEVEL =~ raid ]] || {
bdevs="$devices"
return
}
is_btrfs_raid_levels && {
bdevs=$(echo $devices | cut -f1 -d' ')
return
}
bdevs=/dev/md0
mdadm --stop $bdevs
echo y | mdadm --create $bdevs --chunk=${RAID_CHUNK:-1024} --level=$RAID_LEVEL --raid-devices=$nr_devices --force --assume-clean $devices
}
make_fs() {
[[ $fstype = 'nfs' ]] && return
is_btrfs_raid_levels && {
mkfs.btrfs --data $RAID_LEVEL $mkfsopt $devices
return
}
for dev in $bdevs
do
echo mkfs -t $fstype $mkfsopt $dev
mkfs -t $fstype $mkfsopt $dev &
done
wait || exit
}
mount_fs() {
for dev in $bdevs
do
mnt=$MNT/$(basename $dev)
mkdir -p $mnt
echo mount -t $fstype $mntopt $dev $mnt
mount -t $fstype $mntopt $dev $mnt || exit
done
}