Перенос FreeBSD сервера с ZFS root файловой системой на новый pool

Попались мне под руку пара винтов побольше и еще один компьютер. Наслышан я о чудесах и простоте переноса ZFS и решил попробовать.

Задача перенести сервер под FreBSD, что уже работает, на новый сервер с помощью ZFS.

Ну и так сказать своеобразный бекап.

Бекап это сомнительно. Потому как на исходном тоже стоит всё на «мирроре»

Создаем ключ

# ssh-keygen

# cat /root/.ssh/id_rsa.pub | ssh root@127.0.0.1 ‘cat >> /root/.ssh/authorized_keys’

[root@server ~]# zpool list -v

NAME                                     SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT

Грузимся с CD и работаем в Live-режиме mfsBSD

# mkdir /root/.ssh

# camcontrol devlist

vi /etc/ssh/sshd_config 

В конфиге разрешаем root-у логиниться. 

Отключаем DNS проверку, чтобы побыстрее было немного. 

PermitRootLogin yes 

UseDNS no 

Задаем пароль для пользователя root: 

# passwd root 

Указываем интерфейсу нужный IP адрес 

ifconfig re0 add 127.0.0.0.1/24 

или dhclient re0

запускаем sshd: /etc/rc.d/sshd onestart

Далее создаём разделы…

# gpart create -s gpt ada0

# gpart add -b 40 -s 512k -t freebsd-boot ada0

# gpart add -s 8g -t freebsd-swap ada0

# gpart add -t freebsd-zfs ada0

[root@mfsbsd ~]# gpart show

=>        40  1953522976  ada0  GPT  (932G)

          40        1024     1  freebsd-boot  (512K)

        1064    16777216     2  freebsd-swap  (8.0G)

    16778280  1936744736     3  freebsd-zfs  (924G)

Создаем пул:

# zpool create -f tank /dev/ada0p3

Пул готов к приёму данных.

Переходим на сервер-источник. 

Создаем рекурсивный снапшот, который и будем передавать:

# zfs snapshot -r tank@21-04-13 

Передаем его на сервер приемник:

# screen

# zfs send -vR tank@21-04-13 | ssh 127.0.0.0.1 zfs recv -F tank

Ждем окончания передачи. У меня примерно 213 GB передавалось около 12 часов.

Переходим опять на сервер-приемник root@mfsbsd:~ 

# csh

# zfs list -t snapshot 

# zpool list

# mkdir /tmp/tank

# mount -t zfs tank/root /tmp/tank

# gpart bootcode -b /tmp/tank/boot/pmbr -p /tmp/tank/boot/gptzfsboot -i 1 ada0

# chroot /tmp/tank

Ввиду того, что с сервера-источника нам передалось всё, то поправим немного /etc/fstab. Дело в том, что своп на источнике подключен в fstab по меткам gpt. 

Настройка по меткам

# cat /etc/fstab

/dev/gptid/dadde41e-913d-11eb-92f9-ac1f6bd74a62 none swap sw 0 0

# gpart list

2. Name: ada0p2

   Mediasize: 8589934592 (8.0G)

   Sector Size: 512

   Stripe Size: 4096

   Stripe Offset: 0

   Mode: r0w0e0

   defimedia: HD(2,GPT,fffe5673-d7ad-11dd-a24d-50465d8ab2bb,0x428,0x1000000)

   rawuuid: fffe5673-d7ad-11dd-a24d-50465d8ab2bb

   rawtype: 516e7cb5-6ecf-11d6-8ff8-00022d09712b

   label: (null)

   length: 8589934592

   offset: 544768

   type: freebsd-swap

   index: 2

   end: 16778279

   start: 1064

# vi /etc/fstab 

/dev/gptid/dadde41e-913d-11eb-92f9-ac1f6bd74a62 none swap sw 0 0 >

fffe5673-d7ad-11dd-a24d-50465d8ab2bb

Второй вариант без меток

[root@msfbsd ~]# cat /etc/fstab 

# Device Mountpoint FStype Options Dump Pass#

### /dev/gpt/swap0 none swap sw 0 0

>

/dev/ada0p2 none swap sw 0 0

