Showing posts with label hardware. Show all posts
Showing posts with label hardware. Show all posts

Thursday, February 24, 2011

Iomega StorCenter ix2 Network Attached Storage for Hyper-V backup

imageRunning a virtualized environment like Hyper-V has some limitations that you don’t have with a physical server environment. Physical USB ports and DVD drives are shared by multiple virtual servers and they can’t all access them at the same time. Currently Hyper-V doesn’t support using external USB drives. If that is your typical backup and restore strategy, as is often the case for small businesses, you need another option like a Network Attached Storage (NAS) unit.

In my lab environment I selected the Iomega StorCenter ix2-200 1 TB Network Attached Storage. After a lot of research and pouring over user submitted reviews, I found that this cost effective unit had a proportionately smaller number of bad reviews compared to the other units I researched.

Noteable features that appealed to me were

  • RAID 1 with automatic RAID rebuild (two 500Gb SATA drives mirrored for redundancy)
  • User replaceable hard drives (I was going to easily outgrow the 500Gb available storage space)
  • One touch backup of the backup to a connected external USB drive
  • Ability to connect additional external USB drives for network accessible storage

The not so good

The web interface stopped working once with a “device not available” error or simply a HTTP server error web page after an extremely long browser hang. The drive itself continued to store and serve my backup images and shared files, but not being able to access the web interface got me wondering what else wasn’t functioning (like the RAID controller possibly?).

The web interface is the easiest way to check the amount of free space and perform firmware upgrades. The Iomega support website provided no useful help at all. With some research I found that other people were having similar issues with the ix4 model and a reboot of the NAS unit restored the web interface. Unfortunately for them, they were using the device to store their running virtual hard drives since the device is VMware certified. They had to first power down all the virtual servers (VM’s) before power cycling the NAS and power each of the VM’s back up - which is a serious inconvenience for the administrator and any users of the virtual servers.

A simple power cycle corrected my issue, but hopefully it will not be a regular occurrence as I don’t have physical access to my lab at all times.

Tuesday, December 21, 2010

Vista Backup Stopped Working - Fix

Backup for the BackupI’ve been using Windows Vista’s built-in Backup and Restore functionality daily for over three years now, with good success until recently. I recently started experiencing a backup error every day for the incremental backups as well as when I attempt to create a new full backup.

The backup did not complete successfully. The file or directory is corrupted and unreadable (0x80070570)

This error message was not very helpful because it didn’t indicate which file or directory was corrupt. It also didn’t indicate whether it was my backup source Operating System partition, Files partition, or the backup destination device.

The Fix

I ran numerous utilities including the Seagate Tools (manufacturer of the source and destination hard drives) on both drives which didn’t detect any problems. The final fix was opening a Command Prompt and running “CHKDSK C: /R” where the C-drive was my primary OS disk. Because the Operating System was in use, the Check Disk utility couldn’t run until the next restart.

Backup Redundancy

The Complete PC Backup, where it creates a VHD image file of each of the backup drives, was working the entire time which provided some level of comfort while troubleshooting the traditional backup process.

photo credit: ground.zero / CC BY 2.0

Thursday, September 16, 2010

Top Four Uses for Remote Desktop

  1. r/c helicopter Manage multiple PC’s or servers from a remote computer or location.
  2. Keep your data on a desktop in a secured premises and access it remotely. If your laptop gets lost or stolen, the data is still safely tucked away on your desktop at the home base.
  3. Fix a friend or relative’s PC without them lugging their equipment to your house or requiring a house call.
  4. Access your laptop from another computer when the laptop display or desktop monitor stops working.

photo credit: Locutis CC BY-SA 2.0

Wednesday, September 30, 2009

Easily Add External I/O to Custom Software – Keyboard Encoder Modules

Arcade Game photo by Robin Norman - Stock Exchange user: otto_taroEver have the need/desire to be able to have your software  interact with a hardware input device other than a mouse or keyboard? Using a Keyboard Encoder Module and a little creativity you can take the input of something like an industrial switch, button, or Programmable Logic Controller (PLC) output and read it in your program as if it were a keystroke from a keyboard. This technique has been in use for a long time by arcade game manufacturers (think joystick and buttons). The devices are relatively reliable, but even if they fail, they are inexpensive and easy to replace.
I used the KE24 Keyboard Encoder Module from Hagstrom Electronics, but due to the declining availability of PS/2 style miniDIN connectors in PC’s, the KE-USB24 would probably be an acceptable choice.
Quick VB.Net code for a Windows Form to check which keystroke was pressed:
   1: ' a constant representing the keystroke value 
   2: ' mapped to a button press. In this example, the F5 key

   3: Dim keyActCounterIncrement as String = "116" 
   4:  
   5: Protected Overrides Function ProcessCmdKey( _
   6:              ByRef msg As System.Windows.Forms.Message, _
   7:              ByVal keyData As System.Windows.Forms.Keys) _
   8:              As Boolean
   9:  
  10:         ' get the key map data
  11:         Dim strKeyData As String = CStr(keyData)
  12:         
  13:         ' The key was pressed to increment a piece part counter.
  14:         If keyData = keyActCounterIncrement Then
  15:             DoSomethingLikeIncrementACounter()
  16:             Return True
  17:         End If
  18: End Function

Here’s a good key translation chart for reference.

[updated 10/19/2009 to add WPF code snippet]
XAML:

   1: <Window x:Class="Window1"
   2:     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   3:     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
   4:     Title="Pacer" Height="300" Width="300">
   5:     <Grid>
   6:         <TextBox Height="23" Margin="126,74,32,0" Name="txtActCounter" VerticalAlignment="Top" />
   7:         <TextBlock Height="21" Margin="51,77,0,0" Name="lblActCounter" VerticalAlignment="Top" Text="Actual Count" HorizontalAlignment="Left" Width="77" />
   8:     </Grid>
   9: </Window>


   1: Class Window1 
   2:     Private intActCounter As Integer = 0
   3:     Private Sub Window1_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Me.Loaded
   4:         ' register an event handler to intercept the keyboard input
   5:         EventManager.RegisterClassHandler(GetType(Window), _
   6:             Keyboard.KeyUpEvent, New KeyEventHandler(AddressOf KeyUpCapture), True)
   7:         ' set a textbox counter to zero
   8:         txtActCounter.Text = intActCounter.ToString
   9:     End Sub
  10:     Private Sub KeyUpCapture(ByVal sender As Object, ByVal e As KeyEventArgs)
  11:         ' if keypress is F5
  12:         '   do something
  13:         If e.Key = Key.F5 Then
  14:             ' increment counter
  15:             intActCounter += 1
  16:             ' update textbox to counter value
  17:             txtActCounter.Text = intActCounter.ToString
  18:  
  19:         End If
  20:  
  21:     End Sub
  22: End Class
There are a few considerations to using this method:
  • It is a low voltage, low current “dry contact” device, but you still might want to consider soliciting the help of an electrician/controls engineer to wire it up to make sure you don’t fry your new “toy”, your PC, yourself, or another unsuspecting bystander
  • It is a low voltage device so the wiring between the keyboard encoder module and the input device needs to be located in close proximity (i.e. minimal wire length). If you need more distance, I recommend wiring the field device to an industrial dry contact relay bank and locating the relay bank in close proximity to the keyboard encoder module.
  • You probably want to map the inputs to keys, or combinations of keys that are not typically used in normal typing, like the tilde (~), so as not to inadvertently register text actually typed from the keyboard as inputs from the keyboard encoder module.