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.