ZFSデータセットが再起動時に消える


13


CentOS 7にZFS(0.6.5)をインストールし、zpoolも作成しました。再起動時にデータセットが消えることを除いて、すべて正常に動作します。
さまざまなオンラインリソースやブログを利用してこの問題をデバッグしようと試みましたが、期待した結果が得られませんでした。
再起動後、zfs listコマンドを発行すると「データセットがありません」と表示されzpool list「プールがありません」と表示されます。 多くのオンライン調査を行った後、zpool import -c cachefileを使用して手動でキャッシュファイルをインポートすることで機能させることができますが、それでも、再起動前にzpool set cachefile = / etc / zfs / zpool.cache Poolを実行して、再起動後に後でインポートする必要がありました。

これは何systemctl status zfs-import-cache のように見えます

zfs-import-cache.service - Import ZFS pools by cache file Loaded: loaded (/usr/lib/systemd/system/zfs-import-cache.service; static) Active: inactive (dead)

cat /etc/sysconfig/zfs

# ZoL userland configuration.

# Run `zfs mount -a` during system start?
ZFS_MOUNT='yes'

# Run `zfs unmount -a` during system stop?
ZFS_UNMOUNT='yes'

# Run `zfs share -a` during system start?
# nb: The shareiscsi, sharenfs, and sharesmb dataset properties.
ZFS_SHARE='yes'

# Run `zfs unshare -a` during system stop?
ZFS_UNSHARE='yes'

# Specify specific path(s) to look for device nodes and/or links for the
# pool import(s). See zpool(8) for more information about this variable.
# It supersedes the old USE_DISK_BY_ID which indicated that it would only
# try '/dev/disk/by-id'.
# The old variable will still work in the code, but is deprecated.
#ZPOOL_IMPORT_PATH="/dev/disk/by-vdev:/dev/disk/by-id"

# Should the datasets be mounted verbosely?
# A mount counter will be used when mounting if set to 'yes'.
VERBOSE_MOUNT='no'

# Should we allow overlay mounts?
# This is standard in Linux, but not ZFS which comes from Solaris where this
# is not allowed).
DO_OVERLAY_MOUNTS='no'

# Any additional option to the 'zfs mount' command line?
# Include '-o' for each option wanted.
MOUNT_EXTRA_OPTIONS=""

# Build kernel modules with the --enable-debug switch?
# Only applicable for Debian GNU/Linux {dkms,initramfs}.
ZFS_DKMS_ENABLE_DEBUG='no'

# Build kernel modules with the --enable-debug-dmu-tx switch?
# Only applicable for Debian GNU/Linux {dkms,initramfs}.
ZFS_DKMS_ENABLE_DEBUG_DMU_TX='no'

# Keep debugging symbols in kernel modules?
# Only applicable for Debian GNU/Linux {dkms,initramfs}.
ZFS_DKMS_DISABLE_STRIP='no'

# Wait for this many seconds in the initrd pre_mountroot?
# This delays startup and should be '0' on most systems.
# Only applicable for Debian GNU/Linux {dkms,initramfs}.
ZFS_INITRD_PRE_MOUNTROOT_SLEEP='0'

# Wait for this many seconds in the initrd mountroot?
# This delays startup and should be '0' on most systems. This might help on
# systems which have their ZFS root on a USB disk that takes just a little
# longer to be available
# Only applicable for Debian GNU/Linux {dkms,initramfs}.
ZFS_INITRD_POST_MODPROBE_SLEEP='0'

# List of additional datasets to mount after the root dataset is mounted?
#
# The init script will use the mountpoint specified in the 'mountpoint'
# property value in the dataset to determine where it should be mounted.
#
# This is a space separated list, and will be mounted in the order specified,
# so if one filesystem depends on a previous mountpoint, make sure to put
# them in the right order.
#
# It is not necessary to add filesystems below the root fs here. It is
# taken care of by the initrd script automatically. These are only for
# additional filesystems needed. Such as /opt, /usr/local which is not
# located under the root fs.
# Example: If root FS is 'rpool/ROOT/rootfs', this would make sense.
#ZFS_INITRD_ADDITIONAL_DATASETS="rpool/ROOT/usr rpool/ROOT/var"

