У меня был пул ZFS - зеркало, содержащее 2 vdev, - работавший на сервере FreeBSD. Теперь у меня есть только один из дисков с зеркала, и я пытаюсь восстановить с него файлы.
Данные ZFS находятся в разделе GPT на диске.
Когда я пытаюсь импортировать пул, нет никаких признаков того, что он вообще существует. Я пробовал несколько подходов, но ничего не вышло.
Я бежал zdb -lu
на раздел, и кажется, что метки находят просто отлично.
# zpool import
# zpool import -D
# zpool status
no pools available
# zpool import -f ztmp
cannot import 'ztmp': no such pool available
# zpool import 16827460747202824739
cannot import '16827460747202824739': no such pool available
Информация о разделе:
# gpart list da0
Geom name: da0
modified: false
state: OK
fwheads: 255
fwsectors: 63
last: 3907029134
first: 34
entries: 128
scheme: GPT
Providers:
1. Name: da0p1
Mediasize: 65536 (64K)
Sectorsize: 512
Stripesize: 0
Stripeoffset: 17408
Mode: r0w0e0
rawuuid: d7a10230-8b0e-11e1-b750-f46d04227f12
rawtype: 83bd6b9d-7f41-11dc-be0b-001560b84f0f
label: (null)
length: 65536
offset: 17408
type: freebsd-boot
index: 1
end: 161
start: 34
2. Name: da0p2
Mediasize: 17179869184 (16G)
Sectorsize: 512
Stripesize: 0
Stripeoffset: 82944
Mode: r0w0e0
rawuuid: d7aa40b7-8b0e-11e1-b750-f46d04227f12
rawtype: 516e7cb5-6ecf-11d6-8ff8-00022d09712b
label: (null)
length: 17179869184
offset: 82944
type: freebsd-swap
index: 2
end: 33554593
start: 162
3. Name: da0p3
Mediasize: 1905891737600 (1.7T)
Sectorsize: 512
Stripesize: 0
Stripeoffset: 82944
Mode: r0w0e0
rawuuid: d7b6a47e-8b0e-11e1-b750-f46d04227f12
rawtype: 516e7cba-6ecf-11d6-8ff8-00022d09712b
label: (null)
length: 1905891737600
offset: 17179952128
type: freebsd-zfs
index: 3
end: 3755999393
start: 33554594
Consumers:
1. Name: da0
Mediasize: 2000398934016 (1.8T)
Sectorsize: 512
Mode: r0w0e0
Метка ZFS:
--------------------------------------------
LABEL 0
--------------------------------------------
version: 5000
name: 'ztmp'
state: 0
txg: 0
pool_guid: 16827460747202824739
hostid: 740296715
hostname: '#############'
top_guid: 15350190479074972289
guid: 3060075816835778669
vdev_children: 1
vdev_tree:
type: 'mirror'
id: 0
guid: 15350190479074972289
whole_disk: 0
metaslab_array: 30
metaslab_shift: 34
ashift: 9
asize: 1905887019008
is_log: 0
create_txg: 4
children[0]:
type: 'disk'
id: 0
guid: 3060075816835778669
path: '/dev/gptid/d7b6a47e-8b0e-11e1-b750-f46d04227f12'
phys_path: '/dev/gptid/d7b6a47e-8b0e-11e1-b750-f46d04227f12'
whole_disk: 1
DTL: 5511
resilvering: 1
children[1]:
type: 'disk'
id: 1
guid: 3324029433529063540
path: '/dev/gptid/396a2b11-cb16-11e1-83f4-f46d04227f12'
phys_path: '/dev/gptid/396a2b11-cb16-11e1-83f4-f46d04227f12'
whole_disk: 1
DTL: 3543
create_txg: 4
resilvering: 1
features_for_read:
create_txg: 0
Uberblock[0]
magic = 0000000000bab10c
version = 5000
txg = 0
guid_sum = 1668268329223536005
timestamp = 1361299185 UTC = Tue Feb 19 10:39:45 2013
(Остальные этикетки являются точными копиями)
Обсуждение похожей проблемы есть в эта старая ветка. Я пробовал запустить Джеффа Бонвика labelfix
инструмент (с обновлениями от эта почта), но, похоже, это не решило проблему.
Любые идеи?
для справки в будущем, простое выполнение zpool import -a (будет искать все) обычно также помогает, когда zpool / zfs fs не распознается.
Из комментария (со вступительного плаката):
Я отредактировал исходники ZFS в моей установке FreeBSD и заставил их обходить все проверки работоспособности. После отключения достаточного количества из них мне удалось импортировать пул.
Я как-то напортачил с конфигурацией ZFS. К сожалению, я не помню, что именно я сделал (я менял некоторое оборудование, поэтому я напортачил; не будь таким, как я!), Но у меня это сработало. Я использую XigmaNAS (nas4free), и все приведенные ниже команды выполняются через терминал.
Некоторое смутное воспоминание о том, что я делал (и не делал):
Симптомы:
da1
. Этой информации мне достаточно, прежде чем перейти к терминалу. В терминале вот несколько попыток выполнения команд и результатов.
zpool import -a
говорит no pool available to import
zpool status
говорит no pools available
(сломанный язык? лол.)gpart list -a
не показывает da1
gpart list da1
говорит gpart: no such geom: da1
zpool list
говорит no pools available
glabel list -a
не показывает пул в da1
zdb -l /dev/da1
может печатать две этикетки в da1
, так что мой диск не мертвzpool import -D
говорит, что бассейн на da1
уничтожен и может быть импортированРешение:
Бегать zpool import -D -f (poolname)
решил вопрос.
В моей системе FreeNAS 11.2 произошел сбой кабеля питания, и 3 диска в массиве отключились. Система вела себя странно (порт ssh был открыт, но ssh не отвечал).
После принудительного отключения питания и замены кабеля система включилась, но без массива. Массив не был поврежден - он был помечен как OFFLINE. Я не мог вывести его в онлайн или даже снова импортировать массив, что бы я ни пробовал.
Только после удаления записи для массива в веб-интерфейсе FreeNAS я смог импортировать массив. Похоже, что системная база данных была повреждена, и это повреждение помешало распознаванию массива.
Решение:
Запуск zpool import -D -f (имя пула) решил проблему.
Работал на меня. Я создал пул на Ubuntu 18.04 LTS и восстановил его на Ubuntu 20.04 LTS.