web-dev-qa-db-ja.com

Debian8で再起動するとZFSプールが消える

ZFSを使い始めて、基本を理解しましたが、ZFSの実行を維持するのに問題があります。

プールが作成され、マウントが作成され、データを保存してディスクアクティビティを確認できます...状況は良好です。ただし、再起動後、zpool listは「使用可能なプールがありません」と報告します。

CentOSで、zfsの起動スクリプトが修正されたことについて説明している記事をいくつか見つけましたが、これまでのところ、Debianでは見つかりませんでした。

私はDebianバックポートzfs-dkmsパッケージを使用しています。このパッケージには、libzfs2linuxlibzpool2linuxbfs-zed、およびzfsutils-linuxが含まれています。また、initではなくSysVsystemdモードで実行しています。

/dev/disk/by-idと標準の/dev/sdxデバイスを使用してプールを再作成してみました。 /etc/default/zfsを編集して設定してみました(一度にすべてではありません):

ZFS_MOUNT='yes'
ZPOOL_IMPORT_ALL_VISIBLE='yes'
ZPOOL_IMPORT_PATH="/dev/disk/by-vdev:/dev/disk/by-id"
ZPOOL_IMPORT_PATH="/dev"
ZFS_INITRD_POST_MODPROBE_SLEEP='5'

プール構成名が/etc/zfs/zpool.cacheに表示されます。 zpool import <pool-name>を使用して手動ですべてを正常に再インポートでき、すべてのデータがそこにあります。

これは起動時のタイミングの問題ですか?考えられるアイデアが不足しているので、ご意見をいただければ幸いです。

3
Peter B

昨日の夕方、ここで謎を解くメーリングリストの投稿に出くわしました。これは、zfs_autoimport_disableがデフォルトで1/trueに設定されてコンパイルされたことを示しています。したがって、/etc/default/zfsで何を構成するかは問題ではなく、zfsモジュールがロードされたときにプールがインポートされることはありません。

したがって、私にとっての修正は、/etc/modprobe.d/構成ファイル(好きなように呼んでください)を追加し、options zfs zfs_autoimport_disable=0を定義することでした。これで、プールがインポートされ、zfsファイルシステムをzfsまたはレガシーモードでマウントできます。

私はこの決定を理解していませんが、今ではすべてが期待どおりに機能しています...

3
Peter B

最初に/etc/default/zfsをバックアップしてから、それを削除します。

legacyアプローチを採用することをお勧めします。これにより、自動マウントzfs機能が削除され、マウント情報が/etc/fstabに依存します。また、最も痛みの少ない設定として、常に/dev/disk/by-idを使用することをお勧めします。

設定(プール/データセット)がわからないので、例を作成します。

  1. まず、必要なデータセットをリストします。zfs list必要なデータセットを取得します。 storagepool/backup
  2. マウントされている場合は、storagepool/backupzfsをアンマウントします。 (mount | grep zfsまたはzfs mountで確認できます)
  3. マウントポイントをzfs get mountpointでリストします。
NAME                    PROPERTY    VALUE                   SOURCE
storagepool/backup      mountpoint  /storagepool/backup     default
  1. マウントポイントを変更するzfs set mountpoint=legacy storagepool/backup

  2. 次に、Sudoまたはrootを介して/etc/fstabを編集する必要があります。2行目を入力します(最初の行は詳細を説明するためにあります)

    <device alias dataset>   <mountpoint>   <filesystem type>  <options> <dump> <fsckorder>
    storagepool/backup       /mnt/backup     zfs               defaults   0      0

詳細説明:

  • 最初のフィールド(storagepool/backup)通常は、説明する物理デバイス/リモートファイルシステム(この場合はプール/データセット)(注:ありませんzfsデータセットの先頭のバックスラッシュ( '/')!!(多くの問題を引き起こしました))
  • 2番目のフィールド(/ mnt/backup)は、マウントポイントを指定します。
    ファイルシステムがマウントされます。
  • 3番目のフィールド(zfs)は、デバイス上のファイルシステムのタイプです。
    最初のフィールド。
  • 4番目のフィールド(noauto、suid、ro、user)は、ファイルシステムをマウントするときにマウントが使用するオプションの(デフォルトの)リストです。
  • 5番目のフィールド(0)は、ファイルシステムをバックアップする必要があるかどうかを決定します。ゼロの場合、dumpはそのファイルシステムを無視します。
  • 6番目のフィールド(0)は、ファイルシステムをチェックする順序を決定するためにfsck(ファイルシステムチェックユーティリティ)によって使用されます。

defaultオプションの意味:rw, suid, dev, exec, auto, nouser, and async SSDを使用している可能性が低い場合は、noatimeオプションの後にdefaultsを使用することをお勧めします。

これで、再起動すると、/etc/fstabファイルに従ってzfsファイルシステムがマウントされます。

重要な注意:zfsレガシーをマウントする場合は、mount -t zfs <dataset> <mountpoint>の代わりにzfs mountを使用する必要があります。

1
tukan

@ Peter-Bあなたのソリューションは、再起動時にzpoolがインポートに失敗するという私の問題を解決しました。どうもありがとう。 modprobe conf構文に慣れていない人のための簡単な説明:オプションは1行である必要があります。

options zfs zfs_autoimport_disable=0

0
A. Bee