Правим файлы в скопированной системе.

[root@mfsbsd ~]#

# zfs umount -a

# exit

Скажем кто у нас bootfs и сделаем экспорт:

# zpool set bootfs=tank/root tank

# zpool export tank

# shutdown -r now

На источнике можно удалить ненужный снапшот: 

# zfs destroy -r tank@move

Взял на afabla немного подправил на свой лад. Автору респект!

15 полезных команд ifconfig для настройки сетевого интерфейса в Linux

Для команды ifconfig существует много опций и многие из них требуют дополнительных параметров, которые вводятся сразу после имени опции через символ пробела.

Вот некоторые из них:

Опция

Назначение

add

Добавляет адрес для сетевого интерфейса.

del

Удаляет адрес для сетевого интерфейса.

io_addr

Устанавливает начальный адрес для ввода-вывода сетевого устройства.

bootproto

Задаёт способ получения IP-адреса. В качестве параметров используются static или dhcp.

media

Задаёт физический порт для использования сетевым устройством. Обычно в качестве значений используются 10base2 – коаксиальный Ethernet-кабель, 10baseT – витая пара до 10 Мбит/сек или AUX – внешний передатчик.

up

Включает указанный сетевой интерфейс или перезапускает его, если он был до этого отключен опцией down.

down

Отключает сетевой интерфейс, при этом вся информация о маршрутах, связанная с этим интерфейсом сохраняется.

netmask

Задаёт подсеть с помощью маски.

pointopoint

Используется для организации point-to-point соединений, в качестве параметра передаётся адрес.

broadcast

Задаёт широковещательный адрес.

irq

Задаёт номер прерывания для устройства сетевого интерфейса.

metric

Обычно используется для задания метрического значения в записи таблицы маршрутизации.

mtu

Задаёт максимальную длину передаваемого пакета (MTU), по-умолчанию равно 1500 для Ethernet и 296 для SLIP

arp

Позволяет использовать протокол ARP для поиска физического адреса устройства в сети. Включен по-умолчанию для широковещательных сетей. О выключенном ARP говорит флаг NOARP в выводе ifconfig.

-arp

Отключает использование ARP для выбранного интерфейса/устройства.

promisc

Заставляет выбранный интерфейс получать все пакеты, независимо от того, предназначены они для него или нет. Полезно для анализа сетевого трафика и выявления проблем с сетью. При этом удобно использовать утилиту tcpdump. При активации режима promiscuous в выводе ifconfig присутствует флаг PROMISC для данного интерфейса.

-promisc

Отключает режим promiscuous для сетевого интерфейса.

allmulti

Включает режим multicast, разрешая multicast-адреса. Этот режим позволяет обращаться к устройствам, которые могут находиться в разных подсетях — очень полезно при организации голосовой связи и конференций. Может не поддерживаться сетевой картой.

hw

Задаёт аппаратный (MAC) для сетевого устройства. Необходимо также указывать класс устройства: ether – для Ethernet, netrom – для AMPR NET/ROM, ax25 – для AMPR AX.25. Может не поддерживаться драйвером устройства.

-allmulti

Запрещает режим multicast.

Ifconfig примеры
Включение и отключение сетевого интерфейса на примере eth0 и eno1:

$ ifconfig eth0 up
$ ifconfig eno1 down
Изменение параметра MTU для eth0:

$ ifconfig eth0 mtu 1000
Задание MAC-адреса для eth0:

$ ifconfig eth0 hw ether AA:BB:CC:DD:EE:FF
Настройка PLIP-интерфейса для связи компьютера с IP-адресом 10.24.205.18 c компьютером, у которого IP-адрес 10.24.105.20:

$ ifconfig plip0 10.24.205.18 pointopoint 10.24.105.20
Назначение IP-адреса сетевой карте eth0:

$ ifconfig eth0 10.24.205.18
Снятие адреса с eth0:

$ ifconfig eth0 del 10.24.205.18
Задание IP-адреса, подсети, и широковещательного адреса для eth0:

$ ifconfig eth0 10.24.205.18 netmask 255.255.255.0 broadcast 10.24.205.10