Integrating Linux with EMC SAN
— ny_wk
Integrating Linux with an EMC SAN means presenting Fibre Channel LUNs from a Dell EMC array to a Red Hat Enterprise Linux or CentOS host, managing the redundant I/O paths with EMC PowerPath, and registering the host so the array can map storage to it. This guide walks through the full workflow end to end: identifying the HBA and WWPNs, installing the host software, bringing up the multipathing layer, and partitioning, formatting, and mounting the new disk so it survives reboots.
The problem: raw SAN LUNs are not enough
When a storage admin zones your server into the SAN fabric and assigns one or more LUNs from an EMC array (such as a VNX, Unity, or older CLARiiON/Symmetrix), the Linux kernel will discover the same disk once per physical path. A host with two HBA ports connected to two fabrics typically sees the same LUN as four separate block devices (for example /dev/sdb, /dev/sdc, /dev/sdd, /dev/sde). Writing to any one of those raw devices directly is dangerous and gives you no failover.
To safely integrate Linux with an EMC SAN you need a layer that aggregates those duplicate paths into a single logical device and handles automatic failover and load balancing. That layer is multipathing. EMC ships its own proprietary multipathing stack, PowerPath, although the native Linux device-mapper-multipath (DM-MPID) is a fully supported, license-free alternative on modern arrays.
What you need before you start
Two pieces of EMC host software do the heavy lifting. A common misconception is that PowerPath "removes" paths — it does not. It combines the redundant paths into one pseudo device and balances I/O across them.
- EMC PowerPath — the multipathing driver. It presents each LUN as a single
emcpowerXpseudo device (for example/dev/emcpowera) instead of four/dev/sdXdevices, and it owns path failover and load balancing. PowerPath is licensed software; you need a valid registration key for full functionality. - Unisphere/Navisphere Host Agent — historically called the Navisphere Host Agent (the binary and service are named
naviagent). It registers the host's HBA initiators (WWPNs), hostname, IP, and OS details automatically with the array, so the storage admin can see and map LUNs to your server from Unisphere/Navisphere instead of registering each WWPN by hand.
Download both RPMs that match your exact RHEL/CentOS major version and architecture from the Dell EMC support portal. You also need root access, the server already zoned into the fabric, and the LUNs assigned on the array side.
Step-by-step: integrating Linux with the EMC SAN
Run every command below as root (or with sudo). The original source contained several typos in the flags — the corrected, copy-paste-safe versions are shown here.
1. Confirm the OS, kernel, and architecture
PowerPath and the host agent are built per-kernel, so verify exactly what you are running first.
- Check the kernel and architecture:
uname -a - Check the distribution release:
cat /etc/redhat-release
Note the kernel version and whether the host is x86_64 — you must match the RPM to it.
2. Verify the Fibre Channel HBA is present
Confirm the kernel sees your HBA cards (typically QLogic or Emulex).
- List the FC adapters:
lspci | grep -i fibre - If that returns nothing, try a broader match:
lspci | grep -i -E 'fibre|fiber|hba'
Each line corresponds to a physical FC port. No output usually means the HBA driver is not loaded or the card is not seated/recognized.
3. Find the WWPNs (the SAN's address for your host)
The World Wide Port Name (WWPN) is the unique 16-hex-digit address the SAN fabric and the array use to identify each HBA port. The storage and fabric admins need these to zone and mask the LUNs to you.
- List the FC host entries:
ls /sys/class/fc_host/(you may seehost3,host4, etc.) - Read each port name:
cat /sys/class/fc_host/host4/port_name - Read them all at once:
cat /sys/class/fc_host/host*/port_name
A WWPN looks like 0x21000024ff45a1b2. Record every port name and hand them to the storage admin (or let the host agent register them for you in the next steps).
4. Check whether the EMC packages are already installed
Avoid duplicate installs by querying the RPM database. Note the corrected flags — the original used an invalid -I; the right ones are -q -a with a case-insensitive grep -i.
- Look for PowerPath:
rpm -qa | grep -i emcpower - Look for the host agent:
rpm -qa | grep -i navi
5. Install the host agent and PowerPath
Install both downloaded RPMs. The -i flag installs, -v is verbose, and -h prints a hash progress bar.
- Install the Unisphere/Navisphere Host Agent:
rpm -ivh NaviHostAgent-Linux-<version>.x86_64.rpm - Install PowerPath:
rpm -ivh EMCpower.LINUX-<version>.x86_64.rpm - Register your PowerPath license key (required for full multipathing):
emcpreg -install
Use the real file names from the portal. If the install complains about dependencies, resolve them before continuing rather than forcing the package.
6. Start and verify the Navisphere Host Agent
The agent service is naviagent. Once running, it phones home to the array and registers the host so its initiators show up as a known host record in Unisphere/Navisphere.
- Start it:
service naviagent start - Check status:
service naviagent status - Enable it at boot (SysV):
chkconfig naviagent on— or on RHEL 7+/systemd:systemctl enable --now naviagent
After this, ask the storage admin to confirm the host appears registered, then add/map the LUNs to it.
7. Start and verify PowerPath
PowerPath is often controlled through its init script rather than the generic service command on older releases.
- Start it:
/etc/init.d/PowerPath start(on systemd hosts:systemctl start PowerPath) - Confirm the daemon is alive:
ps -ef | grep -i powerpath - Enable at boot:
chkconfig PowerPath on
8. Rescan the SAN and confirm the paths
After the LUNs are mapped on the array side, make Linux discover them without a reboot, then ask PowerPath to claim them.
- Rescan each SCSI host:
for h in /sys/class/scsi_host/host*/scan; do echo "- - -" > $h; done - Have PowerPath rediscover and rebuild its device map:
powermt configthenpowermt save - Display all PowerPath devices and their paths:
powermt display dev=all
In the powermt display output, a healthy LUN shows multiple paths in the alive state mapped to a single emcpowerX pseudo device. That single device — not the individual /dev/sdX entries — is what you partition and mount.
9. Identify, partition, format, and mount the new disk
Now treat the PowerPath pseudo device like any local disk.
- List all disks to find the new SAN device:
fdisk -lorparted -l(look for/dev/emcpowera) - Create a partition:
fdisk /dev/emcpowera(pressnfor new, accept defaults, thenwto write). For disks larger than 2 TB use GPT:parted /dev/emcpowera mklabel gptthenparted /dev/emcpowera mkpart primary 0% 100% - Make the filesystem on the new partition:
mkfs.ext4 /dev/emcpowera1(usemkfs.xfson RHEL 7+, where XFS is the default) - Create a mount point:
mkdir /emc - Mount it:
mount /dev/emcpowera1 /emc
Confirm it is mounted with df -h /emc.
10. Make the mount persistent
To survive reboots, add an entry to /etc/fstab. Always reference the device by a stable identifier, not the kernel name, because /dev/emcpowera ordering can change.
- Get the filesystem UUID:
blkid /dev/emcpowera1 - Add a line to
/etc/fstabsuch as:UUID=<uuid> /emc ext4 defaults,_netdev 0 0 - Test the entry before trusting it:
mount -a(no errors = good)
The _netdev option tells the system the filesystem depends on the SAN/network being available, which prevents boot hangs if storage is slow to appear.
Comparison: PowerPath vs native device-mapper-multipath
On any reasonably modern array and OS you can integrate Linux with the EMC SAN using the free, in-kernel device-mapper-multipath instead of licensed PowerPath. Knowing both saves money and avoids surprises during audits.
| Aspect | EMC PowerPath | device-mapper-multipath (DM-MPID) |
| Cost | Licensed (per-host key) | Free, ships with RHEL/CentOS |
| Device name | /dev/emcpowera | /dev/mapper/mpatha |
| Management tool | powermt | multipath, multipathd |
| Config file | PowerPath rules | /etc/multipath.conf |
| Load balancing | Advanced (adaptive, etc.) | Good (round-robin, service-time) |
If you go native, install with yum install device-mapper-multipath, run mpathconf --enable --with_multipathd y, then systemctl enable --now multipathd and check with multipath -ll.
Common pitfalls when integrating Linux with EMC storage
- Mounting a raw
/dev/sdXpath. Never mount the individual SCSI devices directly — you bypass failover and risk corruption. Always use theemcpowerX(ormpathX) device. - Mismatched RPM and kernel. PowerPath is kernel-specific. A package built for a different kernel will fail to load its module after a
yum update; rebuild or reinstall the matching version. - Forgetting to register the license. Without
emcpreg -install, PowerPath may run in a degraded/unlicensed mode with limited path management. - Using kernel device names in fstab.
/dev/sdbor even/dev/emcpoweracan be reordered across reboots. Mount byUUIDand add_netdev. - Host not registered on the array. If the
naviagentservice is not running, the storage admin cannot see your initiators and the LUN mask will be incomplete — you will see zero new disks after a rescan. - Zoning vs masking confusion. Zoning (fabric switch) and LUN masking (array) are two separate gates. Both must allow your WWPNs before the LUN appears.
Verification: how to know the integration succeeded
Run this short checklist to confirm everything is healthy:
powermt display dev=allshows the LUN with all paths alive and a single pseudo device.service naviagent status(orsystemctl status naviagent) reports the agent running.df -h /emcshows the mounted SAN filesystem with the expected capacity.- A test write succeeds:
touch /emc/testfile && ls -l /emc/testfile && rm /emc/testfile. - A simulated path failure (pulling one cable in a lab) keeps I/O alive —
powermt displayshows one pathdeadwhile the device stays usable.
A note on legacy versus modern environments
Many of these commands — service, /etc/init.d/PowerPath, chkconfig, and arrays like CLARiiON/VNX with the Navisphere Host Agent — come from the SysV-init era of RHEL/CentOS 5 and 6. They still work but are legacy. On RHEL/CentOS 7, 8, and 9 the system uses systemd, so prefer systemctl, the agent is part of Unisphere tooling, and the default filesystem is XFS rather than ext4. The integration concept is identical; only the service-control syntax and array UI have modernized.
Key Takeaways
- PowerPath aggregates, it does not remove paths — it merges redundant SAN paths into one
emcpowerXdevice with failover and load balancing. - The Navisphere/Unisphere Host Agent (
naviagent) registers your host's WWPNs with the array so LUNs can be masked to it. - Always partition, format, and mount the pseudo device (
/dev/emcpowera), never the raw/dev/sdXpaths. - Mount by UUID with
_netdevin/etc/fstabso SAN storage persists safely across reboots. - Native
device-mapper-multipathis a free, supported alternative to licensed PowerPath on modern arrays.
Frequently Asked Questions
What is the difference between PowerPath and Linux native multipath?
PowerPath is EMC's licensed multipathing driver that presents LUNs as /dev/emcpowerX and is managed with powermt. Native device-mapper-multipath is free, ships with RHEL/CentOS, presents devices as /dev/mapper/mpathX, and is managed with multipath and multipathd. Both provide failover and load balancing; PowerPath offers more advanced load-balancing policies.
How do I find the WWPN of an HBA in Linux?
Read the FC port name from sysfs: cat /sys/class/fc_host/host*/port_name. Each value (for example 0x21000024ff45a1b2) is the World Wide Port Name the SAN fabric and array use to zone and mask LUNs to your server.
Why does my Linux host see the same SAN disk multiple times?
Because each physical path to the LUN is discovered separately by the kernel. A dual-HBA, dual-fabric setup shows the same LUN as several /dev/sdX devices. Multipathing software (PowerPath or DM-MPID) collapses those duplicates into one logical device so you can safely use it.
How do I make a SAN-mounted filesystem mount automatically at boot?
Add it to /etc/fstab using the filesystem's UUID (from blkid) plus the _netdev option, for example UUID=<uuid> /emc ext4 defaults,_netdev 0 0, then test with mount -a before rebooting.
If this guide helped you bring EMC SAN storage online on Linux, subscribe to @explorenystream on YouTube for more hands-on Linux and system administration walkthroughs.