![logo](art/megamap-final-logo-100.png) # megamap MegaRAID™ Linux drive mapper ## Usage Run the `megamap` script and it will produce a map of MegaRAID drive ID to Linux drive `sd*` and also displays the WWN from Linux. ## Requirements * yum install perl-Data-Dumper perl-Readonly -y * storcli64 - From LSI/Avago/Broadcom ## Usage `megamap` takes no arguments and outputs a table of drive mappings such as: $ sudo megamap 0 sdc 0x5000cca02ab9e1a0 1 sdf 0x5000cca02ab9b548 2 sde 0x5000cca02ab9bad0 3 sdd 0x5000cca02ab9b928 4 sdh 0x5000cca02ab9b5e8 5 sdg 0x5000cca02ab9b86c 6 sdj 0x5000cca02ab9b8c0 7 sdi 0x5000cca02ab9dde8 8 sdn 0x5000cca02ab9b34c 9 sdk 0x5000cca02ab9e7d8 10 sdl 0x5000cca02ab9e0c0 11 sdm 0x5000cca02ab9b350 `megablink` takes arguments of linux drives like `/dev/sda` or without the full path such as `sdb` and starts that drive blinking. Unblinking happens when the drive is replaced automatically, but there is also a `megaunblink` in case you accidentally blink the wrong drive. `megablink -u` also unblinks a drive. $ sudo ./megablink /dev/sdn blinking drive 8 (sdn), running megacli -PdLocate -start -physdrv[0:8] -a0 Adapter: 0: Device at EnclId-0 SlotId-8 -- PD Locate Start Command was successfully sent to Firmware Exit Code: 0x00 ![array](art/server-array-final-1000-white.png) ## Notes * :foggy: the Linux WWN is off-by-one or a few from what `megacli` shows. * :clap: thanks to http://serverfault.com/questions/381177/megacli-get-the-dev-sd-device-name-for-a-logical-drive/ for getting me to look in `/dev/disk/by-id` * :clap: thanks to http://www.network-administrator.co.uk/?p=575 for providing a handy reference to the `megacli` command structure * :snake: [lsidrivemap](https://github.com/louwrentius/lsidrivemap) is similar to `megamap`, but written in python and it has a nice table output format that shows the layout of the drives on the front of the server. * :clap: thanks to [Harry Lee](https://github.com/tclh123) for providing my first bug report and testing my eventual fix. It is really :doughnut: great to know one person is using my project. ## Support Please file a new [issue on github](https://github.com/chicks-net/megamap/issues) with the output from: * `megacli -pdlist -a0 | egrep 'Slot|^SAS'` * `ls -l /dev/disk/by-id` * `uname -a` * `lsb_release -a` The included script `megatrouble` will give you all of this in a format ready to post into an issue. ## Debug Mode If you set the `MEGAMAP_DEBUG` environment variable it won't run `megacli` or `ls` directly, but instead it will pull the data out of static files `/tmp/megacli.out` and `/tmp/ls.out`. If everything is working properly you should be able to generate those files like so: megacli -pdlist -a0 | egrep 'Slot|^SAS' > /tmp/megacli.out ls -l /dev/disk/by-id | grep -v part > /tmp/ls.out ## Ideas * docs in POD * verify that it works on a system with more than 26 attached drives (the author does not currently have access to such a system) * support multiple adapters through command line arguments or environment variables