アップグレード後ubuntu 13.10
サーバーを使用してSudo apt-get upgrade
と再起動すると、zpoolが表示されません。
messier@ANDERSON:~$ Sudo zpool status
no pools available
messier@ANDERSON:~$ Sudo zpool import
zpool: ../../lib/libzfs/libzfs_import.c:356: Assertion `nvlist_lookup_uint64(zhp->zpool_config, ZPOOL_CONFIG_POOL_GUID, &theguid) == 0' failed.
messier@ANDERSON:~$
Linux github上のzfsを調べたところ、 CentOSの修正 が見つかりました。これは、古いカーネルモジュールを削除してから、ソフトウェアを再インストールして新しいカーネルモジュールを取得することです。
$ find /lib/modules/$(uname -r)/extra -name "splat.ko" -or -name "zcommon.ko" -or -name "zpios.ko" -or -name "spl.ko" -or -name "zavl.ko" -or -name "zfs.ko" -or -name "znvpair.ko" -or -name "zunicode.ko" | xargs rm -f
$ find /lib/modules/$(uname -r)/weak-updates -name "splat.ko" -or -name "zcommon.ko" -or -name "zpios.ko" -or -name "spl.ko" -or -name "zavl.ko" -or -name "zfs.ko" -or -name "znvpair.ko" -or -name "zunicode.ko" | xargs rm -f
$ yum reinstall zfs-release
$ yum reinstall $(rpm -qa | egrep "zfs|spl")
これは修正されていると人々は言っています。この修正をubuntuサーバーで実行する方法がわかりません。お手伝いありがとう!
最終編集:zfs更新のバグについてこのページにアクセスした場合。最も簡単な解決策は、Scott Simonが言ったようなものです。
# apt-get update
# apt-get dist-upgrade
# reboot
_$ Sudo find /lib/modules/$(uname -r)/updates -name "splat.ko" -or -name "zcommon.ko" -or -name "zpios.ko" -or -name "spl.ko" -or -name "zavl.ko" -or -name "zfs.ko" -or -name "znvpair.ko" -or -name "zunicode.ko" | xargs rm -f
$ Sudo apt-get install --reinstall ubuntu-zfs
$ Sudo apt-get install --reinstall $(dpkg-query --show --showformat='${binary:Package}\n' | egrep 'spl|zfs')
_
UbuntuはすべてのdkmsをCentOSのように/lib/modules/$(uname -r)/updates
および/lib/modules/$(uname -r)/extra
ではなくfind /lib/modules/$(uname -r)/weak-updates
に保持します。
_yum resinstall
_は_apt-get install --reinstall
_と同等です。
Ubuntuのzfsメタパッケージは、CentOSの_ubuntu-zfs
_ではなく_zfs-release
_です。
_rpm -qa
_は_dpkg-query --show --showformat='${binary:Package}\n'
_と同等です
_apt-get
_は既にそれを処理する可能性があるので、findコマンドを実際に実行する必要があるかどうかもわかりませんが、実行してもプロセスは中断されません。
dpkg
についての知識や経験がある人なら、わずかに効率的なコマンドを記述できるかもしれませんが、ほとんどの目的にはこれで十分だと思います。
公式バグページ には、UbuntuおよびDebianユーザー向けのこの修正が含まれています。
# apt-get update
# apt-get dist-upgrade
# reboot
(このカーネルpve-headers-2.6.32-26-pveを使用して)proxmox 3.2にdebian-zfsをインストールしました。これは、アップグレード後に修正した方法です。
aptitude purge dkms debian-zfs spl-dkms zfs-dkms
すべてのプロンプトに対して「はい」を選択して、すべてを削除しました。その後、dkmsの残りがないかどうかを確認しました。以下のコマンドでは、空のディレクトリが表示されます。
ls /lib/modules/2.6.32-26-pve/updates/dkms/
そこ(上記のディレクトリ)に何かがある場合は、すべて削除する必要があります(他のカスタムカーネルモジュールがない場合)。
次に、それは次のように簡単でした:
apt-get install debian-zfs
次に、私のプールをインポートします(私のプールはタンクと呼ばれます)。
zpool import tank
すべてのドラマが発生する前にzfsが適切にエクスポートされなかったため、zfsは混乱しました。
cannot import 'tank': pool may be in use on another system
それは問題ではありません、私はこれでもう一度試しました:
zpool import -f tank
上記は機能しました、そして私はこのコマンドで私のプールを見ることができました:
zpool status
root@proxmox-01:~# zpool status
pool: tank
state: ONLINE
scan: scrub repaired 0 in 0h8m with 0 errors on Tue Jul 8 20:39:13 2014
config:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
raidz2-0 ONLINE 0 0 0
scsi-SATA_WDC_WD1001FALS-_WD-WMATV4198253 ONLINE 0 0 0
scsi-SATA_WDC_WD1002FAEX-_WD-WCAW30398837 ONLINE 0 0 0
scsi-SATA_WDC_WD1002FAEX-_WD-WCAW30404054 ONLINE 0 0 0
scsi-SATA_WDC_WD1002FAEX-_WD-WCAW30406039 ONLINE 0 0 0
errors: No known data errors
嬉しかったです。しかし、proxmoxはもう少し難しいものでした。 proxmoxに追加した「ストレージ」のディレクトリ構造が自動的に作成されるため、proxmoxのマウントポイントをいじる必要がありました。
まず、/tank
を使用して、du -hs /tank
が素敵なzfsプールではなかったかどうかを確認します。私のプールには、12KBをはるかに超える多くのものが含まれています。
Zfsプールをエクスポート(切断)しますzpool export tank
EMPTY /tank
ディレクトリをrm -R /tank
で削除しました(再確認してください!!)
次に、プール(接続)zpool import tank
をインポートすると、zfsストレージが機能し、proxmoxからアクセスできるようになります。
これが私が最初にzfsをproxmoxで動作させる方法です:
http://www.anotherlan.com/proxmox-zfs-on-linux-local-storage
ユーザー84104のソリューションは「機能しました」。最初の行をやりました。その後、残りはうまくいきませんでした。 Sudo apt-get remove ubuntu-zfs dkms
を試してからSudo apt-get install ubuntu-zfs dkms
を試したところ、同じエラーが発生しました。 Dkmsは、zfs/0.6.3およびspl/0.6.3が3.11.0-23-genericカーネルに付属するものと異なることを認識しませんでした。そこで、Sudo dkms remove zfs/0.6.3 --all
とSudo dkms remove zfs/0.6.3 --all
を使用して、両方のモジュールをSudo dkms install zfs/0.6.3 --force
とSudo dkms install spl/0.6.3 --force
を使用して強制的にインストールしました。
基本的には、ソリューションはdkmsを使用してモジュールを削除してから、0.6.3のインストールを強制的に戻すことです。