LinuxでZFSを使用してZFSプールが拡張されないのはなぜですか?


10

Linux上のカーネル2.6.32-431.11.2.el6.x86_64の下に、単一のvdevを持つZFS zpoolがあります。vdevはSANデバイスです。SANのサイズを拡張しました。zpoolがにautoexpand設定されているonにもかかわらず、マシンを再起動し、プールをエクスポート/インポートし、を使用した後でもzpool online -e、プールを拡張できませんでした。vdevがfdisk215GiBから250 GiBに増加したことを示しているので、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でホストされており、libvirt(SCSIではない)ドライブを使用しています。

プールとデバイスの詳細を取得します。

# 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 vdb2回実行する必要がある場合があります。


1
あなたの解決策は私のものと同じだったようです?つまり、zpool online -e pool vdbトリックを実行するコマンドです。私は現在、多数のlibvirtサーバーでZFS-on-Linuxを使用していますが、これは(partprobeなしで)機能します
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を使用していない、カーネルに)Linux上でZFSを使用して、私のために展開するのzpoolを取得するために必要とされました


それは意味がありません。ZFSメーリングリストは、プール拡張を実行する前にカーネルモジュールをリロードする必要があることを示しています。
ewwhite 2015

まあ、3リブートし、複数の輸出と輸入のいくつかの組み合わせ、zpool online -eそしてzpool set autoexpand=off私のためにそれをやった@ewwhite ...私は私の端末で利用可能な完全な履歴を持っています。その時何が問題だったのかわからない。
Josh


@ewwhiteに感謝します。新しいバージョンを使用していません。このバージョンは少なくとも15か月前のものです。具体的にバージョンを見つける方法がわかりません。
ジョシュ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.