On Sun, 27 Oct 2013 21:28:06 +0400 Michael Tokarev <mjt@xxxxxxxxxx> wrote: > 25.10.2013 13:12, Lars Täuber wrote: > > Hi Michael, > > > > Fri, 25 Oct 2013 11:39:32 +0400 > > Michael Tokarev <mjt@xxxxxxxxxx> ==> linux-raid <linux-raid@xxxxxxxxxxxxxxx> : > >> Hello. > >> > >> Is there a way to change some parameters - like preferred minor, > >> array name, homehost, guuid and the like - of a _running_ array? > >> I understand these can be changed using --assemble --update=foo, > >> but how about, say, root array which is being assembled from > >> within an initrd with limited functionality? > >> > >> What I'm trying to achieve is to make a clone of a (remote) > >> running system, in order to upgrade hdds. For this, a new > >> set of drives are inserted, new set of filesystems is created, > >> current filesystems are copied to new hdds and on the next > >> reboot the system should boot from the new hdds. But since > >> I can't create arrays with the same names/minors as currently > >> running ones, and I want to preserve the naming scheme, I > >> need to ensure the new arrays will be named correctly after > >> the reboot. But since the system is remote, this is a bit > >> difficult to achieve for the root device. > >> > >> And similarly, I can't --update a NON-running array without > >> --assemble, so I can't fix the names before reboot while the > >> old arrays are still running. > >> > >> Maybe the easiest way is to write a small (perl) program > >> which will read the superblock of a non-running array, update > >> it and write it back. This at least will allow me to perform > >> tasks before reboot. But this way it becomes risky - if the > >> first reboot will happen with the old drives still in place, > >> havoc might happen, since more than one array will have the > >> same name... > >> > >> So a better route will be to create new arrays with temp > >> names, reboot, change names on the newly running system, > >> and remove old arrays. The question is how to change > >> some params on a running system. > >> > > > > it depends on the distribution you're running. But you might not need to change these parameters while the system is running. > > It doesn't. One thing is the name forcible used to assemble > an array -- this one indeed depends on the initrd/initramfs > in use. And another thing is the name recorded in the array > superblock -- this does not and should not chage behind my > back. It should only change explicitly. And that's exactly > what I'm talking about -- how to explicitly change some > params when the array is in use. I'm sorry but that isn't possible. The only options I can think of are: - boot of some other media and then update the metadata - hack the initrd to assemble with --update= to update whatever needs updating. NeilBrown
Attachment:
signature.asc
Description: PGP signature