HOWTO: JFS2 on USB device on AIX

NOTE: While this still works, IBM decided on UDF for USB disks. UDF is cross-platform compatible.

See this post for more info:

So far, IBM says you cannot mount a USB mass storage device. I wanted to test this out a bit.

I bought a Belkin F5U219 USB adapter for a whopping $12 including shipping. This is AKA IBM FRU 80P2994 or FC2738, and is supported under AIX for KB and mouse. Also, it’s supported for USB mass storage as of AIX 5.3 TL9 or later, and AIX 6.1 TL2 or later.

I plugged it into our 44p, then LO AND BEHOLD! It is detected by the IBM PCI USB2 drivers (33103500).

I took a mksysb to SCSI tape, and then, I upgraded to latest via suma. Now, the two USB 80G WD SATA drives I had attached are detected as usbms0 and usbms1.

There are block devices, but no character devices show up. This means no TSM volumes on the raw device, but what about filesystem access?

AIX does *not* call these hdisks. They are `USB Mass Storage` devices. As such, they *cannot* presently be a part of your LVM. No PPs, no LPs, no striping, mirroring, concatenating, rootvg booting, etc.

Also, AIX does not presently know how to handle, nor even look for a partition table on USB devices. mtools expects to see a partition device, not a disk device. As such, your FAT filesystem will not be accessible through AIX.

However, you don’t NEED LVM or DOS Partition Tables for a mounted filesystem. Just as you can put a filesystem on a ramdisk, you can put one on any random access storage device.

# mkfs -olog=INLINE,ea=v2 -Vjfs2 /dev/usbms1
mkfs: destroy /dev/usbms1 (yes)? y
logform: Format inline log for  <y>?y
File system created successfully.
77816244 kilobytes total disk space.
Device /dev/usbms1:
  Standard empty filesystem
  Size:           155632488 512-byte (DEVBLKSIZE) blocks

# mkdir /usb1

# mount -V jfs2 -o log=/dev/usbms1 /dev/usbms1 /usb1

# df -k
Filesystem    1024-blocks      Free %Used    Iused %Iused Mounted on
/dev/hd4           262144    161420   39%     6295     5% /
/dev/hd2          3932160    512436   87%    52989     6% /usr
/dev/hd9var        262144    160548   39%     5542     9% /var
/dev/hd3          3407872   2968652   13%      246     1% /tmp
/dev/hd1           262144    253432    4%       39     1% /home
/proc                   -         -    -         -     -  /proc
/dev/hd10opt      1310720    265876   80%    25523     8% /opt
/dev/fslv00      25165824  10337756   59%       38     1% /tsm
/dev/scrlv       78643200  75589416    4%      904     1% /scratch
/dev/usbms0      78125000  77806612    1%        4     1% /usb0
/dev/usbms1      78125000  77806612    1%        4     1% /usb1

Excellent. I wrote to it, unmounted, remounted, and the file was still there.

Now, if you want it to automatically mount on boot, manually edit the /etc/filesystems and add these 2 entries:

        dev             = /dev/usbms0
        vfs             = jfs2
        log             = INLINE
        mount           = true
        options         = rw

        dev             = /dev/usbms1
        vfs             = jfs2
        log             = INLINE
        mount           = true
        options         = rw
        account         = false

OK, great, but what about this `USB 1.1 performance only` note in the AIX readmes? That also no longer applies. Looking at lsdev after the AIX updates, we see the USB2 device showed up as usbhc2:

# lsdev -C | grep -i usb
usb0       Available               USB System Software
usbhc0     Available 20-60         USB Host Controller (33103500)
usbhc1     Available 20-61         USB Host Controller (33103500)
usbhc2     Available 20-62         USB Enhanced Host Controller (3310e000)
usbms0     Available 2.2           USB Mass Storage
usbms1     Available 2.3           USB Mass Storage

As proof, a simple DD test to check performance:

# time dd if=/dev/zero of=/usb0/test1g bs=256k count=4k
4096+0 records in.
4096+0 records out.

real    0m57.68s
user    0m0.08s
sys     0m13.40s

So on our 2-way 375MHz 7044-260, it writes 142 mbit/sec to the device using 23.2% CPU (half of one CPU). Later testing proved this to be the same speed for FAT32 on Windows XP for these same devices. This is a far cry from the 480 mbit/sec limit of USB 2.0, but it definitely exceeds USB 1.1’s limit of 12 mbit/sec.

Great, that sounds usable. What if I want to move the device?
# umount /usb0

  1. rmdev -l usbms0

unplug the cable
plug it into the new system
# cfgmgr -l usb0
mount or /etc/filesystems as before

If you needed RAID, mirroring, or striping, you could use an eSATA port expander (about $100) to merge up to 5 drives into one device (JBOD, RAID0, RAID1, RAID5). You’re still limited to 480mbit (60mbyte) per second per USB controller, so keep that in mind.

We have a spare 1TB drive, so I will probably test performance on it also. I’m anticipating it will get 300 mbit or so with DD, since that should tap out one whole CPU on this system.

Keep in mind that the 480mbit (60mbyte) per second per USB controller limit has an effective speed of 320mbit (40mbyte) per second due to USB sof/eof timing.

As a final note, if you want to move the drive BACK to a Windows system, the MBR and Partition Table will be overwritten by JFS2 structures. XP Disk Manager may be confused and may leave you with chunks of the disk marked as unremovable partitions. Any free partitioning software worth its salt, or even a Linux Recovery CD should be able to wipe this clean for you and build a new FAT32 primary partition across the whole drive.

Suffice it to say that if you’re willing to do a little but of manual work for the set-up, it’s very usable.

USB 2.0 support
The EHCI driver is devices.pci.3310e000.rte, and the current version is That should be version matched with 33103500 which is the UHCI driver.

As things move forward, this may be moot. USBMS boot support issues are being resolved. That implies that the devices may be supported for VGs in the future.

Also, APAR IZ61425 was the fix for EHCI enablement.

USB MS mksysb Boot

Comments are closed.