# List of pools that should NOT be imported at boot?
# This is a space separated list.
#ZFS_POOL_EXCEPTIONS="test2"

# Optional arguments for the ZFS Event Daemon (ZED).
# See zed(8) for more information on available options.
#ZED_ARGS="-M"

これが既知の問題であるかどうかはわかりませんが、そうである場合、この問題の回避策はありますか?おそらく、再起動後、できればキャッシュファイルのオーバーヘッドなしでデータセットを保持する簡単な方法です。


zpool status -vとzpool importは何を言っていますか?
ostendali

こんにちは、 zpool status -v zpool status -v no pools availableそして、zpool import私にこれを与えますpool: zfsPool id: 10064980395446559551 state: ONLINE action: The pool can be imported using its name or numeric identifier. config: zfsPool ONLINE sda4 ONLINE
Vishnu Nair

zfs importは、set cachefileコマンドを使用して最初にキャッシュファイルを設定することにより、それを機能させる方法です
Vishnu Nair

/etc/init/zpool-import.confを見逃した場合、そのファイルのコンテンツも投稿できますか?
オステンダリ2015年

1
ZFSターゲットは有効ですか?systemctl status zfs.target
マイケル・ハンプトン

回答:


6

zfsサービス(ターゲット)が有効になっていることを確認してください。これが、ブート/シャットダウン時のプールのインポート/エクスポートを処理するものです。

zfs.target loaded active active ZFS startup target

あなたはこれに苦労する必要はありません。機会があれば、スタートアップサービスが最近のいくつかのリリースで改善されていることを知っているので、zfsディストリビューションで更新を実行します。

[root@zfs2 ~]# rpm -qi zfs
Name        : zfs
Version     : 0.6.5.2
Release     : 1.el7.centos

こんにちは、私は0.6.5.3もテストしました。これはたまたま私が信じている最新のリリースですが、それでもこの問題に直面modprobe zfsしました。ところで、ターゲットが有効になっていません。上記のコメントで出力を確認してください(マイケルに返信)。設定方法を教えてください。ありがとう。
Vishnu Nair

あなたがする必要があるのはおそらく次のようなものです:systemctl enable zfs.target
ewwhite '28年

5

わかりました。プールはそこにあります。つまり、zfs.cacheに問題があります。永続的ではないため、再起動時に設定が失われます。私が行うことをお勧めするのは実行することです:

      zpool import zfsPool 
      zpool list 

そして、それが利用可能かどうかを確認します。サーバーを再起動し、戻ってくるかどうかを確認します。戻ってこない場合は、同じ手順を実行して実行します。

      zpool scrub

すべてがプールなどで問題ないことを確認するだけです。

Plsは以下のコンテンツも投稿します。

      /etc/default/zfs.conf
      /etc/init/zpool-import.conf

または、この問題の回避策を探している場合は、もちろん次のように設定できます。

の値を1から0に変更します。

    /etc/init/zpool-import.conf

以下を/etc/rc.localに追加してください:

    zfs mount -a

それはトリックを行います。


zfs import zfsPool予想通りにプールをインポートして実行した後、再起動して実行zfs listしましたno datasets。ステップを繰り返して実行しzfs scrubましたが、出力はありませんでしたが、今度は再起動しましたが、データセットは保持されていません
Vishnu Nair

私のリクエストが表示されない場合は、「/ etc / default / zfsの内容も投稿できますか?」と再度投稿します。
ostendali 2015年

4

再起動後にzfsが消える問題もありました。CentOS 7.3とZFS 0.6.5.9を実行すると、次の再起動までしか再インポートできません(zpool import zfspool)。

これは私のために働いたコマンドです(再起動を通してそれを持続させるために):

systemctl preset zfs-import-cache zfs-import-scan zfs-mount zfs-share zfs-zed zfs.target

(これは https://github.com/zfsonlinux/zfs/wiki/RHEL-%26-CentOSにあります


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.