SAN multipathing in OS X 10.5 Leopard
Hello,
Would anyone be so kind as to clarify for me the multipathing support for FC SAN connections in OS X Leopard both server and workstation? Is there support natively or do I need to purchase an extra tool like Xsan?
I would like to connect a number of MacPros to a FC SAN and would like them all to be multipathed. Each MacPro has 10.5.6 and an Apple dual port FC HBA fitted. They are connected to a NetApp FAS3040 SAN via a set of Brocade switches. If I connect them up multipathed "as-is", each LUN appears in the Disk Utility multiple times just as if there was no multipathing software configured. What do I need in order to set up the multipaths so that each LUN only appears once?
Many thanks,
Richard.
You are quite right, it does "just work", but it appears to work in a different way from most other implementations.
I have found through experimentation that when multiple paths are presented to the same disk array controller port, then OS X does indeed multipath the LUNs. But when multiple paths are presented that go through different controller ports, then the LUN appears once for each controller port. So if you have connected in 2 controller ports, the LUN appears twice, 3 controller ports, you get 3 LUNS etc. Therefore, it looks like OS X virtualises the target and not the LUN.
This is very irritating, to multipath correctly in OS X, this means that the disk array you buy has to support controller virtualisation. The NetApp ones do through the "Single Image" mode where all controllers appear as 1 device (a single WWN). It would be good if OS X virtualised the LUN like most other multipathing solutions.
Similar Messages
-
SAN design : core edge and dual-homing access switch
Hello all.
It may sound as a dumb question (from a LAN guy) but when designing a core/edge or edge/ecore/edge design, why do we connect access switches to both core switches ? Doesn't it break the isolation of a dual fabric backbone ?
If an access switch fails the fault (bug or anything else) will propagate to both core switches ? Am I wrong ?
Example :
http://www.cisco.com/en/US/prod/collateral/modules/ps5991/prod_white_paper0900aecd8044c807_ps5990_Products_White_Paper.html
or from netrworkers sessions in 2006Answer also from LAN guy,
Most likely this design diagram is due to assumption that there is no use of VSANs and SAN Multipathing drivers in host.
Following is excerpt from same like yo posted.
"SAN designs should always use two isolated fabrics for high availability, with both hosts and storage connecting to both fabrics. Multipathing software should be deployed on the hosts to manage connectivity between the host and storage so that I/O uses both paths, and there is non-disruptive failover between fabrics in the event of a problem in one fabric. Fabric isolation can be achieved using either VSANs, or dual physical switches. Both provide separation of fabric services, although it could be argued that multiple physical fabrics provide increased physical protection (e.g. protection against a sprinkler head failing above a switch) and protection against equipment failure. " -
How to configure or remove LUN's?
a set of three OVM servers as 1 manager and two servers using SAN multipathing
SAN team assigned 3 new LUN's to my Oracle VM servers release 2.2.2
I went through the bellow in the first server and every thing went fine and I got to view the new added disks in # ls -l /dev/disk/by-id and # ls -l /dev/mpath/
# rescan-scsi-bus.sh _##the contents of this script is in the end of this page_
# mkfs.ocfs2 -N 8 -T datafiles /dev/mapper/mpath## (to creating cluster file system)
# /opt/ovs-agent-latest/utils/repos.py –n /dev/mapper/mpath## ( to add new multipath disk to storage pool)
# /opt/ovs-agent-latest/utils/repos.py –l (confirmed adding the disk)
then,, while doing the same to the other server and after running rescan-scsi-bus.sh script! I couldn't view the LUN's under# ls -l /dev/mpath/ but they were there in # ls -l /dev/disk/by-id as following
lrwxrwxrwx 1 root root 10 Mar 24 13:41 scsi-360060e80054834000000483400009609 -> ../../sdgj
lrwxrwxrwx 1 root root 10 Mar 24 13:41 scsi-360060e8005483400000048340000960a -> ../../sdgk
lrwxrwxrwx 1 root root 10 Mar 24 13:41 scsi-360060e8005483400000048340000960b -> ../../sdgl
Now am stuck in the middle as I couldn't go forward to do the same i did to the first server and also couldn't delete those newly added LUN's from the second server
===================================================================================================
#cat rescan-scsi-bus.sh
#!/bin/bash
# Skript to rescan SCSI bus, using the
# scsi add-single-device mechanism
# (c) 1998--2008 Kurt Garloff <[email protected]>, GNU GPL v2 or later
# (c) 2006--2008 Hannes Reinecke, GNU GPL v2 or later
# $Id: rescan-scsi-bus.sh-1.29,v 1.1 2009/03/12 11:03:19 dhorak Exp $
setcolor ()
red="\e[0;31m"
green="\e[0;32m"
yellow="\e[0;33m"
bold="\e[0;1m"
norm="\e[0;0m"
unsetcolor ()
red=""; green=""
yellow=""; norm=""
# Return hosts. sysfs must be mounted
findhosts_26 ()
hosts=
for hostdir in /sys/class/scsi_host/host*; do
hostno=${hostdir#/sys/class/scsi_host/host}
if [ -f $hostdir/isp_name ] ; then
hostname="qla2xxx"
elif [ -f $hostdir/lpfc_drvr_version ] ; then
hostname="lpfc"
else
hostname=`cat $hostdir/proc_name`
fi
hosts="$hosts $hostno"
echo "Host adapter $hostno ($hostname) found."
done
if [ -z "$hosts" ] ; then
echo "No SCSI host adapters found in sysfs"
exit 1;
fi
# Return hosts. /proc/scsi/HOSTADAPTER/? must exist
findhosts ()
hosts=
for driverdir in /proc/scsi/*; do
driver=${driverdir#/proc/scsi/}
if test $driver = scsi -o $driver = sg -o $driver = dummy -o $driver = device_info; then continue; fi
for hostdir in $driverdir/*; do
name=${hostdir#/proc/scsi/*/}
if test $name = add_map -o $name = map -o $name = mod_parm; then continue; fi
num=$name
driverinfo=$driver
if test -r $hostdir/status; then
num=$(printf '%d\n' `sed -n 's/SCSI host number://p' $hostdir/status`)
driverinfo="$driver:$name"
fi
hosts="$hosts $num"
echo "Host adapter $num ($driverinfo) found."
done
done
printtype ()
local type=$1
case "$type" in
0) echo "Direct-Access " ;;
1) echo "Sequential-Access" ;;
2) echo "Printer " ;;
3) echo "Processor " ;;
4) echo "WORM " ;;
5) echo "CD-ROM " ;;
6) echo "Scanner " ;;
7) echo "Optical Device " ;;
8) echo "Medium Changer " ;;
9) echo "Communications " ;;
10) echo "Unknown " ;;
11) echo "Unknown " ;;
12) echo "RAID " ;;
13) echo "Enclosure " ;;
14) echo "Direct-Access-RBC" ;;
*) echo "Unknown " ;;
esac
# Get /proc/scsi/scsi info for device $host:$channel:$id:$lun
# Optional parameter: Number of lines after first (default = 2),
# result in SCSISTR, return code 1 means empty.
procscsiscsi ()
if test -z "$1"; then LN=2; else LN=$1; fi
CHANNEL=`printf "%02i" $channel`
ID=`printf "%02i" $id`
LUN=`printf "%02i" $lun`
if [ -d /sys/class/scsi_device ]; then
SCSIPATH="/sys/class/scsi_device/${host}:${channel}:${id}:${lun}"
if [ -d "$SCSIPATH" ] ; then
SCSISTR="Host: scsi${host} Channel: $CHANNEL Id: $ID Lun: $LUN"
if [ "$LN" -gt 0 ] ; then
IVEND=$(cat ${SCSIPATH}/device/vendor)
IPROD=$(cat ${SCSIPATH}/device/model)
IPREV=$(cat ${SCSIPATH}/device/rev)
SCSIDEV=$(printf ' Vendor: %-08s Model: %-16s Rev: %-4s' "$IVEND" "$IPROD" "$IPREV")
SCSISTR="$SCSISTR
$SCSIDEV"
fi
if [ "$LN" -gt 1 ] ; then
ILVL=$(cat ${SCSIPATH}/device/scsi_level)
type=$(cat ${SCSIPATH}/device/type)
ITYPE=$(printtype $type)
SCSITMP=$(printf ' Type: %-16s ANSI SCSI revision: %02d' "$ITYPE" "$((ILVL - 1))")
SCSISTR="$SCSISTR
$SCSITMP"
fi
else
return 1
fi
else
grepstr="scsi$host Channel: $CHANNEL Id: $ID Lun: $LUN"
SCSISTR=`cat /proc/scsi/scsi | grep -A$LN -e"$grepstr"`
fi
if test -z "$SCSISTR"; then return 1; else return 0; fi
# Find sg device with 2.6 sysfs support
sgdevice26 ()
if test -e /sys/class/scsi_device/$host\:$channel\:$id\:$lun/device/generic; then
SGDEV=`readlink /sys/class/scsi_device/$host\:$channel\:$id\:$lun/device/generic`
SGDEV=`basename $SGDEV`
else
for SGDEV in /sys/class/scsi_generic/sg*; do
DEV=`readlink $SGDEV/device`
if test "${DEV##*/}" = "$host:$channel:$id:$lun"; then
SGDEV=`basename $SGDEV`; return
fi
done
SGDEV=""
fi
# Find sg device with 2.4 report-devs extensions
sgdevice24 ()
if procscsiscsi 3; then
SGDEV=`echo "$SCSISTR" | grep 'Attached drivers:' | sed 's/^ Attached drivers: \(sg[0-9]\).*/\1/'`
fi
# Find sg device that belongs to SCSI device $host $channel $id $lun
sgdevice ()
SGDEV=
if test -d /sys/class/scsi_device; then
sgdevice26
else
DRV=`grep 'Attached drivers:' /proc/scsi/scsi 2>/dev/null`
repdevstat=$((1-$?))
if [ $repdevstat = 0 ]; then
echo "scsi report-devs 1" >/proc/scsi/scsi
DRV=`grep 'Attached drivers:' /proc/scsi/scsi 2>/dev/null`
if [ $? = 1 ]; then return; fi
fi
if ! `echo $DRV | grep 'drivers: sg' >/dev/null`; then
modprobe sg
fi
sgdevice24
if [ $repdevstat = 0 ]; then
echo "scsi report-devs 0" >/proc/scsi/scsi
fi
fi
# Test if SCSI device is still responding to commands
testonline ()
: testonline
if test ! -x /usr/bin/sg_turs; then return 0; fi
sgdevice
if test -z "$SGDEV"; then return 0; fi
sg_turs /dev/$SGDEV >/dev/null 2>&1
RC=$?
# echo -e "\e[A\e[A\e[A${yellow}Test existence of $SGDEV = $RC ${norm} \n\n\n"
if test $RC = 1; then return $RC; fi
# OK, device online, compare INQUIRY string
INQ=`sg_inq $sg_len_arg /dev/$SGDEV`
IVEND=`echo "$INQ" | grep 'Vendor identification:' | sed 's/^[^:]*: \(.*\)$/\1/'`
IPROD=`echo "$INQ" | grep 'Product identification:' | sed 's/^[^:]*: \(.*\)$/\1/'`
IPREV=`echo "$INQ" | grep 'Product revision level:' | sed 's/^[^:]*: \(.*\)$/\1/'`
STR=`printf " Vendor: %-08s Model: %-16s Rev: %-4s" "$IVEND" "$IPROD" "$IPREV"`
IPTYPE=`echo "$INQ" | sed -n 's/.* Device_type=\([0-9]*\) .*/\1/p'`
IPQUAL=`echo "$INQ" | sed -n 's/ PQual=\([0-9]\) Device.*/\1/p'`
if [ "$IPQUAL" != 0 ] ; then
echo -e "\e[A\e[A\e[A\e[A${red}$SGDEV changed: ${bold}\nLU not available (PQual $IPQUAL)${norm}\n\n\n"
return 2
fi
TYPE=$(printtype $IPTYPE)
procscsiscsi
TMPSTR=`echo "$SCSISTR" | grep 'Vendor:'`
if [ "$TMPSTR" != "$STR" ]; then
echo -e "\e[A\e[A\e[A\e[A${red}$SGDEV changed: ${bold}\nfrom:${SCSISTR#* } \nto: $STR ${norm}\n\n\n"
return 1
fi
TMPSTR=`echo "$SCSISTR" | sed -n 's/.*Type: *\(.*\) ANSI./\1/p'`
if [ $TMPSTR != $TYPE ] ; then
echo -e "\e[A\e[A\e[A\e[A${red}$SGDEV changed: ${bold}\nfrom:${TMPSTR} \nto: $TYPE ${norm}\n\n\n"
return 1
fi
return $RC
# Test if SCSI device $host $channen $id $lun exists
# Outputs description from /proc/scsi/scsi, returns SCSISTR
testexist ()
: testexist
SCSISTR=
if procscsiscsi; then
echo "$SCSISTR" | head -n1
echo "$SCSISTR" | tail -n2 | pr -o4 -l1
fi
# Returns the list of existing channels per host
chanlist ()
local hcil
local cil
local chan
local tmpchan
for dev in /sys/class/scsi_device/${host}:* ; do
[ -d $dev ] || continue;
hcil=${dev##*/}
cil=${hcil#*:}
chan=${cil%%:*}
for tmpchan in $channelsearch ; do
if test "$chan" -eq $tmpchan ; then
chan=
fi
done
if test -n "$chan" ; then
channelsearch="$channelsearch $chan"
fi
done
# Returns the list of existing targets per host
idlist ()
local hcil
local cil
local il
local target
local tmpid
for dev in /sys/class/scsi_device/${host}:${channel}:* ; do
[ -d $dev ] || continue;
hcil=${dev##*/}
cil=${hcil#*:}
il=${cil#*:}
target=${il%%:*}
for tmpid in $idsearch ; do
if test "$target" -eq $tmpid ; then
target=
break
fi
done
if test -n "$target" ; then
idsearch="$idsearch $target"
fi
done
# Returns the list of existing LUNs
getluns ()
if test ! -x /usr/bin/sg_luns; then return ""; fi
sgdevice
if test -z "$SGDEV"; then return ""; fi
sg_luns -d /dev/$SGDEV | sed -n 's/.*lun=\(.*\)/\1/p'
# Perform scan on a single lun
dolunscan()
SCSISTR=
devnr="$host $channel $id $lun"
echo "Scanning for device $devnr ..."
printf "${yellow}OLD: $norm"
testexist
: f $remove s $SCSISTR
if test "$remove" -a "$SCSISTR"; then
# Device exists: Test whether it's still online
# (testonline returns 1 if it's gone or has changed)
testonline
RC=$?
if test $RC != 0 -o ! -z "$forceremove"; then
echo -en "\r\e[A\e[A\e[A${red}REM: "
echo "$SCSISTR" | head -n1
echo -e "${norm}\e[B\e[B"
if test -e /sys/class/scsi_device/${host}:${channel}:${id}:${lun}/device; then
echo 1 > /sys/class/scsi_device/${host}:${channel}:${id}:${lun}/device/delete
if test $RC -eq 1 -o $lun -eq 0 ; then
# Try readding, should fail if device is gone
echo "$channel $id $lun" > /sys/class/scsi_host/host${host}/scan
fi
else
echo "scsi remove-single-device $devnr" > /proc/scsi/scsi
if test $RC -eq 1 -o $lun -eq 0 ; then
# Try readding, should fail if device is gone
echo "scsi add-single-device $devnr" > /proc/scsi/scsi
fi
fi
fi
if test $RC = 0 -o "$forcerescan" ; then
if test -e /sys/class/scsi_device/${host}:${channel}:${id}:${lun}/device; then
echo 1 > /sys/class/scsi_device/${host}:${channel}:${id}:${lun}/device/rescan
fi
fi
printf "\r\x1b[A\x1b[A\x1b[A${yellow}OLD: $norm"
testexist
if test -z "$SCSISTR"; then
printf "\r${red}DEL: $norm\r\n\n"
let rmvd+=1;
return 1
fi
fi
if test -z "$SCSISTR"; then
# Device does not exist, try to add
printf "\r${green}NEW: $norm"
if test -e /sys/class/scsi_host/host${host}/scan; then
echo "$channel $id $lun" > /sys/class/scsi_host/host${host}/scan 2> /dev/null
else
echo "scsi add-single-device $devnr" > /proc/scsi/scsi
fi
testexist
if test -z "$SCSISTR"; then
# Device not present
printf "\r\x1b[A";
# Optimization: if lun==0, stop here (only if in non-remove mode)
if test $lun = 0 -a -z "$remove" -a $optscan = 1; then
break;
fi
else
let found+=1;
fi
fi
# Perform report lun scan
doreportlun()
lun=
SCSISTR=
for dev in /sys/class/scsi_device/${host}:${channel}:${id}:*; do
if [ -d "$dev" ]; then
lun=${dev##*:}
break
else
continue
fi
done
#If not a single LUN is present then assign lun=0
if [ -z $lun ]; then
lun=0
devnr="$host $channel $id $lun"
echo "Scanning for device $devnr ..."
printf "${yellow}OLD: $norm"
testexist
if test -z "$SCSISTR"; then
# Device does not exist, try to add
printf "\r${green}NEW: $norm"
if test -e /sys/class/scsi_host/host${host}/scan; then
echo "$channel $id $lun" > /sys/class/scsi_host/host${host}/scan 2> /dev/null
else
echo "scsi add-single-device $devnr" > /proc/scsi/scsi
fi
testexist
if test -z "$SCSISTR"; then
# Device not present
printf "\r\x1b[A";
lunsearch=
return
fi
fi
fi
flag=0
lun_search=" `getluns`"
# Set flag=1 if all the LUNs are removed
if [ "${#lun_search}" = "1" ]; then
flag=1
fi
lunremove=
# Check existing luns
for dev in /sys/class/scsi_device/${host}:${channel}:${id}:*; do
[ -d "$dev" ] || continue
lun=${dev##*:}
if [ "$flag" = "1" ]; then
lunremove="$lunremove $lun"
fi
newsearch=
oldsearch="$lun_search"
for tmplun in $lun_search; do
if test $tmplun -eq $lun ; then
dolunscan
else
newsearch="$newsearch $tmplun"
fi
done
if [ "${#oldsearch}" = "${#newsearch}" ] ; then
# Stale lun
lunremove="$lunremove $lun"
fi
lun_search="$newsearch"
done
# Add new ones and check stale ones
for lun in $lun_search $lunremove; do
dolunscan
done
# Perform search (scan $host)
dosearch ()
if test -z "$channelsearch" ; then
chanlist
fi
for channel in $channelsearch; do
if test -z "$idsearch" ; then
idlist
fi
for id in $idsearch; do
if test -z "$lunsearch" ; then
doreportlun
else
for lun in $lunsearch; do
dolunscan
done
fi
done
done
# main
if test @$1 = @--help -o @$1 = @-h -o @$1 = @-?; then
echo "Usage: rescan-scsi-bus.sh [options] [host [host ...]]"
echo "Options:"
echo " -l activates scanning for LUNs 0-7 [default: 0]"
echo " -L NUM activates scanning for LUNs 0--NUM [default: 0]"
echo " -w scan for target device IDs 0 .. 15 [default: 0-7]"
echo " -c enables scanning of channels 0 1 [default: 0]"
echo " -r enables removing of devices [default: disabled]"
echo " -i issue a FibreChannel LIP reset [default: disabled]"
echo "--remove: same as -r"
echo "--issue-lip: same as -i"
echo "--forcerescan: Rescan existing devices"
echo "--forceremove: Remove and readd every device (DANGEROUS)"
echo "--nooptscan: don't stop looking for LUNs is 0 is not found"
echo "--color: use coloured prefixes OLD/NEW/DEL"
echo "--hosts=LIST: Scan only host(s) in LIST"
echo "--channels=LIST: Scan only channel(s) in LIST"
echo "--ids=LIST: Scan only target ID(s) in LIST"
echo "--luns=LIST: Scan only lun(s) in LIST"
echo " Host numbers may thus be specified either directly on cmd line (deprecated) or"
echo " or with the --hosts=LIST parameter (recommended)."
echo "LIST: A[-B][,C[-D]]... is a comma separated list of single values and ranges"
echo " (No spaces allowed.)"
exit 0
fi
expandlist ()
list=$1
result=""
first=${list%%,*}
rest=${list#*,}
while test ! -z "$first"; do
beg=${first%%-*};
if test "$beg" = "$first"; then
result="$result $beg";
else
end=${first#*-}
result="$result `seq $beg $end`"
fi
test "$rest" = "$first" && rest=""
first=${rest%%,*}
rest=${rest#*,}
done
echo $result
if test ! -d /sys/class/scsi_host/ -a ! -d /proc/scsi/; then
echo "Error: SCSI subsystem not active"
exit 1
fi
# Make sure sg is there
modprobe sg >/dev/null 2>&1
sg_version=$(sg_inq -V 2>&1 | cut -d " " -f 3)
sg_version=${sg_version##0.}
if [ "$sg_version" -lt 70 ] ; then
sg_len_arg="-36"
else
sg_len_arg="--len=36"
fi
# defaults
unsetcolor
lunsearch=""
idsearch=`seq 0 7`
channelsearch=""
remove=
forceremove=
optscan=1
if test -d /sys/class/scsi_host; then
findhosts_26
else
findhosts
fi
# Scan options
opt="$1"
while test ! -z "$opt" -a -z "${opt##-*}"; do
opt=${opt#-}
case "$opt" in
l) lunsearch=`seq 0 7` ;;
L) lunsearch=`seq 0 $2`; shift ;;
w) idsearch=`seq 0 15` ;;
c) channelsearch="0 1" ;;
r) remove=1 ;;
i) lipreset=1 ;;
-remove) remove=1 ;;
-forcerescan) remove=1; forcerescan=1 ;;
-forceremove) remove=1; forceremove=1 ;;
-hosts=*) arg=${opt#-hosts=}; hosts=`expandlist $arg` ;;
-channels=*) arg=${opt#-channels=};channelsearch=`expandlist $arg` ;;
-ids=*) arg=${opt#-ids=}; idsearch=`expandlist $arg` ;;
-luns=*) arg=${opt#-luns=}; lunsearch=`expandlist $arg` ;;
-color) setcolor ;;
-nooptscan) optscan=0 ;;
-issue-lip) lipreset=1 ;;
*) echo "Unknown option -$opt !" ;;
esac
shift
opt="$1"
done
# Hosts given ?
if test "@$1" != "@"; then
hosts=$*;
fi
echo "Scanning SCSI subsystem for new devices"
test -z "$remove" || echo " and remove devices that have disappeared"
declare -i found=0
declare -i rmvd=0
for host in $hosts; do
echo -n "Scanning host $host "
if test -e /sys/class/fc_host/host$host ; then
if test -n "$lipreset" ; then
echo 1 > /sys/class/fc_host/host$host/issue_lip 2> /dev/null;
fi
echo "- - -" > /sys/class/scsi_host/host$host/scan 2> /dev/null;
channelsearch=""
idsearch=""
fi
[ -n "$channelsearch" ] && echo -n "channels $channelsearch "
echo -n "for "
if [ -n "$idsearch" ] ; then
echo -n " SCSI target IDs " $idsearch
else
echo -n " all SCSI target IDs"
fi
if [ -n "$lunsearch" ] ; then
echo ", LUNs " $lunsearch
else
echo ", all LUNs"
fi
dosearch;
done
echo "$found new device(s) found. "
echo "$rmvd device(s) removed. "
===================================================================================================
Edited by: 923185 on Mar 25, 2012 7:54 AMIf you cannot see the device then it is not attached or mapped by multipath.
Are you using the same kernel on both servers? -
Hello,
I try to config lion server as file server for a windows application we use at work. All other computers are windows 7 or XP, lion server is the only mac. I choose lion server because it's size, quality and personal love of apple products.
10.7.2 lion server's samba file sharing works almost perfectly with all my windows machines, I can copy, delete, modify any text files or office files without any issue, but the most important windows application for my business doesn't work with samba file sharing. After some digging, I found it is because windows program can't read or write INI file stored on lion share. Windows API GetPrivateProfileString always returns empty if the INI file is store on lion share.
You can download a small application for read/write windows INI file from codeproject.com to test this problem:
http://www.codeproject.com/KB/files/ini.aspx
I can open/edit the in file using any text editor without any problem. The only problem is with those windows APIs. ACL is turned on for my lion share and assigned "delete" rights to samba users.
I install samba3 on the same server; it works perfectly with windows API. My windows program also works. Looks like there is something wrong with lion server's sambax.
I'd prefer to use built-in samba even I have samba3 working. Built-in samba is very immature right now, but considered how young it is, I will give apple some time to make it mature.
Does anyone have same issue or knows how to fix it?
Thanks,
Michael.All the memory is fine. The server rarely if ever goes down when there are only around 10-12 users connected. When there are 20+ users connected and working heavily it goes down often. When I say working heavily, I mean they are transferring huge files to the SAN (100GB+), sometimes 5 at a time per user, and there are a bunch of others who are reading large video files at a minimum of 220MB/sec from the SAN.
Though this worked on Snow Leopard without any issues, Lion just doesn't seem to be able to handle it. The odd thing is, on Snow Leopard there was only a single 1GB ethernet connection to a NAS system, whereas with Lion we have a much more powerful machine with a 6-port 10GB ethernet card and a 4 lane 8GB fiber card to a true SAN. You would think that the newer scenario with Lion would handle far more users with ease.
So far, very disappointing with regards to Lion's file serving performance. -
Lion Server File Sharing Crashes
We have a brand new Mac Pro (12 core with 64GB of RAM) running OS X Lion Server in a corporate environment. The server is running only file sharing and software update servers, and we have around 40 users who need to be connected over AFP at all times. This company runs 24/7 and we have an XSan environment using an ATTO Celerity 8GB 4 channel fiber card (84EN) along with a 6 port 10GB Ethernet card. The Ethernet card is configured in a link aggregation bond using ports 1-4. The idea is that clients who do not have fiber cards installed on their machines can still connect to the SAN via Ethernet and this file server. They AFP connect to the share, and of course the share is the SAN. It's a single mount point and everyone has read/write access.
The issue is that this machine keeps crashing (multiple times per day) and I cannot find any reason why. Syslog shows nothing of value and I've called into Apple Enterprise Support who also brought nothing to the table.
We initially had SMB and AFP file sharing activated but as soon as a Windows 7 client connected the machine was brought down. So, I disabled SMB via terminal (sudo serveradmin stop smb) and deactivated it via the Server app for the share point). That at least allows the machine to be up for 4-6 hours before crashing again.
This is seemingly the simplest of setups for file sharing and I would've thought that this beast of a machine would be able to handle being a file server without issue for far more than 40 clients. I'm seeing high CPU usage, which Apple support told me was perfectly normal (around 60% on the kernel_task process and around 55% on the AppleFileServer process). It also seems to consume all 64GB of memory, though it shows 60GB as inactive, but at the same time it's paging in and out.
Virtually all of the clients are running Lion (10.7.4), the server itself is running 10.7.4. There are a few ethernet connected clients running 10.6 along with two running 10.5. As I mentioned I disabled SMB so there are no Windows computers connecting to this machine at this time (though it would be nice to get that functionality back if AFP can be stabilized).
None of this makes any sense to me and I'm hoping someone can shed some light on this issue. This company simply cannot be down, especially not multiple times per day. The only way to bring things back and running from a crash is to hard boot the machine via the power button as you cannot perform a restart or a shutdown. Once the machine comes back up everything is back to working order for a few more hours until it happens again.All the memory is fine. The server rarely if ever goes down when there are only around 10-12 users connected. When there are 20+ users connected and working heavily it goes down often. When I say working heavily, I mean they are transferring huge files to the SAN (100GB+), sometimes 5 at a time per user, and there are a bunch of others who are reading large video files at a minimum of 220MB/sec from the SAN.
Though this worked on Snow Leopard without any issues, Lion just doesn't seem to be able to handle it. The odd thing is, on Snow Leopard there was only a single 1GB ethernet connection to a NAS system, whereas with Lion we have a much more powerful machine with a 6-port 10GB ethernet card and a 4 lane 8GB fiber card to a true SAN. You would think that the newer scenario with Lion would handle far more users with ease.
So far, very disappointing with regards to Lion's file serving performance. -
[AS] Saving a file without creating an idlk file
Hi there,
I have an AppleScript that open an InDesign template (indt), import a XML file and then save the document to another folder than the one where the XML file and the template are living.
The problem, and I don't see how to resolve it, is that InDesign always create a lock file (idlk) with the new document and I don't seem to find a way to close the new document.
Here's the script:
Translating:
chemin_fichier_xml == path_to_xml_file
chemin_gabarit_indesign == path_to_indesign_template
chemin_nouveau_fichier_indesign == path_to_new_indesign_file
on genere_fichier_indesign(chemin_fichier_xml, chemin_gabarit_indesign, chemin_nouveau_fichier_indesign)
tell application "Adobe InDesign CS4"
set ce_document to open chemin_gabarit_indesign without showing window
tell ce_document
tell XML import preferences
set import style to merge import
set repeat text elements to true
set import text into tables to true
set import CALS tables to true
end tell
import XML from chemin_fichier_xml
set le_nouveau_document to chemin_nouveau_fichier_indesign
tell ce_document to save to le_nouveau_document with force save
(* this will generate an error *)
-- try
-- close ce_document saving no
-- close le_nouveau_document saving yes
-- end try
end tell
end tell
end genere_fichier_indesign
TIA
Cheers
-EmmanuelHello,
Thanks for replying.
I still get an idlk file and an error.
--> Adobe InDesign CS4 got an error: Can’t get document 1 of document "Sans titre-3"
I tried other variation:
close file le_nouveau_document saving no
--> Can’t get file "HD:Users:stereo:Applications:Automatisation Téléhoraires:Dossiers:InDesign - À valider:StThomasTimesJournal_20100131_1009_1_Quot.indd" of document "Sans titre-2".
close documents saving no
--> Can’t get every document of document "Sans titre-3"
I'm on Snow Leopard 10.6.2 and use ID CS4 v6
Cheers
-Emmanuel -
Win2008 64Bit Collection Error "Result has Repeating Key Value" On Host Per
Win2008 64Bit Collection Error "Result has Repeating Key Value" On Host Performance Tab [ID 864908.1]
Modified 29-JUL-2009 Type PROBLEM Status MODERATED
In this Document
Symptoms
Cause
Solution
References
This document is being delivered to you via Oracle Support's Rapid Visibility (RaV) process, and therefore has not been subject to an independent technical review.
Applies to:
Enterprise Manager Grid Control - Version: 10.2.0.5
Microsoft Windows Server 2008 x64 (AMD64/EM64T)
Symptoms
OMS: 10.2.0.5
Target Agent: 10.2.0.5 Windows 2008 Standard Edition Service Pack 1 64-bit
Happens for all Windows 2008 64-bit hosts with SAN drives using multipathing.
When accessing the Host > Performance tab on Windows 2008 64-bit host, get a Metric Collection Error:
Exception: oracle.sysman.emSDK.emd.comm.MetricGetException: Result has repeating key value on
drive 0: for diskactivity metric
emagent.trc shows:
2009-06-19 11:19:06,125 Thread-6736 ERROR engine:
[host, <hostname>,Load] : nmeegd_GetMetricData failed : Result has repeating key value : 0 C: U: C: U:
Collection Error:
Error getting data for target <hostname>. Exception:
oracle.sysman.emSDK.emd.comm.MetricGetException: Result has repeating key value : 0 C: U: C: U:
Switching to the last 24 hrs view.
Cause
Microsoft issue with Windows 2008 64-bit and SAN multipath.
Bug 8214155: ERROR RESULT HAS REPEATING KEY VALUE: <DISK DRIVES> ON DBCONSOLE
Solution
Contact Microsoft Support to fix the issue in Performance Monitor's PhysicalDisk object counter since "nmupm diskactivity" gets the information from the PhysicalDisk object counter.
References:
http://technet.microsoft.com/en-us/library/cc768048.aspx
http://www.microsoft.com/technet/prodtechnol/windows2000serv/reskit/prork/pree_exa_swlz.mspx?mfr=true
References
BUG:8214155 - ERROR RESULT HAS REPEATING KEY VALUE: ON DBCONSOLE
This bug I found on Metalink but no workaround available. I've got the same problem everytime I view performance tab on Microsoft Windows 2008 x64. Does anyone know how to solve it?from the emoms.log
2009-12-08 14:25:09,171 [EMUI_14_25_05_/console/monitoring/hostSummary$pageType=current$ctxType=Hosts$selTab=1$target=CITIZEN02$type=host] ERROR host.HostSummaryDataObject getHostSummary.1215 - Result has repeating key value : 0 C: D: C: D:
oracle.sysman.emSDK.emd.comm.MetricGetException: Result has repeating key value : 0 C: D: C: D:
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
at java.lang.Class.newInstance0(Class.java:308)
at java.lang.Class.newInstance(Class.java:261)
at oracle.sysman.emSDK.xml.DelegatingHandler.getObjForTag(DelegatingHandler.java:121)
at oracle.sysman.emSDK.xml.DelegatingHandler.startElement(DelegatingHandler.java:170)
at org.xml.sax.helpers.ParserAdapter.startElement(ParserAdapter.java:597)
at oracle.xml.parser.v2.XMLContentHandler.startElement(XMLContentHandler.java:180)
at oracle.xml.parser.v2.NonValidatingParser.parseElement(NonValidatingParser.java:1227)
at oracle.xml.parser.v2.NonValidatingParser.parseRootElement(NonValidatingParser.java:314)
at oracle.xml.parser.v2.NonValidatingParser.parseDocument(NonValidatingParser.java:281)
at oracle.xml.parser.v2.XMLParser.parse(XMLParser.java:195)
at org.xml.sax.helpers.ParserAdapter.parse(ParserAdapter.java:431)
at oracle.sysman.emSDK.xml.DelegatingHandler.parseObj(DelegatingHandler.java:296)
at oracle.sysman.emSDK.emd.comm.EMDClient.parseStreamResponseContents(EMDClient.java:2883)
at oracle.sysman.emSDK.emd.comm.EMDClient.parseResponseStream(EMDClient.java:2805)
at oracle.sysman.emSDK.emd.comm.EMDClient.getResponseForRequest_(EMDClient.java:2516)
at oracle.sysman.emSDK.emd.comm.EMDClient.getResponseForRequest_(EMDClient.java:2450)
at oracle.sysman.emSDK.emd.comm.EMDClient.getResponseForRequest(EMDClient.java:2367)
at oracle.sysman.emSDK.emd.comm.EMDClient.getResponseForRequest(EMDClient.java:2352)
at oracle.sysman.emSDK.emd.comm.EMDClient.getMetrics(EMDClient.java:1120)
at oracle.sysman.eml.mntr.host.HostSummaryDataObject.getHostSummary(HostSummaryDataObject.java:813)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at oracle.cabo.ui.data.provider.MethodDataProvider.getDataObject(Unknown Source)
at oracle.cabo.ui.data.provider.TableDataProvider.getDataObject(Unknown Source)
at oracle.cabo.ui.data.provider.CachingDataProvider.getDataObject(Unknown Source)
at oracle.cabo.ui.data.provider.DataProviderStack.getDataObject(Unknown Source)
at oracle.cabo.ui.LogicalNodeRenderingContext.getDataObject(Unknown Source)
at oracle.cabo.ui.RootRenderingContext.getDataObject(Unknown Source)
at oracle.cabo.ui.LogicalNodeRenderingContext.getDataObject(Unknown Source)
at oracle.cabo.ui.RootRenderingContext.getDataObject(Unknown Source)
at oracle.cabo.ui.data.DataBoundValue.getValue(Unknown Source)
at oracle.cabo.ui.BaseUINode.getAttributeValueImpl(Unknown Source)
at oracle.cabo.ui.BaseUINode.getAttributeValue(Unknown Source)
at oracle.cabo.ui.laf.base.TextRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.BaseRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.BaseRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.laf.base.DataScopeRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.BaseRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.BodyRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.BaseRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderIndexedChild(Unknown Source)
at oracle.cabo.ui.BaseRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.DocumentRenderer.renderContent(Unknown Source)
at oracle.cabo.ui.BaseRenderer.render(Unknown Source)
at oracle.cabo.ui.laf.base.xhtml.DocumentRenderer.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.ui.BaseUINode.render(Unknown Source)
at oracle.cabo.servlet.ui.UINodePageRenderer.renderPage(Unknown Source)
at oracle.cabo.servlet.AbstractPageBroker.renderPage(Unknown Source)
at oracle.cabo.servlet.PageBrokerHandler.handleRequest(Unknown Source)
at oracle.cabo.servlet.UIXServlet.doGet(Unknown Source)
at oracle.sysman.emSDK.svlt.EMServlet.doGet(EMServlet.java:368)
at oracle.sysman.eml.app.Console.doGet(Console.java:304)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at com.evermind.server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:65)
at oracle.sysman.eml.app.EMRepLoginFilter.doFilter(EMRepLoginFilter.java:265)
at com.evermind.server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:16)
at oracle.sysman.eml.app.BrowserVersionFilter.doFilter(BrowserVersionFilter.java:122)
at com.evermind.server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:20)
at oracle.sysman.emSDK.svlt.EMRedirectFilter.doFilter(EMRedirectFilter.java:102)
at com.evermind.server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:20)
at oracle.sysman.eml.app.ContextInitFilter.doFilter(ContextInitFilter.java:369)
at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:670)
at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:341)
at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:816)
at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:231)
at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:136)
at -
Hi,
How do we best connect our two 5596's together for redundancy and multipathing, both physically and configuration-wise? I see information about vPC's in the manuals, but I'm not sure if this is really what we need to do. We have a simple design--just servers connecting to the 5596's via fc, then the 5596's connecting to our storage via fc. Thanks!If you are using these for FC SAN connectivity and no Ethernet then you do not need vPC as it is for providing Ethernet port channels across 2 switches.
For FC only you would treat them just like MDS switches. You will not connect them together and each should be in their own VSAN.
The SAN will connect to both and your servers will connect to both.
Your servers will need SAN multipathing software to provide load balancing and redundancy -
Hi everyone,
I need some help about VSAN/VLAN configuration in UCS 2.0 (1s).
Previosly i used to create VLAN dedicated to FCoE traffic, and then create VSAN and map it to previosly defined VLAN to carry trafic. And that works just like it should.
This morning i have upgraded one UCS to 2.0 (1s)
And errors with vsan/vlan configuration begins.
Before update i had created vlans 40 and 41 dedicated to fcoe, and two vsans 10 (mapped to 40) and 20 (mapped to 41).
Erros were as follows :
<faultInst
ack="no"
cause="vlan-misconfigured"
changeSet=""
code="F0833"
created="2011-11-23T12:19:34"
descr="VLAN default is error-misconfigured because of conflicting vlan-id with an fcoe-vlan"
dn="fabric/lan/net-default/fault-F0833"
highestSeverity="critical"
Code : F0833What type of FC switch are the Fabric Interconnects uplinked to? If it is not Cisco then you can create a new VSAN for Fabric A and then change the uplinks and vHBAs in Fabric A to this new VSAN. After Fabric A is done do Fabric B to a different VSAN/FCoE vlan. As long as host SAN multipathing is configured properly then there shouldn't be an outage.
If the uplink switch is Cisco then you will need to take an outage because if you change the FCoE VLAN the vHBAs will logout of both FC fabrics and then log back in. This should only take about 30 seconds though.
The other way is to change each Cisco FC switch to something besides VSAN 1, this can be easily scirpted with a very minor outage and can be done one fabric at a time. VSAN 1 should never be used for production hosts/storage. It is as bad as using VLAN 1 on the Ethernet side.
If your northbound switch isn't Cisco you can do this one Fabric at a time. As long as host multipathing is configured properly then there will not be an outage.
Create a new VSAN for Fabric A
VSAN 20 - FCoE VLAN 920 (make sure this vlan isn't in use, if it is use another non existent VLAN)
For Fabric B
VSAN 40 - FCoE VLAN 940 (make sure this vlan isn't in use, if it is use another non existent VLAN) -
Booting OVM server from multipath SAN
Hi,
I read in the release notes of OVM 3.0.3 that "booting from multipath SAN is not supported". I have a limitation that forces me to use SAN boot.
What is the best practise?
1. Go for local disks for OVM server
or
2. Is there a workaround which will enable use of device-mapper multipathing.
Thanks in advance.Local disks on the servers.
-
About to install FCS2... sans leopard. OSX suggestions?
I'm about to install FCS2. I have avoided installing Leopard on this machine until things have settled down a bit. I was hoping for any suggestions about which OS seems to have been the most stable for other users. I'm going to wipe the box and do a clean install; hold it to QT 7.2.
I have a Dual 2.0Ghz PowerPC Mac running MacOSX 10.4.11 and FCS 2 with nary a hiccup. Smooth as silk. On another drive I have FCS 1 running under 10.4.10...just fine.
I am getting a new MacPro soon. And on it I will run Tiger and FCS 2. Now, this was going to be the NEW MacPros that they announced before MacWorld, but I found that those machine come loaded with Leopard, and will not take a Tiger install. And Apple recommends against installing previous OS versions on new machines. So since the machine I need to buy will be a production machine on a Tiger SAN network (yes, I know that the N in SAN stands for Network...shut it) so I needed a Tiger machine. I'm not ready to try a production machine on Leopard yet.
ANYWAY...FCS 1 originally came as FCP 5...powerPC only. Then the Universal Crossgrade came out where you had to send in your install disks, so you would then have a version of FCS that worked on the Intel machines. FCS 2 is still a Crossgrade...works on PowerPCs and Intels.
Shane -
OS X Leopard does not support SAN
Leopard has a problem with many SAN devices. If you ever eject a mounted network disk, it will never ever come back. Rebooting the machine, the network and the device will not help. It's gone forever.
If the server doesn't appear in the sidebar of the Finder, press Command-K to open the "Connect to Server..." dialog or select it from the "Go" menu.
You may also want to look at: Finder > Preferences > Sidebar and make sure "Connected Servers" and "Bonjour Computers" are selected.
Personally I have no problems connecting to any server or network volume. -
Sans Digital Drives with Snow Leopard-Anyone??
Hey Anyone using Sans Digital drives (USB) with Macbook pro and Snow Lep.
USB drive is crashing my system as soon as I plug it in
Any Help???
MattSans Digital has not tested these drives with SL-every time I call them-they think their drives just should automatically work -oh well
Well what is happening with my drives is- I have a Sans Drive that has 2 HD in it -when they are running separate they will mount fine by USB= once I go to disc utility to rad them together in a mirror raid --once the OS mounts them -SL crashes and here comes the grey screen.
Anyone having issues with the raid control in SL --I had these problems with reg leopard as well but I guess with updates it turned out working just fine .
Matt -
Image Capture, twain sane interface, and Snow Leopard compatibility?
I have downloaded and installed Mattius Ellert's twain sane interface in order to be able to use an old scanner. In order to use it with Image Capture, Ellert's FAQ page describes a procedure for selecting the twain sane interface GUI over the native GUI. However this procedure fails in Snow Leopard; I seem to have no choice but to run the native GUI, with extremely limited functionality. The twain sane interface GUI is still there and still works; it is what comes up if I scan from Microsoft Word or Graphic Convertor. But I would like it to work with Image Capture and related Apple software (preview and the print/fax control panel). Does anyone know of a procedure to do so?
Also does anyone know where this GUI actually lives on the computer? I examined the installed file locations specified in twain-sane interface's bom file, and just found a bunch of .strings and plist files in Image Capture/TWAIN Data Source/Sane.ds/Contents/Resources, plus one file under ....Sne.ds/Contents/MacOS called SANE.Ronald,
The reason you are not seeing this device in Image Capture after installing the TWAIN/SANE stuff is because Apple removed the TWAIN interfaces from Image Capture in Snow Leopard. TWAIN is being deprecated on the Mac. What someone needs to do is develop an ICA/SANE bridge and then Image Capture would work again.
Just trying to help.
Andrew -
Need Update All MACS to Leopard . SAN Questions
Good day. We get Final Cut Server , and now we need to update all Macs for 10.5.0 . Sow i have question , Can i do it without back up , or i need to back up all date first . And also what steps i need to do. Did i need to update Metadate Controller PC or i can update only users Macs.
Did some body try it . I have footage on Raid and have no time to back up it
Thanks.I thought only the machine running Final Cut Server has to be Leopard; are you sure you need to update any of the others? If you are on Xsan 1.4.2 you should be fine with Leopard and Tiger clients on the SAN.
The manual says
You can run Final Cut Server clients on the following computers and operating systems:
Any computers with Mac OS X v10.4 or later installed
Any computers with Microsoft Windows XP or Windows Vista installed
Maybe you are looking for
-
I have iOS 6.0 installed. Im trying to mirror a rented movie from ipad to TV via apple TV. I can hear the movie through TV but not picture (which is still on ipad)
-
No Images loading in Safari 6.0
Hello, Mysteriously Safari has decided not to load any images on any website I visit. After trawling the net for a while I have tried: Deleting the Cache.db file from the library file Checked that disable images is not checked on the Safari Develop
-
Loading images from a jar file
Hi, My application displays images, until it's placed in a JAR file, then it can't display them even though the JAR file contains the images. I saw this problem in a previous question which was solved using URL url = MyClass.class.getResource("abc.gi
-
Hey everyone. I'm creating an epub from scratch to load onto an iPad and view with iBooks. Is there anyway to style the .ncx document (or maybe some other method) so that the default iBooks TOC isn't that black, blocky text? Specifically, can you use
-
Help an artist who's loosing his shows and mind
Hello all. I really hope someone here might be able to help me. I've been doing a podcast now for a few weeks, with 8 shows online already. The problem is though, when a user goes to the iTunes store for us, it only shows the latest 5 episodes. Origi