我有一个具有两个设备的镜像池( sda, sdb
) 在我的德班。
现在我插入了两个额外的设备(sdc, sdd
), 所以,我可以可用空间加倍在/mnt/data/
目录中。
是由刚刚完成的吗sudo zpool add backup-pool mirror sdc sdd
?
我有点害怕所以我想确认一下。抱歉这个菜鸟问题。
以下是我的泳池的详细信息:
须藤 zfs 列表
NAME USED AVAIL REFER MOUNTPOINT
backup-pool 1.47T 1.17T 96K /backup-pool
backup-pool/data 1.47T 1.17T 1.47T /mnt/data
sudo zpool 列表
NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
backup-pool 2.72T 1.47T 1.25T - - 11% 53% 1.00x ONLINE -
须藤 fdisk -l
Disk /dev/sdc: 2.7 TiB, 3000592982016 bytes, 5860533168 sectors
Disk model: WDC WD30EFAX-68J
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk /dev/sdd: 2.7 TiB, 3000592982016 bytes, 5860533168 sectors
Disk model: WDC WD30EFAX-68J
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk /dev/sdb: 2.7 TiB, 3000592982016 bytes, 5860533168 sectors
Disk model: WDC WD30EFAX-68J
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: ABB57994-974B-734A-A2A9-2BA616368A52
Device Start End Sectors Size Type
/dev/sdb1 2048 5860515839 5860513792 2.7T Solaris /usr & Apple ZFS
/dev/sdb9 5860515840 5860532223 16384 8M Solaris reserved 1
Disk /dev/sda: 2.7 TiB, 3000592982016 bytes, 5860533168 sectors
Disk model: WDC WD30EFAX-68J
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: DCDDA5ED-CB54-C042-9AF6-076F07F44E96
Device Start End Sectors Size Type
/dev/sda1 2048 5860515839 5860513792 2.7T Solaris /usr & Apple ZFS
/dev/sda9 5860515840 5860532223 16384 8M Solaris reserved 1
谢谢!
答案1
简短回答:
是由刚刚完成的吗
sudo zpool add backup-pool mirror sdc sdd
?
是的。
长答案:
我有点害怕所以我想确认一下。
使用非关键设备(例如小型虚拟内存磁盘或在本例中为文件支持的虚拟磁盘)进行测试通常比人们想象的要简单。
这是在 FreeBSD 上进行的,但 Linux 也有工具可以做同样的事情。
我将创建四个每个 1G 的文件,并将每个文件用作文件支持的虚拟磁盘:
# for i in $(jot 4 0)
> do
> truncate -s1G md$i
> mdconfig -f md$i
> done
我现在可以开车/dev/md0
过去/dev/md3
玩。我将通过镜像创建您拥有的原始单 VDEV 池/dev/md0
:/dev/md1
# zpool create tank mirror md0 md1
# zpool status tank
pool: tank
state: ONLINE
config:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
md0 ONLINE 0 0 0
md1 ONLINE 0 0 0
errors: No known data errors
错误的方法:
如果您尝试将下一个磁盘添加md2
到池中,zpool
则会警告您正在降级池的冗余:
# zpool add tank md2
invalid vdev specification
use '-f' to override the following errors:
mismatched replication level: pool uses mirror and new vdev is disk
事实上,如果你强制执行此操作,并同样强制添加md3
你会得到:
# zpool add -f tank md2
# zpool status tank
pool: tank
state: ONLINE
config:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
md0 ONLINE 0 0 0
md1 ONLINE 0 0 0
md2 ONLINE 0 0 0
errors: No known data errors
# zpool add -f tank md3
# zpool status tank
pool: tank
state: ONLINE
config:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
md0 ONLINE 0 0 0
md1 ONLINE 0 0 0
md2 ONLINE 0 0 0
md3 ONLINE 0 0 0
errors: No known data errors
请注意,设备md2
和md3
没有冗余。您的池容易遭受以下三种故障中的任何一种:1) 如果镜像的两半都发生故障; 2)如果磁盘md2
出现故障;或 3) 如果磁盘md3
出现故障。这三种事件中的任何一种都会使您的泳池无法使用。
更好的方法:
我上面的例子只是为了展示当你以错误的方式做时会发生什么。更好的方法,实际上我相信您正在寻找的方法,是将两个新驱动器添加为第二个镜像,与第一个镜像连接。
为了改进冗余,请告知zpool
您要向现有池添加镜像:
# zpool status tank
pool: tank
state: ONLINE
config:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
md0 ONLINE 0 0 0
md1 ONLINE 0 0 0
errors: No known data errors
# zpool add tank mirror md2 md3
# zpool status tank
pool: tank
state: ONLINE
config:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
md0 ONLINE 0 0 0
md1 ONLINE 0 0 0
mirror-1 ONLINE 0 0 0
md2 ONLINE 0 0 0
md3 ONLINE 0 0 0
errors: No known data errors