zpool use vdevs distribute
1 minute read
背景
zpool并不限制根vdev的数量, 并且也不限制他们的属性(如mirror or raidz), 但是属性不同会有提示.
例如
[root@db-172-16-3-150 ~]# zpool create zpp mirror /ssd1/zfs.1 /ssd1/zfs.2
[root@db-172-16-3-150 ~]# zpool status zpp
pool: zpp
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
zpp ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
/ssd1/zfs.1 ONLINE 0 0 0
/ssd1/zfs.2 ONLINE 0 0 0
继续添加同属性的vdev很顺利.
[root@db-172-16-3-150 ~]# zpool add zpp mirror /ssd1/zfs.3 /ssd1/zfs.4
[root@db-172-16-3-150 ~]# zpool status zpp
pool: zpp
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
zpp ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
/ssd1/zfs.1 ONLINE 0 0 0
/ssd1/zfs.2 ONLINE 0 0 0
mirror-1 ONLINE 0 0 0
/ssd1/zfs.3 ONLINE 0 0 0
/ssd1/zfs.4 ONLINE 0 0 0
这两个vdev mirror-0和mirror-1对这个zpool来说, 是分布使用的.
[root@db-172-16-3-150 ~]# zfs create zpp/test
[root@db-172-16-3-150 ~]# cd /zpp/test
[root@db-172-16-3-150 test]# dd if=/dev/zero of=./test bs=1k count=10230
10230+0 records in
10230+0 records out
10475520 bytes (10 MB) copied, 0.233064 s, 44.9 MB/s
[root@db-172-16-3-150 test]# ll
total 7812
-rw-r--r-- 1 root root 10475520 May 27 15:15 test
[root@db-172-16-3-150 test]# zpool list -v zpp
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
zpp 191M 10.4M 181M 5% 1.00x ONLINE -
mirror 95.5M 5.41M 90.1M -
/ssd1/zfs.1 - - - -
/ssd1/zfs.2 - - - -
mirror 95.5M 4.98M 90.5M -
/ssd1/zfs.3 - - - -
/ssd1/zfs.4 - - - -
如果添加的vdev和原来的vdev属性不一致, 那么会提示有问题, 现实中当然也是不建议这么来使用的.
使用-f强制添加.
[root@db-172-16-3-150 test]# zpool add zpp raidz1 /ssd1/zfs.5 /ssd1/zfs.6 /ssd1/zfs.7
invalid vdev specification
use '-f' to override the following errors:
mismatched replication level: pool uses mirror and new vdev is raidz
[root@db-172-16-3-150 test]# zpool add -f zpp raidz1 /ssd1/zfs.5 /ssd1/zfs.6 /ssd1/zfs.7
已经存在的数据不会重分布, 但是新增的数据会重分布到新的vdev上面
[root@db-172-16-3-150 test]# cp test ./test.1
[root@db-172-16-3-150 test]# zpool list -v zpp
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
zpp 477M 22.0M 455M 4% 1.00x ONLINE -
mirror 95.5M 8.66M 86.8M -
/ssd1/zfs.1 - - - -
/ssd1/zfs.2 - - - -
mirror 95.5M 8.24M 87.3M -
/ssd1/zfs.3 - - - -
/ssd1/zfs.4 - - - -
raidz1 286M 5.15M 281M -
/ssd1/zfs.5 - - - -
/ssd1/zfs.6 - - - -
/ssd1/zfs.7 - - - -