icb писал(а):undefined писал(а): брр, это как это?
Установил систему на диск, теперь хочу добавить второй диск и сделать зеркало.
undefined писал(а): gmirror сырого диска выполняется из shell или livecd/usb режима при загрузке
с установочного cd/usb
Насколько я понимаю - это один из вариантов. Даже когда GPT не оставляла зазор, gmirror работал затирая резервную копию (есть куча статей с таким режимом работы).
Но теперь похоже это предусмотрели и оставляют 512b - значит по идее можно без проблем делать на существующем диске (выставляя
sysctl kern.geom.debugflags=16).
ну так делайте по куче статей...
У Вас в заголовке: GPT + gmirror
вариант 1 (рекомендуемый): зеркалирование отдельных партиций
вариант 2: зеркалирование сырого диска (жертвуя копией таблицы GPT)
вариант по Handbook: зеркалирование сырого диска, но с MBR.
Если вернуться к вариант 2/GPT, то была изменена проверка geom при загрузке,
для некоторых классов, например, geom_mirror, отменена проверка альтернативной копии gpt.
Но Вы не можете установить систему на диск и потом создать geom_mirror, затрете метаданные,
поэтому, сначала создаете зеркало из двух дисков и затем его размечаете как GPT.
Вот как это делается (использовался virtualbox):
- загрузились, вышли в shell или live (live удобней)
Код: Выделить всё
# camcontrol devlist
<VBOX HARDDISK 1.0> at scbus0 target 0 lun 0 (ada0,pass0)
<VBOX HARDDISK 1.0> at scbus0 target 1 lun 0 (ada1,pass1)
<VBOX CD-ROM 1.0> at scbus1 target 0 lun 0 (pass2,cd0)
# gmirror load
# kldstat
Id Refs Address Size Name
1 3 0xffffffff80200000 179ddb0 kernel
2 1 0xffffffff81a11000 f973 geom_mirror.ko
# gpart show
# gmirror label gm0 ada0 ada1
# ls -la /dev/mirror
total 2
dr-xr-xr-x 2 root wheel 512 Apr 18 18:15 .
dr-xr-xr-x 11 root wheel 512 Apr 18 18:13 ..
crw-r----- 1 root operator 0x4e Apr 18 18:15 gm0
# gpart create -s gpt mirror/gm0
mirror/gm0 created
# gpart show mirror/gm0
=> 34 8388540 mirror/gm0 GPT (4.0G)
34 8388540 - free - (4.0G)
# gpart add -t freebsd-swap -s 512k -l swap mirror/gm0
mirror/gm0p1 added
# gpart show
=> 34 8388540 mirror/gm0 GPT (4.0G)
34 256 1 freebsd-boot (128K)
290 1024 2 freebsd-swap (512K)
1314 8387260 - free - (4.0G)
# gpart add -t freebsd-ufs mirror/gm0
mirror/gm0p3 added
# gpart show
=> 34 8388540 mirror/gm0 GPT (4.0G)
34 256 1 freebsd-boot (128K)
290 1024 2 freebsd-swap (512K)
1314 8387260 3 freebsd-ufs (4.0G)
# gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 mirror/gm0
bootcode written to mirror/gm0
# ls /dev/mirror
/dev/mirror/gm0p1 /dev/mirror/gm0p2 /dev/mirror/gm0p3
# newfs -L root /dev/mirror/gm0p3
/dev/mirror/gm0p3: 4095.3MB (8387256 sectors) block size 32768, fragment size 4096
using 7 cylinder groups of 626.09MB, 20035 blks, 80256 inodes.
super-block backups (for fsck_ffs -b #) at:
192, 1282432, 2564672, 3846912, 5129152, 6411392, 7693632
# mount
/dev/iso9660/10_2_RELEASE_AMD64_CD on / (cd9660, local, read-only)
devfs on /dev (devfs, local, multilabel)
/dev/md0 on /var (ufs, local)
/dev/md1 on /tmp (ufs, local)
# mount /dev/ufs/root /mnt
# cd /usr/freebsd-dist/
# ls -la
total 677052
drwxr-xr-x 2 root wheel 2048 Aug 12 2015 .
drwxr-xr-x 15 root wheel 2048 Aug 12 2015 ..
-rw-r--r-- 1 root wheel 782 Aug 12 2015 MANIFEST
-rw-r--r-- 1 root wheel 67410700 Aug 12 2015 base.txz
-rw-r--r-- 1 root wheel 1432104 Aug 12 2015 doc.txz
-rw-r--r-- 1 root wheel 886316 Aug 12 2015 games.txz
-rw-r--r-- 1 root wheel 95799284 Aug 12 2015 kernel.txz
-rw-r--r-- 1 root wheel 17165256 Aug 12 2015 lib32.txz
-rw-r--r-- 1 root wheel 39402500 Aug 12 2015 ports.txz
-rw-r--r-- 1 root wheel 124551336 Aug 12 2015 src.txz
# for i in base.txz kernel.txz lib32.txz; do tar --unlink -xvpJf $i -C /mnt; done
# ls -la /mnt
# cat > /mnt/boot/loader.conf
geom_mirror_load="YES"
vfs.root.mountfrom="ufs:/dev/ufs/rootfs"
CTRL-D
# cat > /mnt/etc/rc.conf
fsck_y_enable="YES"
background_fsck="YES"
ifconfig_em0="dhcp"
hostname="mirror.local"
firewall_enable="YES"
firewall_type="OPEN"
sshd_enable="YES"
sendmail_enable="NONE"
CTRL-D
# cat > /mnt/etc/fstab
/dev/gpt/swap none swap sw 0 0
/dev/ufs/root / ufs rw 1 1
CTRL-D
# reboot
можно заранее подготовить скрипт или rc.conf/fstab/loader.conf
и в livecd поднять руками сеть:
# ifconfig ...
# route add ...
# scp