假设我有一个由三个磁盘(或vdevs)创build的raidz。
$ fallocate -l 64m /tmp/one $ fallocate -l 64m /tmp/two $ fallocate -l 64m /tmp/three $ sudo zpool create test raidz /tmp/one /tmp/two /tmp/three $ sudo zpool status test pool: test state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM test ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 /tmp/one ONLINE 0 0 0 /tmp/two ONLINE 0 0 0 /tmp/three ONLINE 0 0 0 errors: No known data errors
为了增加游泳池的大小,我们可以说我有一套5个其他的磁盘 – 我想把它们分成两组:
$ fallocate -l 64m four $ fallocate -l 64m five $ fallocate -l 64m six $ fallocate -l 64m seven $ fallocate -l 64m eight $ sudo zpool add test raidz /tmp/four /tmp/five /tmp/six /tmp/seven /tmp/eight invalid vdev specification use '-f' to override the following errors: mismatched replication level: pool uses 3-way raidz and new vdev uses 5-way raidz
嗯…所以我可以强制使用-f :
$ sudo zpool add -f test raidz /tmp/four /tmp/five /tmp/six /tmp/seven /tmp/eight $ sudo zpool status test pool: test state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM test ONLINE 0 0 0 raidz1-0 ONLINE 0 0 0 /tmp/one ONLINE 0 0 0 /tmp/two ONLINE 0 0 0 /tmp/three ONLINE 0 0 0 raidz1-1 ONLINE 0 0 0 /tmp/four ONLINE 0 0 0 /tmp/five ONLINE 0 0 0 /tmp/six ONLINE 0 0 0 /tmp/seven ONLINE 0 0 0 /tmp/eight ONLINE 0 0 0
一切看上去都很好
为什么我需要强制呢? 我在生产中会遇到什么问题?
zfs不希望你这样做的原因是,它将无法使用更大的vdef上的所有空间。
另外,通过组合这两个vdev冗余在池中的所有数据上将不会是相同的,这在任何情况下都是一个坏主意。
在另一个层面上,绝不要使用像存储这样的东西积极劝阻的configuration。 由于“坏的副作用”可能只会在你生产之后才会显现出来,那么你将得到的所有帮助就是。 发送/接收您的数据到正确configuration的池。