У меня есть реальная машина под управлением Ubuntu 16.04 с корневой файловой системой zfs, установленное следование инструкциям в https://github.com/zfsonlinux/zfs/wiki/Ubuntu-16.04-Root-on-ZFS
Я установил загрузчик согласно инструкциям:
5.5b Для начальной загрузки UEFI, установите GRUB:
grub-install --target=x86_64-efi --efi-directory=/boot/efi \
--bootloader-id=ubuntu --recheck --no-floppy
Система хорошо работала в течение трех месяцев с несколькими перезагрузками (главным образом вызванный отключениями питания).
Корневой пул является тремя путями зеркало:
NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
ata-SAMSUNG_HM500JI_S1WFJ90S818624-part1 ONLINE 0 0 0
ata-ST3250820AS_5QE5BVW5-part1 ONLINE 0 0 0
ata-GB0250C8045_9SF0R2RD-part1 ONLINE 0 0 0
Первоначально мне также включали горячее резервирование в пул. Этим утром мне было нужно горячее резервирование для использования в другом сервере, который имел неисправное устройство, таким образом, я использовал шпульку, удаляют для удаления горячего резервирования из системы, выключенной, и физически удалил запчасть.
Теперь сервер не загрузится.
Я попытался выбрать все три остающихся физических диска для начальной загрузки от, но никакая радость.
В настоящее время я перезагрузил использование живого CD. Выполняя ранние шаги в инструкциях по установке выше, я вижу все пулы zfs, таким образом, данные - все там. Я думаю, что следующий шаг мог бы быть к chroot в эту шпульку, но не уверен, как сделать так, учитывая различные КОРНЕВЫЕ файловые системы и т.д.
Я предполагаю, что информация о загрузке GRUB, по некоторым причинам, была только установлена на диск, который определялся как "запчасть" и который я теперь удалил. Рассматриваемый диск является теперь частью зеркала zfs на другом сервере, таким образом, не возможно отложить его.
Мой вопрос: каков самый легкий способ повторно инициализировать GRUB так, чтобы сервер загрузился? Мне нужно к chroot в находящуюся на диске систему, или это может быть сделано от среды живого CD? Если первый, как я правильно монтирую корневой пул?
В основном запертый из инструкций по установке ZFS в https://github.com/zfsonlinux/zfs/wiki/Ubuntu-16.04-Root-on-ZFS, вот шаги, я раньше получал мою систему, работающую снова.
восстановление начальной загрузки не работало.
1.1 Загрузите Ubuntu Живой CD, выберите Попытку Ubuntu Без Установки и откройтесь, терминал (нажмите Ctrl-Alt-T).
1.2 Дополнительный: Установите сервер OpenSSH в Живой среде CD: Если у Вас есть вторая система, использование SSH для доступа к целевой системе может быть удобным.
$ sudo apt-get --yes install openssh-server
Установите пароль на “человечности” (Живой пользователь CD) учетная запись:
$ passwd
Подсказка: можно найти IP-адрес с IP addr выставочным объемом глобальный. Затем от Вашей основной машины соединитесь с ssh ubuntu@IP.
1.3 Станьте корнем:
# sudo -i
1.4 Установите ZFS в Живой среде CD:
# apt-add-repository universe
# apt update
(проигнорируйте ошибки о перемещении старой базы данных из пути),
# apt install --yes debootstrap gdisk zfs-initramfs
2,1 проверки, если пулы ZFS уже импортируются
# zpool list
# zfs list
2.2 если так, мы должны экспортировать пул zfs, таким образом, мы можем смонтировать его в другом каталоге, таким образом, мы можем chroot к нему
# zpool export rpool
3,1 пула импорта к местоположению не по умолчанию. Флаг-N (автоматически не монтируются) необходим, потому что иначе корень rpool и пул rpool/root/UBUNTU, оба попытаются смонтироваться на/mnt
# zpool import -a -N -R /mnt
3.2 монтируют корневую систему
# zfs mount rpool/ROOT/ubuntu
3.3 монтируют остающиеся файловые системы
# zfs mount -a
3.4 Свяжите виртуальные файловые системы от среды LiveCD до новой системы и chroot в нее:
# mount --rbind /dev /mnt/dev
# mount --rbind /proc /mnt/proc
# mount --rbind /sys /mnt/sys
# chroot /mnt /bin/bash --login
Примечание: Это использует - rbind, не — связывают.
4.1 Проверьте, что подстановочный знак получает корректные корневые разделы пула:
# for i in /dev/disk/by-id/*ata*part3; do echo $i; done
4.2 Добавьте запись для/boot/efi для каждого диска к/etc/fstab в целях обработки отказа в будущем:
# for i in /dev/disk/by-id/*ata*part3; \
do mkdosfs -F 32 -n EFI ${i}; \
echo PARTUUID=$(blkid -s PARTUUID -o value \
${i}) /boot/efi vfat defaults 0 1 >> /etc/fstab; done
4.3 монтируют первый диск
# mount /dev/disk/by-id/scsi-SATA_disk1-part3 /boot/efi
4,4 личинки установки
# grub-install --target=x86_64-efi --efi-directory=/boot/efi \
--bootloader-id=ubuntu --recheck —no-floppy
4.5 размонтировали первый раздел
# umount /boot/efi
4.6 монтируют второй диск
# mount /dev/disk/by-id/scsi-SATA_disk2-part3 /boot/efi
4,7 личинки установки
# grub-install --target=x86_64-efi --efi-directory=/boot/efi \
--bootloader-id=ubuntu-2 --recheck —no-floppy
4,8 повторных шага 4.5 к 4,7 для каждого дополнительного диска 4.9 Для добавленной страховки, сделайте установку MBR на каждом диске также
# grub-install /dev/disk/by-id/scsi-SATA_disk1
# grub-install /dev/disk/by-id/scsi-SATA_disk2
5.1 Выход от chroot
# exit
5.2 Перезагрузка
# reboot
Самым легким и лучшим способом повторно инициализировать личинку является утилита, названная восстановлением начальной загрузки. Выполните эти шаги:
Открывают терминал и выполняют эти команды:
sudo -i
add-apt-repository ppa:yannubuntu/boot-repair
apt update
apt install boot-repair
boot-repair
Выбрал рекомендуемое восстановление
Восстановление начальной загрузки полностью повторно инициализирует Вашу личинку и работает хорошо с UEFI.