dmraid and anaconda.

Rob Hall robslists at digitalmedia.newsquest.co.uk
Wed May 11 15:01:46 UTC 2005


On Wednesday 11 May 2005 11:58, Nando wrote:

>  I've tried those patchs.  Also using  a network install method.
>  But i got stuck in anaconda that started to give errors.
>  Can you share those additional patchs? So i can try here to do the same.

Firstly I changed the sets and disk detection section in dmraid.py as dmraid 
-tay in disklist and setlist didn't seem to work on my system (although I was 
using a later DMRaid revision than that supplied with FC3 as stock so that 
may be the cause)?

I also had to change the makeDevInode function in isys.py as anaconda gave 
errors relating to symlinks already existing.

Bear in mind the changes I made may not be the best way of handling the 
errors/issues as I'm no Python programmer but they worked for me. I've 
attached two text files containing the functions changed from Mark's original 
patch. 

Note the dmraid.py changes are using a hardcoded pdc string in the re.match 
function for my promise controller. This will need changing for other 
flavours of ataraid controllers.

>  Rob Hall wrote:
> On Wednesday 04 May 2005 17:35, Nando wrote:
>
>
> is there any news/updates on anaconda supporting dmraid?
> Up to now i had a sil3112 in redhat 9 because there is a module that
> make the raid system works.
> But being very slow, and giving problems. Like the one that happened
> now, that destroyed to mirrored drives makes me
> try to update to a more up to date system like Fedora Core 3.
>
> So, if anyone has any way to do this i'd appreciate. I really didn't
> want to have to install RH9 again.
>
> It is possible to install FC3 on a DMRaid array but it's not for the faint
> hearted.
>
> I have installed FC3 on a Promise TX2000 3 disk raid 0 using DMRaid. I used
> the info/patches provided by Mark Wormgoor,
> https://www.redhat.com/archives/fedora-devel-list/2004-October/msg00728.htm
>l, which added DMRaid support to Anaconda (although I had to further patch
> Mark's code). This required rebuilding the stage2.img from the FC3 install
> which I then installed on the target machine over a HTTP connection rather
> than from CD (couldn't be bothered rebuilding the CD's). I also had to
> install grub from FC-development as Grub in FC3 wouldn't work with my
> DMRaid array.
>
> You may be as well waiting for FC4 which I'm hoping will have native DMRaid
> support.
>
> Perhaps Heinz could clarify the state of DMRaid in FC4 as FC4test2
> certainly didn't have native support (though I haven't tried the newly
> released test3 revision)?

-- 
Best regards,
 Rob Hall - Red Hat Certified Engineer
 Technical Team Leader
 Newsquest Digital Media
-------------- next part --------------

#note has hardcoded pdc (promise controller) in re.match line
def disklist():
    global dmraidDevicePresent
    if dmraidDevicePresent == 0:
        return []

    disks = []
    args = ["dmraid", "-r"]
    dmraidscanout = iutil.execWithCapture(args[0], args, searchPath = 1,
                                      stderr = "/dev/tty6")
    for line in dmraidscanout.split("\n"):
        try:
            found = re.match("/dev/(\S+): pdc, \"(\S+)\"", line)
            disks.append (found.group(1))
        except:
            pass

    return disks

#note has hardcoded pdc (promise controller) in re.match line
def setlist():
    global dmraidDevicePresent
    if dmraidDevicePresent == 0:
        return []

    sets = []
    args = ["dmraid", "-r"]
    dmraidscanout = iutil.execWithCapture(args[0], args, searchPath = 1,
                                      stderr = "/dev/tty6")
    for line in dmraidscanout.split("\n"):
        try:
            found = re.match("/dev/(\S+): pdc, \"(\S+)\"", line)
            sets.append (found.group(2))
        except:
            pass

    return sets

-------------- next part --------------
def makeDevInode(name, fn=None):
    if fn:
        if name[:7] == "mapper/":
            try:
                os.makedirs(os.path.dirname(fn))
            except:
                pass
            try:
                os.symlink("/dev/" + name, fn)
            except:
                pass
        else:
            _isys.mkdevinode(name, fn)
            return fn
    path = '/dev/%s' % (name,)
    try:
        os.stat(path)
    except OSError:
        path = '/tmp/%s' % (name,)
        if name[:7] == "mapper/":
            try:
                os.makedirs(os.path.dirname(path))
            except:
                pass
            try:
                os.symlink("/dev/" + name, path)
            except:
                pass
        else:
            _isys.mkdevinode(name, path)
    return path


More information about the Ataraid-list mailing list