Linux에서 ZFS를 사용하여 ZFS 풀이 확장되지 않는 이유는 무엇입니까?


10

리눅스에서 커널 v. 2.6.32-431.11.2.el6.x86_64 아래에 ZFS zpool이 있습니다. vdev는 SAN 장치입니다. SAN의 크기를 확장했으며 zpool이으로 autoexpand설정 되었음에도 불구하고 on머신을 재부팅하고 풀을 내보내거나 가져온 후에도 zpool online -e풀을 확장 할 수 없었습니다. vdev가 fdisk215GiB에서 250GiB로 증가 했으므로 vdev가 더 큽니다 . 다음은 내가 한 일의 샘플입니다.

[root@timestandstill ~]# zpool list
NAME          SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
dfbackup      214G   207G  7.49G    96%  1.00x  ONLINE  -
[root@timestandstill ~]# zpool import -d /dev/disk/by-id/
   pool: dfbackup
     id: 12129781223864362535
  state: ONLINE
 action: The pool can be imported using its name or numeric identifier.
 config:

    dfbackup             ONLINE
      virtio-sbs-XLPH83  ONLINE
[root@timestandstill ~]# zpool import -d /dev/disk/by-id/ dfbackup
[root@timestandstill ~]# zpool list
NAME          SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
dfbackup      214G   207G  7.49G    96%  1.00x  ONLINE  -
venuebackup   248G   244G  3.87G    98%  1.00x  ONLINE  -
[root@timestandstill ~]# zpool get autoexpand dfbackup
NAME      PROPERTY    VALUE   SOURCE
dfbackup  autoexpand  on      local
[root@timestandstill ~]# zpool set autoexpand=off dfbackup
[root@timestandstill ~]# zpool set autoexpand=on dfbackup
[root@timestandstill ~]# zpool list
NAME          SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
dfbackup      214G   207G  7.49G    96%  1.00x  ONLINE  -
venuebackup   248G   244G  3.87G    98%  1.00x  ONLINE  -
[root@timestandstill ~]# zpool status -v dfbackup
  pool: dfbackup
 state: ONLINE
  scan: none requested
config:

    NAME                 STATE     READ WRITE CKSUM
    dfbackup             ONLINE       0     0     0
      virtio-sbs-XLPH83  ONLINE       0     0     0

errors: No known data errors
[root@timestandstill ~]# fdisk /dev/disk/by-id/virtio-sbs-XLPH83

WARNING: GPT (GUID Partition Table) detected on '/dev/disk/by-id/virtio-sbs-XLPH83'! The util fdisk doesn't support GPT. Use GNU Parted.


WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): p

Disk /dev/disk/by-id/virtio-sbs-XLPH83: 268.4 GB, 268435456000 bytes
256 heads, 63 sectors/track, 32507 cylinders
Units = cylinders of 16128 * 512 = 8257536 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

                             Device Boot      Start         End      Blocks   Id  System
/dev/disk/by-id/virtio-sbs-XLPH83-part1               1       27957   225443839+  ee  GPT

Command (m for help): q
[root@timestandstill ~]# zpool online -e dfbackup /dev/disk/by-id/virtio-sbs-XLPH83
[root@timestandstill ~]# zpool list
NAME          SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
dfbackup      214G   207G  7.49G    96%  1.00x  ONLINE  -
venuebackup   248G   244G  3.87G    98%  1.00x  ONLINE  -
[root@timestandstill ~]# zpool status -v dfbackup
  pool: dfbackup
 state: ONLINE
  scan: none requested
config:

    NAME                 STATE     READ WRITE CKSUM
    dfbackup             ONLINE       0     0     0
      virtio-sbs-XLPH83  ONLINE       0     0     0

errors: No known data errors

이 zpool을 어떻게 확장 할 수 있습니까?

답변:


10

Ubuntu 16.04에서 ZFS를 실행 중이며 많은 시행 착오를 거친 후 재부팅하지 않고 디스크 및 풀 크기를 확장하는 데 효과적이었습니다. 내 시스템은 Profitbricks의 클라우드에서 호스팅되며 SCSI가 아닌 libvirt 드라이브를 사용합니다.

풀 및 장치 세부 정보 가져 오기 :

# zpool status -v
   ...
    NAME        STATE     READ WRITE CKSUM
    pool        ONLINE       0     0     0
      vdb       ONLINE       0     0     0

# zpool list
NAME   SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
pool  39.8G  27.1G  12.7G         -    49%    68%  1.00x  ONLINE  -

자동 확장 활성화 :

# zpool set autoexpand=on pool

이제 Profitbricks 제어판에 로그인하여 디스크 크기를 40GB에서 50GB로 늘리십시오.

디스크 크기 변경을 시스템에 알리고 풀을 확장하십시오.

# partprobe
Warning: Not all of the space available to /dev/vdb appears to be used,
you can fix the GPT to use all of the space (an extra 10485760 blocks) or 
continue with the current setting?

# zpool online -e pool vdb

# partprobe

# zpool list
NAME   SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
pool  49.8G  27.1G  21.7G         -    40%    55%  1.00x  ONLINE  -

왜 그런지 잘 모르겠지만 변경 사항을 적용하려면 때때로 실행 partprobe및 / 또는 zpool online -e pool vdb두 번 실행해야합니다 .


1
귀하의 솔루션이 내 것과 같은 것 같습니까? 즉, zpool online -e pool vdb트릭을 수행하는 명령입니다. 저는 현재 여러 libvirt 서버에서 ZFS-on-Linux를 사용하고 있으며 (probe없이) 저에게 효과적입니다
Josh

또한 변경 사항을 적용하기 위해 다시 부팅해야했고 partprobe(이전과 후에 실행 zpool online) 다시 부팅 할 필요가 없다는 것을 알았습니다 .
lfjeff

7

나는 읽을 FreeBSD의 포럼을 사용하도록 제안 포스트 zpool online -e <pool> <vdev>(처음으로 vdev 오프라인 할 필요없이)를

이것이 궁극적으로 해결책이되었지만 ZFS 자동 확장을 먼저 비활성화해야했습니다 .

[root@timestandstill ~]# zpool list
NAME          SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
dfbackup      214G   207G  7.49G    96%  1.00x  ONLINE  -
[root@timestandstill ~]# zpool get autoexpand
NAME         PROPERTY    VALUE   SOURCE
dfbackup     autoexpand  on      local
[root@timestandstill ~]# zpool set autoexpand=off dfbackup
[root@timestandstill ~]# zpool online -e dfbackup /dev/disk/by-id/virtio-sbs-XLPH83
[root@timestandstill ~]# zpool list
NAME          SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
dfbackup      249G   207G  42.5G    82%  1.00x  ONLINE  -

사용하여 zpool set autoexpand=off다음 zpool online -e(FUSE를 사용하지 않는 커널) 리눅스에서 ZFS를 사용하여, 나를 위해 확장은 zpool을 얻기 위해 요구되었다


말이되지 않습니다. ZFS 메일 링리스트는 풀 확장을 실행하기 전에 커널 모듈을 다시로드해야 함을 나타냅니다.
ewwhite

음, 약 3 재부팅, 다수의 수출과 수입의 조합, zpool online -e그리고 zpool set autoexpand=off나를 @ewwhite 위해 그것을했다 ... 내 단말기에서 사용할 수있는 전체 역사를 가지고 있습니다. 그때 문제가 무엇인지 확실하지 않습니다.
Josh


감사합니다 @ewwhite. 최신 버전을 사용하고 있지 않습니다.이 버전은 15 개월 이상입니다. 버전을 찾는 방법이 확실하지 않습니다.
Josh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.