Simple way to clear arbitrary drive metadata?
Konstantin Kukushkin
dark at rambler-co.ru
Mon Oct 1 10:29:06 UTC 2012
29.09.2012 21:27, Warren Block пишет:
> On Fri, 28 Sep 2012, Xin Li wrote:
>
>> On 09/28/12 15:21, Warren Block wrote:
>>> Last night, I found that the remnants of a GPT backup table on an
>>> MBR drive prevented it from booting. When reusing drives from old
>>> mirrors, old mirror metadata can be a problem also. And there may
>>> be old hardware RAID metadata at the end of the drive.
>>>
>>> It would be great if dd understood negative seek values. This
>>> would get most of that old metadata:
>>>
>>> dd if=/dev/zero of=/dev/ada8 seek=-34
>>>
>>> ...but dd does not understand negative seek values. (Been on my
>>> list for a while to look at that.)
>>>
>>> Which leaves things like
>>>
>>> diskinfo ada8 | cut -f4 (subtract 34) dd if=/dev/zero of=/dev/ada8
>>> seek=(calculated value)
>>>
>>> That can be done in one command line with bc and backticks, but
>>> it's not clear or elegant. gpart can clear secondary GPT tables,
>>> but I'm pretty sure it won't wipe out that space unless it actually
>>> is a GPT table. Likewise with glabel and gmirror, they're safe
>>> because they only touch data they understand.
>>>
>>> Is there something simpler and more blunt?
>>
>> I think you can do:
>>
>> gpart destroy -F ada8
>> gpart create -s gpt ada8
>> gpart destroy -F ada8
>>
>> The second 'create' will write an empty partition table to the
>> secondary table.
>
> Nice! It works perfectly for GPT and glabel metadata.
>
> gmirror is a problem. If the gmirror kernel module is loaded, drives
> with gmirror metadata create a mirror. GEOM prevents writes to the
> drive then. sysctl kern.geom.debugflags=16 allows writes, but the
> mirror is still in memory and running. 'gmirror stop' (which the system
> also does on shutdown) helpfully writes the whole metadata block back to
> the drive. After reboot, it's right back where it was.
>
> Seems like the only way to deal with gmirror is to have the user check
> for it directly, and stop the mirror if the attached drive is a member.
You may use 'geom <class> clear' command to clear metadata from
disk/partition/other GEOM provider. This will work only on stopped
mirrors or while geom_mirror not loaded, of course.
For gmirror you can 'remove' component from running mirror (even if the
component is last). Metadata will cleared after removing, so gmirror
remove <mirror_name> <component_name>' is very usable.
You can determine what GEOMs metadata living on disk $disk using command
'geom <class> dump', like this:
for class in mirror stripe concat raid3; do
geom $class dump $disk
done
> Probably the same for graid, but I don't know if I have a system where I
> can test that.
> _______________________________________________
> freebsd-geom at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-geom
> To unsubscribe, send any mail to "freebsd-geom-unsubscribe at freebsd.org"
--
С уважением, Константин Кукушкин,
Rambler Internet Holding
mailto:dark at rambler-co.ru
тел.: 8 (495) 785-17-00#2129
More information about the freebsd-geom
mailing list