показана FreeBSD 12.1, установлена на зеркало, которое было создано на базе
ada0 в процессе установки, затем после установки и загрузки с зеркала,
в него был добавлен диск ada1.
А ниже показано, сколько секторов на ada0/ada1 и на зеркале mirror/gm0,
затем из зеркала удален диск ada1. Для убедительности зачищены
два последних сектора.
Затем ada1 добавлен в зеркало и сделаны копии последнего и предпоследнего
сектора и показано их содержимое, затем ada1 снова удален и снова
сделаны копии секторов и показано их содержимое.
Все понятно, наглядно и прозрачно, изучайте
Код: Выделить всё
- show FreeBSD version, loaded kernel modules, /boot/loader.conf and /etc/fstab
root@bsd121gm:~ # freebsd-version
12.1-RELEASE
root@bsd121gm:~ # freebsd-version -k
12.1-RELEASE
root@bsd121gm:~ # kldstat
Id Refs Address Size Name
1 7 0xffffffff80200000 2448d90 kernel
2 1 0xffffffff8264a000 281e0 geom_mirror.ko
3 1 0xffffffff82821000 2668 intpm.ko
4 1 0xffffffff82824000 b50 smbus.ko
root@bsd121gm:~ # gpart show mirror/gm0
=> 40 16777136 mirror/gm0 GPT (8.0G)
40 256 1 freebsd-boot (128K)
296 16776880 2 freebsd-ufs (8.0G)
root@bsd121gm:~ # cat /boot/loader.conf
geom_mirror_load="YES"
vfs.root.mountfrom="ufs:/dev/ufs/rootfs"
hw.vga.textmode=0
root@bsd121gm:~ # cat /etc/fstab
# Device Mountpoint FStype Options Dump Pass#
/dev/mirror/gm0p2 / ufs rw 1 1
root@bsd121gm:~ # ls -la /dev/gpt/
total 1
dr-xr-xr-x 2 root wheel 512 Nov 12 19:07 .
dr-xr-xr-x 32 root wheel 512 Nov 12 19:07 ..
crw-r----- 1 root operator 0x5d Nov 12 19:07 boot
crw-r----- 1 root operator 0x66 Nov 12 20:06 rootfs
root@bsd121gm:~ # ls -la /dev/ufs/
total 1
dr-xr-xr-x 2 root wheel 512 Nov 12 19:07 .
dr-xr-xr-x 32 root wheel 512 Nov 12 19:07 ..
crw-r----- 1 root operator 0x62 Nov 12 19:07 rootfs
root@bsd121gm:~ #
- show diskinfo ada0 and mirror/gm0, ada0_sectors=mirror_sectors+1
root@bsd121gm:~ # diskinfo -v ada0
ada0
512 # sectorsize
8589934592 # mediasize in bytes (8.0G)
16777216 # mediasize in sectors
--------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
0 # stripesize
0 # stripeoffset
16644 # Cylinders according to firmware.
16 # Heads according to firmware.
63 # Sectors according to firmware.
VBOX HARDDISK # Disk descr.
VB0e12a80f-766a94ea # Disk ident.
No # TRIM/UNMAP support
Unknown # Rotation rate in RPM
Not_Zoned # Zone Mode
root@bsd121gm:~ # diskinfo -v mirror/gm0
mirror/gm0
512 # sectorsize
8589934080 # mediasize in bytes (8.0G)
16777215 # mediasize in sectors
--------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
0 # stripesize
0 # stripeoffset
No # TRIM/UNMAP support
Unknown # Rotation rate in RPM
- remove ada1 from gmirror
root@bsd121gm:~ # gmirror status
Name Status Components
mirror/gm0 COMPLETE ada0 (ACTIVE)
ada1 (ACTIVE)
root@bsd121gm:~ # gmirror remove gm0 ada1
root@bsd121gm:~ # gmirror status
Name Status Components
mirror/gm0 COMPLETE ada0 (ACTIVE)
root@bsd121gm:~ #
- force clean last 2 ada1 sectors and do it's copies to file
a) clear 2 sectors
root@bsd121gm:~ # dd if=/dev/zero of=/dev/ada1 oseek=16777214
dd: /dev/ada1: end of device
3+0 records in
2+0 records out
1024 bytes transferred in 0.003751 secs (273020 bytes/sec)
root@bsd121gm:~ #
b) read 2 sectors from raw ada1 to file /tmp/ada1_meta
root@bsd121gm:~ # dd if=/dev/ada1 of=/tmp/ada1_meta iseek=16777214 count=2
2+0 records in
2+0 records out
1024 bytes transferred in 0.000586 secs (1748249 bytes/sec)
root@bsd121gm:~ # file /tmp/ada1_meta
/tmp/ada1_meta: data
root@bsd121gm:~ # hd /tmp/ada1_meta
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000400
root@bsd121gm:~ #
- add disk ada1 to mirror
root@bsd121gm:~ # gmirror insert gm0 ada1
root@bsd121gm:~ # gmirror status
Name Status Components
mirror/gm0 DEGRADED ada0 (ACTIVE)
ada1 (SYNCHRONIZING, 27%)
root@bsd121gm:~ #
- wait until mirror synchronized
root@bsd121gm:~ # gmirror status
Name Status Components
mirror/gm0 COMPLETE ada0 (ACTIVE)
ada1 (ACTIVE)
root@bsd121gm:~ #
- copy last sector from ada1 to file and see mirror metadata
root@bsd121gm:~ # dd if=/dev/ada1 of=/tmp/ada1_meta1 iseek=16777215 count=1
1+0 records in
1+0 records out
512 bytes transferred in 0.000391 secs (1310026 bytes/sec)
root@bsd121gm:~ # file /tmp/ada1_meta1
/tmp/ada1_meta1: data
root@bsd121gm:~ # hd /tmp/ada1_meta1
00000000 47 45 4f 4d 3a 3a 4d 49 52 52 4f 52 00 f8 ff ff |GEOM::MIRROR....|
00000010 04 00 00 00 67 6d 30 00 0c b4 c2 80 ff ff ff ff |....gm0.........|
00000020 58 33 b1 81 40 af 98 21 22 a7 59 88 02 00 00 00 |X3..@..!".Y.....|
00000030 00 02 00 00 00 00 00 10 00 00 02 00 fe ff ff 01 |................|
00000040 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 |................|
00000050 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 |................|
00000060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000070 00 00 00 02 00 00 00 ed 94 73 77 b8 b4 ec 91 27 |.........sw....'|
00000080 49 70 65 39 9e b2 eb 00 00 00 00 00 00 00 00 00 |Ipe9............|
00000090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000200
root@bsd121gm:~ #
- what do you think about pre-last ada1 sector (sector from alt gpt)
root@bsd121gm:~ # dd if=/dev/ada1 of=/tmp/ada1_meta_prelast iseek=16777214 count=1
1+0 records in
1+0 records out
512 bytes transferred in 0.000382 secs (1340830 bytes/sec)
root@bsd121gm:~ # hd /tmp/ada1_meta_prelast
00000000 45 46 49 20 50 41 52 54 00 00 01 00 5c 00 00 00 |EFI PART....\...|
00000010 4e d0 10 c1 00 00 00 00 fe ff ff 00 00 00 00 00 |N...............|
00000020 01 00 00 00 00 00 00 00 28 00 00 00 00 00 00 00 |........(.......|
00000030 d7 ff ff 00 00 00 00 00 06 27 eb cd 5a 05 ea 11 |.........'..Z...|
00000040 93 7b 08 00 27 01 27 ce de ff ff 00 00 00 00 00 |.{..'.'.........|
00000050 80 00 00 00 80 00 00 00 13 3b 4b ac 00 00 00 00 |.........;K.....|
00000060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000200
root@bsd121gm:~ #
- coping last sector from mirror/gm0
root@bsd121gm:~ # dd if=/dev/mirror/gm0 of=/tmp/gm0_last iseek=16777214 count=1
1+0 records in
1+0 records out
512 bytes transferred in 0.000557 secs (918450 bytes/sec)
root@bsd121gm:~ # hd /tmp/gm0_last
00000000 45 46 49 20 50 41 52 54 00 00 01 00 5c 00 00 00 |EFI PART....\...|
00000010 4e d0 10 c1 00 00 00 00 fe ff ff 00 00 00 00 00 |N...............|
00000020 01 00 00 00 00 00 00 00 28 00 00 00 00 00 00 00 |........(.......|
00000030 d7 ff ff 00 00 00 00 00 06 27 eb cd 5a 05 ea 11 |.........'..Z...|
00000040 93 7b 08 00 27 01 27 ce de ff ff 00 00 00 00 00 |.{..'.'.........|
00000050 80 00 00 00 80 00 00 00 13 3b 4b ac 00 00 00 00 |.........;K.....|
00000060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000200
root@bsd121gm:~ #
- compare last sector mirror/gm0 and pre-last sector ada1
root@bsd121gm:~ # cmp /tmp/gm0_last /tmp/ada1_meta_prelast
identical, right its one and the same sector
- remove ada1 from mirror and read last sector (gmirror metadata)
root@bsd121gm:~ # gmirror status
Name Status Components
mirror/gm0 COMPLETE ada0 (ACTIVE)
ada1 (ACTIVE)
root@bsd121gm:~ # gmirror remove gm0 ada1
root@bsd121gm:~ # gmirror status
Name Status Components
mirror/gm0 COMPLETE ada0 (ACTIVE)
root@bsd121gm:~ # dd if=/dev/ada1 of=/tmp/ada1_meta_last iseek=16777215
1+0 records in
1+0 records out
512 bytes transferred in 0.000422 secs (1214223 bytes/sec)
root@bsd121gm:~ # hd /tmp/ada1_meta_last
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000200
root@bsd121gm:~ #