私の使用法についてFreeNASに満足していなかったという理由もあり、SmartOSを試すつもりでした。 SmartOSゾーンの古いキャッシュドライブに新しいzpoolを作成しました。それはすべてただの裏話でした。重要なのは、Ubuntu15.04で古いFreeNASプールをインポートできないということです。
pool: pool5
id: 14850262647910895720
state: UNAVAIL
status: The pool was last accessed by another system.
action: The pool cannot be imported due to damaged devices or data.
see: http://zfsonlinux.org/msg/ZFS-8000-EY
config:
pool5 UNAVAIL missing device
raidz2-0 ONLINE
ata-WL3000GSA6472_WOL240282406 ONLINE
ata-WL3000GSA6472_WOL240282471 ONLINE
ata-WL3000GSA6472_WOL240282504 ONLINE
ata-WL3000GSA6472_WOL240282506 ONLINE
ata-WL3000GSA6472_WOL240282472 ONLINE
cache
ata-ST31500341AS_6VS073SA
pool: zones
id: 513536768382594111
state: ONLINE
status: The pool was last accessed by another system.
action: The pool can be imported using its name or numeric identifier and
the '-f' flag.
see: http://zfsonlinux.org/msg/ZFS-8000-EY
config:
zones ONLINE
ata-ST31500341AS_6VS073SA ONLINE
それ以来、私はゾーンを破壊しました。
ほとんどの力のオプションと組み合わせを試しましたが、同様の結果が得られました。
$ Sudo zpool import pool5
cannot import 'pool5': pool may be in use from other system, it was last accessed by freenas.local (hostid: 0x8120288a) on Tue Oct 27 16:24:56 2015
$ Sudo zpool import -f pool5
cannot import 'pool5': one or more devices is currently unavailable
$ Sudo zpool import -Ff pool5
cannot import 'pool5': one or more devices is currently unavailable
$ Sudo zpool import -fm pool5
cannot import 'pool5': one or more devices is currently unavailable
$ Sudo zpool import -FfmX pool5
cannot import 'pool5': one or more devices is currently unavailable
$ Sudo zpool import -fD pool5
cannot import 'pool5': no such pool available
$ Sudo zpool import -nF pool5
cannot import 'pool5': pool may be in use from other system, it was last accessed by freenas.local (hostid: 0x8120288a) on Tue Oct 27 16:24:56 2015
use '-f' to import anyway
$ Sudo zpool import -m pool5
cannot import 'pool5': pool may be in use from other system, it was last accessed by freenas.local (hostid: 0x8120288a) on Tue Oct 27 16:24:56 2015
use '-f' to import anyway
$ Sudo zdb -e pool5
言う:
Configuration for import:
vdev_children: 2
version: 5000
pool_guid: 14850262647910895720
name: 'pool5'
state: 0
hostid: 2166368394
hostname: 'freenas.local'
vdev_tree:
type: 'root'
id: 0
guid: 14850262647910895720
children[0]:
type: 'raidz'
id: 0
guid: 142933150631883837
nparity: 2
metaslab_array: 33
metaslab_shift: 37
ashift: 12
asize: 15002891714560
is_log: 0
create_txg: 4
children[0]:
type: 'disk'
id: 0
guid: 79266291072794538
whole_disk: 1
DTL: 356
create_txg: 4
path: '/dev/disk/by-id/ata-WL3000GSA6472_WOL240282406-part1'
children[1]:
type: 'disk'
id: 1
guid: 1087294782673888508
whole_disk: 1
DTL: 258
create_txg: 4
path: '/dev/disk/by-id/ata-WL3000GSA6472_WOL240282471-part1'
children[2]:
type: 'disk'
id: 2
guid: 2219503574895013140
whole_disk: 1
DTL: 257
create_txg: 4
path: '/dev/disk/by-id/ata-WL3000GSA6472_WOL240282504-part1'
children[3]:
type: 'disk'
id: 3
guid: 6460403329296563235
whole_disk: 1
DTL: 202
create_txg: 4
path: '/dev/disk/by-id/ata-WL3000GSA6472_WOL240282506-part1'
children[4]:
type: 'disk'
id: 4
guid: 9844978706073275260
whole_disk: 1
DTL: 167
create_txg: 4
path: '/dev/disk/by-id/ata-WL3000GSA6472_WOL240282472-part1'
children[1]:
type: 'missing'
id: 1
guid: 0
zdb: can't open 'pool5': No such device or address
バージョン:
libzfs2 0.6.5.3-1~vivid AMD64 Native OpenZFS filesystem library for Linux
ubuntu-zfs 9~vivid AMD64 Native ZFS filesystem metapackage for Ubuntu.
zfs-dkms 0.6.5.3-1~vivid AMD64 Native OpenZFS filesystem kernel modules for Linux
zfsutils 0.6.5.3-1~vivid AMD64 Native OpenZFS management utilities for Linux
Devnodesからのインポートを試みました:
~/tmp$ ln -s $(for link in /dev/disk/by-id/ata-WL3000GSA6472_WOL240282406* /dev/disk/by-id/ata-WL3000GSA6472_WOL240282471* /dev/disk/by-id/ata-WL3000GSA6472_WOL240282504* /dev/disk/by-id/ata-WL3000GSA6472_WOL240282506* /dev/disk/by-id/ata-WL3000GSA6472_WOL240282472* ; do readlink -f "${link}" ; done) ./
~/tmp$ ls
sdb sdb1 sdb9 sdc sdc1 sdc9 sdd sdd1 sdd9 sde sde1 sde9 sdf sdf1 sdf9
~/tmp$ Sudo zpool import -d ./ pool5
cannot import 'pool5': pool may be in use from other system, it was last accessed by freenas.local (hostid: 0x8120288a) on Tue Oct 27 16:24:56 2015
use '-f' to import anyway
~/tmp$ Sudo zpool import -fd ./ pool5
cannot import 'pool5': one or more devices is currently unavailable
そして奇妙な部分(ada1とは何ですか?ああ、おそらくfreebsd devnode):
$ Sudo zpool import -d tmp
pool: pool5
id: 14850262647910895720
state: UNAVAIL
status: The pool was last accessed by another system.
action: The pool cannot be imported due to damaged devices or data.
see: http://zfsonlinux.org/msg/ZFS-8000-EY
config:
pool5 UNAVAIL missing device
raidz2-0 ONLINE
sde ONLINE
sdc ONLINE
sdd ONLINE
sdb ONLINE
sdf ONLINE
cache
ada1
キャッシュデバイスを再初期化して、再度検出できるようにすることはできますか?キャッシュデバイスは、そのプールについてどのくらいの情報を保存しますか?別のzpoolを作成し、それをキャッシュとして追加するだけで機能しますか? zdbにはGUIDがリストされていないようです-空きキャッシュドライブが必要ですか?キャッシュドライブを作成してada1にシンボリックリンクし、それを取得させることはできますか?
Linux上のZFSのバージョンは何ですか?キャッシュデバイスがない状態でのインポートは「新しい」機能です(それほど新しい機能ではありませんが、ZoLは過去にかなり遅れていました)
また、不要な場合は、「zones」プールを破棄して、「pool5」のキャッシュデバイスがロックされないようにしてください。デバイスが実際に欠落していないため、奇妙な状況にある可能性があります。他のプールによってロックされているため、使用できません。
その他の試み:zpool import -m pool5(欠落しているログデバイスにのみ必要であり、欠落しているキャッシュデバイスには必要ありません)
zpool import -nF pool5
確かなことはわかりませんが、質問のコメントを何度か繰り返した後、問題はデバイスがexistsである可能性があると思いますが、cacheではありません。 _デバイスはもう存在しません。これにより、ZFSツールチェーンが混乱し、プールを正常にインポートできなくなります。
ifこれが問題の根本原因である場合、別のディレクトリからインポートすることで問題を回避できる可能性があります。
これを行うには、一時ディレクトリを作成し、その中に必要なデバイスのシンボリックリンクを再作成します。例えば:
# mkdir /tmp/zfs
# cd /tmp/zfs
# ln -s $(for link in /dev/disk/by-id/ata-WL3000GSA6472_WOL240282406* /dev/disk/by-id/ata-WL3000GSA6472_WOL240282471* /dev/disk/by-id/ata-WL3000GSA6472_WOL240282504* /dev/disk/by-id/ata-WL3000GSA6472_WOL240282506* /dev/disk/by-id/ata-WL3000GSA6472_WOL240282472* ; do readlink -f "${link}" ; done) ./
# zpool import -d /tmp/zfs
(長いln
コマンドは、単にata-WL...
リンクを再作成し、それらが正しいデバイスノードを指していることを確認します。)
すべてがうまくいけば、最後のzpool import -d ...
は次のようなものを出力するはずです。
pool: pool5
id: 14850262647910895720
state: ONLINE
action: The pool can be imported using its name or numeric identifier.
config:
pool5 ONLINE
raidz2-0 ONLINE
ata-WL3000GSA6472_WOL240282406 ONLINE
ata-WL3000GSA6472_WOL240282471 ONLINE
ata-WL3000GSA6472_WOL240282504 ONLINE
ata-WL3000GSA6472_WOL240282506 ONLINE
ata-WL3000GSA6472_WOL240282472 ONLINE
cache
...something... MISSING (was ata-ST31500341AS_6VS073SA)
不足しているキャッシュデバイスのzpool import
出力の正確な形式がわからないため(まったく表示されない場合もあります)、その部分に少量のソルトを入れても、プールが「使用中」であると文句を言う可能性があります。 "、しかしうまくいけばこれにより、ZFSはプールを探す機会が与えられ、キャッシュデバイスが存在しない場所を探すため、キャッシュデバイスと混同されることはありません。
これが機能する場合は、-d /tmp/zfs -f
を使用してプールをインポートできるはずです(プールは以前にエクスポートされていないため、-f
を使用する必要がありますが、ZFSで-f
を使用すると 非常に頻繁に)やりたいことではありません そして、特定のthatを使いたいことと、why _を使いたいことを知らない限り、それを使う習慣をつけるべきではありません)、zpool detach pool5 ...something...
などを使用してプールからキャッシュデバイスを削除し、プールをエクスポートしてから、通常どおりプールを再インポートします。その後、必要に応じてキャッシュデバイスを再度追加できます(ただし、キャッシュデバイスにスピンドルを使用しないことを強くお勧めします)。
(-d
を使用せずに)プールを通常どおり再インポートできたら、上記で作成した/ tmp/zfs(またはその他の一時)ディレクトリを安全に削除できます。
また、これが機能する場合は、 プロジェクト課題追跡システム でバグレポートを提出することをお勧めします。この種の回避策は、実際には揮発性データストアであるものには必要ありません。