SANs and Excessive Disk Utilization?
pnutjam asks: "I work for a small to medium mental health company as the Network Administrator. While I think a SAN is a bit of overkill for our dozen servers, it was here when I got here. We currently boot 7 servers from our SAN, which houses all of their disks. Several of them have started to show excessive disk load, notably our SQL server, and our old domain controller (which is also the file/print server). I am in the process of separating our file/print server from our domain controller, but right now I get excessive disk load during the morning when people log on (we use roaming profiles). I think the disks need to be defragged, but should this be done on the servers, or on the SAN itself? When it comes to improving performance, I get conflicting answers when I inquire whether I would get better throughput from newer fibre-channel cards (ours are PCI-x, PCI-e is significantly faster), or mixing in some local disks, or using multiple fibre channel cards. Has anyone dealt with a similar situation or has some expertise in this area?"
You might want to consider calling the maker for technical support. Some SAN devices require defrag at the BOX level and doing it from the Server will adversely affect your data. Others its OK either way.
Power Corrupts,Absolute Power Corrupts Absolutely, leaving one person(group)in charge is absolutely corrupt.
For those not in the know, Typically cabled to the machines via fiber connections.
Power Corrupts,Absolute Power Corrupts Absolutely, leaving one person(group)in charge is absolutely corrupt.
Storage Area Network. You could have just googled it. It's not an uncommon term.
Quality, performance, value; you get only two, and you don't always get to pick.
I've always kept the system disks local so the server isn't dependent on the SAN connection to boot. That said, do you have this SAN configured as a single shared filesystem or as a group of raid containers that are isolated from one another and provisioned to a single server? If it's shared, I'd say you need to take all but one server down and defragment from that. If it's not shared, they can all defragment their private filesystems at once (though I'd only do one or two at a time anyway).
Are we talking an HP XP12000 or Bob's "Box-o-disks".
The simple truth is that interstellar distances will not fit into the human imagination
- Douglas Adams
If you don't know what a SAN is, and are too lazy to consult Google, then why post? He's asking for someone who might be able to help, not trying to teach a lesson.
----
The whole SAN part is a red herring. He just has a storage area network (presumably Fibre Channel, as opposed to iSCSI), which just is a means of connecting servers to storage enclosures. The storage protocol is still SCSI, it's just over a different transport layer.
In other words, he has multiple servers connected to a single storage enclosure, and he's seeing capacity and performance issues.
The disks should be considered just like internal disks: defrag from the respective servers.
I would bet that his problem is simply having insufficient disks (spindles) to serve the morning peak workload... just like if you had a few internal disks.
In short:
- Defrag from each server, if you have a fragging issue
- Add more disks to spread the workload out
- Consider leaving the boot disks in each server, and just put data on the san. One main reason is that swapping to the SAN can be a problem by consuming storage enclosure cache (presuming there is any)
Don't use windows.
After that, everything else should stop being wildly unpredictable.
you are very, VERY right - but in this case, don't you think someone who doesn't even know the acronym is going to be pretty fucking useless as far as helping goes?
If you don't know what SAN stands for, then you probably aren't qualified to give advice on the subject. If I ask a question about something I'd rather only have people give answers they are qualified to give, rather than a bunch of people pulling ideas out of thin air.
Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
First, what do you mean by excessive disk load? I'm not being facetious here. Do you mean that the SAN unit is pegged. How do you know that? Are the servers spending a lot of time waiting for I/O? Is the unit making loud noises? Or are the machines that are connected to the server just slow without the processor being pegged?
Also, while "have you tried defragging?" is a common home troubleshooting tip, it's not clear how you came up with the idea that the SAN has to be defragged. If you have reasons and you're just simplifying to keep the post short, great. Defrag away according to the SAN manufacturer's recommendations. However, don't become obsessed with it unless you know that fragmentation's an issue.
You need to spend some time benchmarking the whole system. Figure out how much disk, processor, network IO, and SAN IO are being used. Know what percentage of the total that is. Figure out exactly which servers are causing performance problems at which times.
"Find the problem" is always the first step in "fix the problem."
Once you know what's going on, you can deal with the problem intelligently. Are all the servers booting at the same time? Give them different spindles to work from or stagger the boot times. Are all of the users logging in at once? Figure out why that's slow (network speed, SAN, data size, etc.) and split the data across multiple servers and SANS or improve the hardware.
If you can make the case with hard data that the SAN is swamped, you can probably pry money from management to fix the problem. However, guessing that it -might- be something won't get you very far. They don't want to spend $20k on a fix to be told, "Nope. It was something else."
Forward, retransmit, or republish anything I say here. Just don't misquote me.
You don't mention what type of SAN you have. Is it Fibre Channel or iSCSI? As much as it's likely FC, it's really important to make the distinction.
Now, either type of SAN it's still just a network. It just connects servers to disks instead of computers to computers. The next thing is that the disk controller on the SAN will present LUNs to servers as disks. So unless you have storage virtualization, most disk controllers present LUNs from arrays and the LUNs are contiguous and can't fragment. LUNs instead can share the disks in an array, so if for instance all the LUNs are carved out of one array you'll have major performance problems because the slowest link in the system (disks) is going to have to work for every server. This would mean separating the LUNs onto separate disks should be a huge help.
The next thing is how the servers access the disks. Unless you have a SAN filesystem, each LUN will only be exposed to one server (if clustering is involved, only one server owns the disk, unless you have some really fancy and expensive clustering software). So if you want to defragment the filesystem, you have to do this from the server because the disk controller will not be aware or care about the filesystem (again, unless they have way overkill).
You don't give much of these details, so I would guess you haven't worked with SANs before. Not much advice can be given until you clarify how everything is setup.
Yeah, that'd be good style. But unless you intend to undertake an editorial Jihad on Slashdot and strafe every article that makes slips like this, this is probably not a good place to start. It's a request for specific information in a specialized area. Seems likely that anyone who can contribute anything useful will know what SAN means.
Don't let me discourage you from making useful editorial comments. I'm only suggesting that Slashdot being what it is, you're probably going to have to target them at the really egregious stuff if you plan to retain your sanity.
(SAN="Storage Area Network" ... I think)
You can't see ANYTHING from a car, You've got to get out of the goddamned contraption and walk...Edward Abbey
I can tell you that it's highly doubtful that the problem is the speed of your fibre cards. If you are getting latency at the host, it is likely that either you've got conflicting access on a number of the same drives in the storage server, or a problem with your fiber switch.
I can definitely say that without vendor make, model, and software version information, you're not likely to get much helpful information in this venue, and you properly ought to be going to the vendor for technical support.
I would not assume the disks need to be defragged without other evidence. There are many components that can affect the performance of SAN storage. PCI-e is a faster bus architecture. However, it is unlikely that would increase your performance unless you are running dual-port 4Gb/s host bus adapters (HBA's). What type of storage array is it? What is the speed of your SAN switches, or are you using direct connect? What is the speed of the storage array's fiber channel ports? How many fiber connections does each server have, and how many connections does the array have? If your servers have multiple connections are you using some type of load balancing? If you have SAN switches have you looked at the per port performance to ensure you are not hitting any bottlenecks on the switch? In general SAN boot adds complexity and can make the servers more difficult to manage. I typically only use SAN boot if the server is not capable of housing internal disks, or it is needed for a disaster recovery scenario to replicate the boot drives to another site. Another issue that can degrade performance is swap. If you have no internal drives, and your servers have insufficient memory they could be swapping out to the storage array which can degrade performance. If you are running Windows 2003 you should look into the StorPort drivers as that can increase performance, and if the servers have more than one connection you should look into Multi-Path I/O (MPIO) unless the array offers a proprietary multi-pathing software.
What is "defrag"?
I am the Sr. Storage Architect for a Fortune 100 company. If you gave the type of array you have specifically, I'd be able to give more specific advice. That said: 1. You should have at least two fibre cards in each box anyway, and it has nothing to do with throughput. 2. Generally, your bottleneck is the disks themselves. If you want to increase performance, You need to increase the number of spindles that the data is striped across. Depending on the type of array, this may be a non-disruptive operation. The other big thing to look at is the type of RAID being used. You can usually get better performance from something striped with RAID10 vs. Raid 5, especially for write intensive data, because RAID 5 incurs an IO write penalty in calculating parity. 3. If you are going to defrag, do it on the server. It could help. There are some defrag functions available in most mid tier storage arrays, but it isn't what you think. The defrag there typically refers to lining up LUNs in a raid group. So, if you have a raid group with 5 LUNs in it, then delete one, you end up with a big empty space in the middle of the group. Defragging that raid group lines up all the LUNs inside that raid group.
Maybe you're looking at it all wrong.
You state that the disk load is high in the morning when everyone logs in with roaming profiles, which suggests to me that the roaming profiles are way too large.
Depending on the Windows versions used, move the contents of the "My documents" folder to their personal network shares (give them one if they don't have any), tell them to move data in their Desktop folder to that share and only create shortcuts, maybe even create a mandatory quota limit on the clients.
Check your favorite search site on "Windows reduce roaming profile size" for more tips.
home
We boot some hosts from our SAN (McData SAN switches, IBM SVC, Multiple DS4800's). First, is it your SAN that's bottlenecking (the switches?), the storage controller, or the hosts? When they bottleneck, are you seeing a lot of paging. Large roaming profiles loading all at once could be causing you to page, since your swap is out on your storage controller, you're doing double duty, and paying a penalty for it. As others have said, work on reducing the size of the roaming profiles. If you're doing heavy paging, fix it. Buy some RAM, or move things around so it's not an issue.
Booting from a SAN can work fine, but it has some disadvantages to it besides the obvious. It means you have to watch things closer, keep histories of your IO utilization on a per-path basis. That's the only way to find where the bottlenecks are, and when they start. You need to know exactly which host, what paths it has from the HBA(s) all the way to the disk, and where you're hitting the limits along that path.
First question, is what's the symptoms of the problem - how do you know you're 'pegging your disks'? If you're seeing IO load to your HBAs being really high, then yes, you might find that you need to upgrade these. From experience though, HBAs are rarely your limiting factor.
Much more likely is that you're experiencing local disk fragmentation, as you correctly point out. I can't offer specific advise for your array, but in my experience, SANs are 'blind' to filesystems. They work on disks and LUNs. LUNs are the devices a host sees. This can be safely and easily be defragmented, in all the normal ways that you would do normally.
Are you accessing your SAN over fiber channel or iSCSI? IF it's fiber, then again, you _may_ have network contention, but it's unusual in my experience (especially on a 17 servre SAN). If it's network, then you have contention to worry about. Is it possible that your 'gimme profile' requests across your network are also contending with your iSCSI traffic?
You may find that your SAN has 'performance tools' built in. That's worth a look, to see how busy your spindles are. Because of the nature of a SAN, you may find that the LUNs are being shared on the same physical disks. This can be a real problem if you've done something scary like using windows dynamic disk to grow your filesystem - Imagine having two LUNS striped, when in acutality on the back end, they're on two different 'bits' of a RAID 5 set. This is bad, and is worth having a look at.
One place where SANs do sometimes have issues is in page files. Which is possibly a problem if you're SAN booting. SANs have latency, and windows doesn't like high latency on page files. If you really push it, it'll start bluescreening.
This is fixed by local disks for OS, or just moving swap file to local disk.
HBA expansion _might_ improve performance, assuming this is your bottleneck. However you'll need to ensure you are multipathing your HBAs. (Think of them like network cards, and you won't go far wrong - you need to 'cheat' a bit in order to share network bandwidth on multiple cards). But like I say, you probably want to check this is actually a problem. If they're not very old, then it's unlikely, although it might be worth checking which internal bus the HBAs are on. (Resilience and contention).
It's possible your SAN is fragmented, but it's unlikely this is your problem - SANs don't have the same problem with adding and deleting files (LUNs) so all your backend storage will be in contiguous lumps anyway.
And I apologise if I use terminology that you're not familiar with. Each SAN vendor seems to have their own nomenclature when it comes to the 'bits', but they all work in roughly the same way. You have disks, which are ... well disks. RAID groups, which are disks bundled together, with a RAID 1, RAID 1+0, RAID 5 (with variable numbers of parity ratio) and very occasionally RAID 0. You have LUNs. Logical Units. These are ... well, chunks of your bundles of disks. The first 100Mb of a 5 disk RAID 5 group, might be a LUN. The LUN is what the host 'sees', as a single atomic volume. Most disk groups can have multiple LUNs on them, which is why you do need to watch out for how volume management is operating. I have seen a case where a Windows 2000 server added a second LUN, and used dynamic disk to stripe. Not realising that on the back end, both those LUNs were on the same RAID 5 (4+1). Which cause the disks to seek back and forth continually, and really hurt performance.
Oh, and this is also probably a good excuse to be booking SAN training. IMO SANs are fun and interesting, not to mention in demand and well paid :)
As a file grows, pieces of it may be strewn across the disk, causing the head to seek back and forth across the disk while reading it. This happens faster on some file systems than on others, and it happens faster on disks that are more than half full. Defragmentation assembles the pieces of each file into one piece for faster access. Some defrag programs can also put related files next to one another.
Presumably you've RTFMed already, checked the manufacturer forums and googled Usenet and drawn a blank. May I suggest that Slashdot isn't really the next logical place to look? You'll get 101 posts from people with no experience of your kit explaining why you should have some disks in shoeboxes connected to some old Linux PCs instead. You might get lucky and get someone who has a similar config to yours who can help a bit; but because they can't touch your network, they're not going to be able to say much. You'll also get the odd smug idiot - in this case me - who's no help whatsoever. So seriously, get someone in. If you don't know anyone, talk to the manufacturer, or ask around, and get them to recommend someone.
As Hilaire Belloc put it:
Lord Finchley tried to mend the Electric Light
Himself. It struck him dead: And serve him right!
It is the business of the wealthy man
To give employment to the artisan.
SANS do not need to be defragged. Let me be a little more clear on this: When you allocate a LUN (logical unit) on your SAN and present it to a server, you are doing one of two things:
1. Presenting physical spindles to the server as raw disks -or-
2. Presenting a RAID volume to the server, which consists of a section of many disks.
All SAN vendors that I'm aware of allocate LUNs as contiguous areas of disk. It's faster this way because heads don't have to seek very far to find data within the same LUN. Even if you're allocating a RAID 5 LUN spread across 20 disks, the SAN is going to take a small section of each of those 20 disks and that is dedicated to your LUN. It's a contiguous section and it stays the same throughout the life of the LUN, that is unless you extend it or grow the LUN at a later date.
Now, the server's data on that LUN can and will become fragmented, but this needs to be taken care of at the OS level, not the SAN level. If you're running Windows file servers, use the Windows defrag tool. If you're using Veritas file system they have a defragmentation tool of their own.
There is one possible way that SANs can become fragmented but it's very unlikely that this would affect performance: If you grow or extend your LUNs many many times by adding new sections to them, I suppose this could theoretically affect performance adversely, but it's highly unlikely.
I seriously doubt fragmentation is an issue. More likely some of your users think it's ok to have gigabytes worth of data on their desktop and roaming profiles are killing you. This is a user education issue, not a SAN issue.
"When the president does it, that means it's not illegal." - Richard M. Nixon
You need to knwow the actual layout on the SAN's physical disk, that is how many spindles are available for each of your servers and which servers use the same set of spindles.
The most likely cause of bad performance is that the same spindles are overloaded while some other do nothing, as it is very rare to have the link elements (fibre and cards) over loaded. As one other poster noted you need to know the load on your disk to decide if the link may be in cause, for example are you doing more than 1 Gb/s IO on one card ? But most likely it's the physical layout on the SAN that's in cause, and in that case you will need to redesign it : adding more spindles is one solution, or you could reorganise the SAN by moving LUNs around different sets of disks.
Regarding defrag, it makes no sense to me at the SAN level, as it could only mean moving LUNs around a set of disk, which is used to consolidate continuous space but does not impact performance. Defrag at the filesystem level makes sense, as with a standard DAS.
With that aggravating beauty, Lulu Walls.
"If I ask a question about something I'd rather only have people give answers they are qualified to give, rather than a bunch of people pulling ideas out of thin air."
Me too, but this is "ASK SLASHDOT" after all.
Maybe your SQL servers need a few more Gig of ram, or the databases themselves need some TLC.
An SQL server doing something that is too big for it can get you in "slower than my last 486" territory pretty quick.
I know very little about SANs, but assume the file system is pretty fast... so maybe it's not the problem at all.
Where I would take a look is at your RDBMS. If you're getting 80% disk utilization at the SAN you may be doing far more sequential/full-table scans than you need to be. Turn explain plan on and start looking for opportunities to add indexes.
Finally, check virtual memory on the connected servers. If they're mapping VM to a SAN volume, you've got all sorts of pointless trouble. Always swap to local disk, because most Unixes and Windows both do pre-emptive paging and the 80% disk loading you see at login time may be from memory images of the new applications being mapped out to the SAN.
I'll be curious to see how this works out for you.
This is not my sandwich.
1) No, it isn't your Fibre cards. The PCI-whatever bus (or the line speed of the card, for that matter), usually only affect high-bandwidth operations like tape backup. One thing you must remember is that loads that can beat the crap out of disk (random operations spread all over the platters), do not affect the I/O bus of the Fibre adapters at all, which cares only about total throughput.
2) It is far more likely your OS needs defragging than your disk array. Your disk array CAN become fragmented if you add and delete LUNs often, though.
3) Yes, you need multiple fibre cards, but for redundancy, not for bandwidth.
4) Try and put your major workloads on their own RAID arrays on your disk controller.
5) Check to see if you have enough memory in those boxes. If you have one server that keeps swapping out to disk and you are booting from SAN, you are going to get very hosed, very quickly. If these boxes have any internal disk at all, put the swap there.
6) If it is possible with your arrays, max out the segment size. (Engenio/LSI - based arrays can do this.)
This should be enough to get you started.
SirWired
Chances are you problem is memory. Of course your database could be *ugly* too, but if your problem pretty much happens only in the morning during logons and such, you're probably choking your servers with a lack of memory.
SAN doesn't write directly to the disk, and as such, a "high disk utlilization" situation in the OS, is not really a high disk utilization situation in the san...With the san I have worked with, it either means that the disk array doesn't have enough memory (some vendors can expand, some cannot) or you are having contention issues from improper zoning. Other possibilities that occur to me are not enough memory on the server (although my experience is with Oracle, not MSSQL in the case of db servers) and a poor san design that spools database data to the same spindles as another io intensive application. I would recommend that you get someone who knows the san product you are using to look at your setup.
Ensure your zoning on your switches is setup properly and you are only seeing the necessary info for the server (array, tape library, etc.). Since you are running Windows, ensure you are using the respective STORport drivers for the HBA's and not using the SCSIPort drivers. SCSIPort drivers are a dated technology, in our environment when it was fielded we had some huge issues, updating to STORport drivers resolved some of our I/O related problems.
I would look into downloading IOMeter and carving up a test LUN for one of the problematic servers and doing some benchmarks after-hours when customer impact will be limited.
Hope you figure your issue out and share your information with us. It will be interesting to see what the actual problem was. Alot of good advice above, hope everyone is able to help you out! Good Luck!
The fact that you run a shop, that uses a SAN, and you uttered this statement, means one thing: You are hopelessly underqualified for the job. a) You do not defrag disks, you defrag filesystems, b) you don't need to defrag on a modern OS (are you running WfWG as your file server?), c) you mention no actual data that the disk utilization is "high", and d) you asked Slashdot instead of calling your vendor and asking for an SE.
ITT may be able to help you, ask for their syllabus.
I want to delete my account but Slashdot doesn't allow it.
Ask Slashdot or call the manufacturer, let's see... which one will make me look more like a huge retard not qualified to do my job?
Sheesh...
+++OK ATH
Seconded on the suggestion to call Xiotech. They know their stuff and should be able to help you out.
It's kind of funny - I'm at Novell BrainShare, and my fourth session of the day was how to diagnose poor server performance due to SAN congestion. In NetWare we have always had tools to measure how well the disk subsystem is handling - but I have no idea if Windows/Citrix can provide the same. I would think so, using the WMI interfaces, but I don't know. We were talking about disk subsystem statistics, and a Mainframe guy asked about stuff. As it turns out, they have way more detailed information about the disk subsystems than we do in the Intel world. The mainframe keeps track of how many nanoseconds it takes for the disk heads to position themselves, how many nanoseconds the File Open takes, how many milliseconds the Read takes, how many nanoseconds the File Close takes. In the NetWare world, we can (easily) tell how many disk writes are pending, how many disk reads are pending, how long ago did a file read not come out of cache - but not a whole lot at such a really low level. I have no idea where we would get those kinds of statistics in Linux.
"The most sensible request of government we make is not, "Do something!" But "Quit it!"
The first thing I'd try is changing the position of the SAN (data) relative to your servers. Many sites locate the SAN storage at the bottom of a rack, with the servers above the SAN. This can lead to "data pooling" in the SAN, similar to the way your face goes red if you hang upside-down for too long.
If your server load is mostly "read" access, then the SAN has to pump all the read data "up hill" to the servers. In this case the SAN should be above the servers (the higher the better). OTOH, if you have mostly "write" access, then the typical "server above SAN" configuration is correct, as this allows all the writes to flow down to the SAN easier.
Another thing to be aware of is the directionality of your SAN fibre-optic cabes. Make sure that you orient the fibre-cable's "input" end to the server's "read" port, and the "output" end to the server's "write" port. If you get the cable orientation wrong you end up forcing the data "against the grain" in the cable, and this will greatly decrease performance. You can detect this problem simply by touching the fibre cable - if the cable is the wrong way around then the extra "friction" will cause if to be warm to the touch - just reverse its direction and performance should be much better.
I doubt that "defragmenting" your SAN disks would help - but you might want to try a "disk scrub". Many older disks develop a "rust-like" build up on the disk platters, and this can retain a magnetic charge. Try opening the disks and give the platters a good scrub, nothing too abrasive of course. I've found a toothbrush and toothpaste works fine - make those platters nice and shiny!
I hope that's helpful - and remember *always have a backup*!
Data B. Gone.
Mircosoft Certified Data Loss Expert (MDLE)
There are two reasons why Slashdot posts 'ask slashdot' questions (that I can think of). One is to get an answer for the original poster (a minor point). The other is so that the other million or so readers have a chance to show off their knowledge and/or learn something new.
The latter is actually a lot more important (for the site as a whole) than the former.
Free Software: Like love, it grows best when given away.
And thanks for reminding me that it is 80% full, not 90%.
"The most sensible request of government we make is not, "Do something!" But "Quit it!"