При перезапуске сервера на консоли был получен следующий вывод:
ZFS: i/o error - all block copies unavailable
ZFS: failed to read pool zroot directory object
qptzfsboot: failed to mount default pool zroot
FreeBSD/x86 boot
ZFS: i/o error - all block copies unavailable
ZFS: can't fild dataset 0
Default: zroot/<0x0>
boot:
Я загрузил хост с usb livecd и смонтировал каталог / etc в / tmp, чтобы разрешить доступ по ssh:
ifconf -a # get available i/f names
ifconf em0 inet 192.168.216.46
route add default 192.168.216.1
hostname vhost06.internal
mkdir /tmp/etc
mount_unionfs /tmp/etc /etc
echo 'PermitRootLogin yes' >> /etc/sshd_config
passwd
Changing local password for root
New Password:
Retype New Password:
service sshd onestart
Нет доступных для импорта пулов zfs:
root@vhost06:~ # zpool status
no pools available
root@vhost06:~ # zpool list
no pools available
root@vhost06:~ # zfs list
no datasets available
gpart
показывает эту геометрию:
=> 40 15628053088 ada0 GPT (7.3T)
40 1024 1 freebsd-boot (512K)
1064 984 - free - (492K)
2048 16777216 2 freebsd-swap (8.0G)
16779264 15611273216 3 freebsd-zfs (7.3T)
15628052480 648 - free - (324K)
=> 40 15628053088 ada1 GPT (7.3T)
40 1024 1 freebsd-boot (512K)
1064 984 - free - (492K)
2048 16777216 2 freebsd-swap (8.0G)
16779264 15611273216 3 freebsd-zfs (7.3T)
15628052480 648 - free - (324K)
=> 40 15628053088 ada2 GPT (7.3T)
40 1024 1 freebsd-boot (512K)
1064 984 - free - (492K)
2048 16777216 2 freebsd-swap (8.0G)
16779264 15611273216 3 freebsd-zfs (7.3T)
15628052480 648 - free - (324K)
=> 40 15628053088 ada3 GPT (7.3T)
40 1024 1 freebsd-boot (512K)
1064 984 - free - (492K)
2048 16777216 2 freebsd-swap (8.0G)
16779264 15611273216 3 freebsd-zfs (7.3T)
15628052480 648 - free - (324K)
=> 40 15628053088 diskid/DISK-VAGWJ6VL GPT (7.3T)
40 1024 1 freebsd-boot (512K)
1064 984 - free - (492K)
2048 16777216 2 freebsd-swap (8.0G)
16779264 15611273216 3 freebsd-zfs (7.3T)
15628052480 648 - free - (324K)
=> 40 15628053088 diskid/DISK-VAGWV89L GPT (7.3T)
40 1024 1 freebsd-boot (512K)
1064 984 - free - (492K)
2048 16777216 2 freebsd-swap (8.0G)
16779264 15611273216 3 freebsd-zfs (7.3T)
15628052480 648 - free - (324K)
=> 40 15628053088 diskid/DISK-VAHZAD2L GPT (7.3T)
40 1024 1 freebsd-boot (512K)
1064 984 - free - (492K)
2048 16777216 2 freebsd-swap (8.0G)
16779264 15611273216 3 freebsd-zfs (7.3T)
15628052480 648 - free - (324K)
=> 40 15628053088 diskid/DISK-VAH3PXYL GPT (7.3T)
40 1024 1 freebsd-boot (512K)
1064 984 - free - (492K)
2048 16777216 2 freebsd-swap (8.0G)
16779264 15611273216 3 freebsd-zfs (7.3T)
15628052480 648 - free - (324K)
=> 1 30240767 da0 MBR (14G)
1 1600 1 efi (800K)
1601 2012560 2 freebsd [active] (983M)
2014161 28226607 - free - (13G)
=> 0 2012560 da0s2 BSD (983M)
0 16 - free - (8.0K)
16 2012544 1 freebsd-ufs (983M)
=> 1 30240767 diskid/DISK-00241D8CE51BB011B9A694C1 MBR (14G)
1 1600 1 efi (800K)
1601 2012560 2 freebsd [active] (983M)
2014161 28226607 - free - (13G)
=> 0 2012560 diskid/DISK-00241D8CE51BB011B9A694C1s2 BSD (983M)
0 16 - free - (8.0K)
16 2012544 1 freebsd-ufs (983M)
Как мне восстановить отсюда?
<------ конец оригинала вопрос
Я добился некоторого прогресса и мне удалось импортировать и смонтировать один корневой набор данных - iocage. Это загрузка системы zfs , но я не могу найти набор данных, содержащий корневую файловую систему, поэтому я не могу зайти в / var / log, чтобы увидеть, есть ли там что-нибудь:
mkdir /tmp/zroot # /tmp is a writable file system
zpool -f zroot # force the zpool import
zfs set mountpoint=/tmp/zroot zroot # mount the imported pool in a writable fs
zfs mount -a # find and mount all the datasets
ll /tmp/zroot
total 12
drwxr-xr-x 9 root wheel 11 Feb 27 13:09 iocage/
К счастью, все абсолютно важные материал находится в / zroot / iocage
, поскольку хост просто действует как платформа для тюрьмы. Однако отсутствие корневого набора данных меня беспокоит.
zpool status
показал zroot без ошибок.
Затем я перенес набор данных iocage в другую систему, используя zfs send
].
zfs snapshot -r zroot/iocage@vh6iocsend1
zfs send -R zroot/iocage@vh6iocsend1 | ssh 192.168.216.45 zfs receive zroot/iocagev6
Это заняло некоторое время, но завершилось успешно.
Теперь мне нужно запустить проблемный хост. Этот хост был перезапущен вчера в полдень без проблем. Я не помню, чтобы запускал freebsd-update fetch
, но даже если бы у меня не было ничего для fetch, поскольку система уже была на 12.1p2
, мне все еще нужна помощь в загрузке хоста.
<----------
Дополнительные примечания:
Мне удалось смонтировать весь zpool
, используя опцию altroot
zpool import
:
import
автоматически монтировать любые наборы данных: zpool import -o altroot = / tmp / altroot -N -a
. /
набор данных: zfs смонтируйте zroot / ROOT / default
. zfs mount -a
. Вся файловая система пула zroot
теперь доступна по адресу / tmp / altroot
.
Я использовал это с помощью zfs send
для перемещения содержимого / var
к другому хозяину. Собственно отправил весь пул.
Однако исходная система по-прежнему не загружается.
В качестве последнего средства я вытащил четыре жестких диска с хоста, который не смог загрузиться, и поместил их на идентично настроенный сервер. Этот сервер загрузился с этих жестких дисков. Очевидно, аппаратная проблема.
На новом хосте все еще есть аномалия: если отсек 1 занят, то система будет загружаться только в том случае, если хотя бы один из отсека 0 или отсека 2 также будет занят. Конфигурация 0-, 1A, 2-, 3B не загружается. Я не понимаю, почему это так.