zpool use vdevs distribute

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      -      -      -         -
时间: 2024-09-30 07:01:23

zpool use vdevs distribute的相关文章

dmsetup remove dm device solve : zpool error:one or more vdevs refer to the same device

这是一个OCZ的SSD, 一般用一半以内的容量是性能比较好, 所以480G的SSD, 我分了220G给ZFS缓存. 但是注意对其的问题. # fdisk -c -u /dev/sda 开始位置2048 新增块数2048*1024*220-1=461373439 因为原来配置的块未对其, 所以准备重新分一下 :  查看cache设备 : # zpool status pool: zp1 state: ONLINE scan: none requested config: NAME STATE RE

zpool use 4KiB sector

默认情况下, 创建top-level dev如果不指定扇区大小, 那么使用vdevs中最小的扇区大小作为zpool的扇区大小. 但是某些设备虽然是4K的扇区, 但是可能内核读到的扇区大小可能是512字节. 这样的话, 将对影响有比较大的影响, 所以在这种情况下, 创建zpool时可以指定扇区的大小. 添加top-devel时也可以指定扇区的大小, 尽量使用扇区大小一致的设备. zpool创建完后不允许修改扇区的大小. [root@db-172-16-3-150 man8]# zpool set

zpool add top-level vdev; attach, detach, offline, online, replace vdev;

zpool允许我们动态的添加vdev, 这个我们已经在上一篇BLOG中介绍过. http://blog.163.com/digoal@126/blog/static/163877040201442731413803/ 如添加spare [root@db-172-16-3-150 ssd1]# zpool add zpp spare /ssd1/zfs.6 [root@db-172-16-3-150 ssd1]# zpool status zpp pool: zpp state: ONLINE s

zpool performance optimal property vdev's ashift or sector at create time

只能在创建zpool时指定的唯一参数ashift, 用于指定zpool的扇区大小(2^ashift bytes). 比较优化的选择是大于等于底层设备的sector. 查看块设备的sector. 例如 fdisk -l /dev/sdb 看到如下一行. Sector size (logical/physical): 512 bytes / 512 bytes 但是有些系统可能将4K的sector认为是512字节的, 所以如果要强制使用4K sector的话, 建议在创建zpool时指定ashift

replace offline or FAULTED device in ZPOOL

今早发现一台zfsonlinux主机的zpool其中一块硬盘写错误次数过多变成FAULTED状态了, raidz1的话变成了DEGRADED状态. 但是hot spare还是AVAIL的状态, 也就是说hot spare没有自动用起来. (后来发现确实如此, hot spare不会自动使用, 需要手工干预) 当前的zpool状态, sdl已经faulted了. [root@db-192-168-173-219 ~]# zpool status zp1 pool: zp1 state: DEGRA

hive中order by,sort by, distribute by, cluster by作用以及用法

1. order by     Hive中的order by跟传统的sql语言中的order by作用是一样的,会对查询的结果做一次全局排序,所以说,只有hive的sql中制定了order by所有的数据都会到同一个reducer进行处理(不管有多少map,也不管文件有多少的block只会启动一个reducer).但是对于大量数据这 将会消耗很长的时间去执行.     这里跟传统的sql还有一点区别:如果指定了hive.mapred.mode=strict(默认值是nonstrict),这时就必

How to distribute a database among microservices

在为相对复杂的企业域构建微服务时,我们需要找到在这个域中不同责任的边界.在每个边界中,我们会创建领域模型,这个模型是针对业务责任所设计的,并反映了这种业务责任.针对每个边界的数据模型会由同一个边界中的领域模型来驱动.采用DDD的方式我们能够找到这些边界,并会为每个边界创建一个 有界上下文(bounded context) ,每个上下文将会成为一个微服务. http://www.tuicool.com/articles/UNRZ3mm [编者的话]如何在微服务之间共享使用数据库?本文介绍了一个该领

use export and import move ZPOOL's underdev from one machine to another OR upgrade a zfs version OR recover destroyed pools

前面我们介绍了zfs的pool, 类似LVM. 由多个块设备组成. 如果这些块设备要从一个机器转移到另一台机器的话, 怎么实现呢? zfs通过export和import来实现底层块设备的转移. 在已有POOL的主机上, 先将会读写POOL或dataset的正在运行的程序停止掉, 然后执行export. 执行export会把cache flush到底层的块设备, 同时卸载dataset和pool. import时, 可能需要指定块设备的目录, 但是并不需要指定顺序. 例如 : [root@spar

ZPOOL health check and repair use scrub

zpool健康检查(scrub)主要用于通过checksum来检查zpool数据块的数据是否正常, 如果vdev是mirror或raidz的, 可以自动从其他设备来修复异常的数据块. 由于健康检查是IO开销很大的动作, 所以建议在不繁忙的时候操作(scrub只检查分配出去的数据块, 不会检查空闲的数据块, 所以只和使用率有关, 对于一个很大的zpool, 如果使用率很低的话, scrub也是很快完成的). 用法 :  # zpool scrub zp1 查看zpool状态, 如下, 正在做scr