Search This Blog

Wednesday, October 15, 2014

OpenStack - Do you know how to evacuate Instances from server which has gone down - "nova host-evacuate"

Hello again,

Recently my server running openstack-compute had to be brought down for maintenance (which was running some 60 VMs). This is when i learnt how to use "nova evacuate"

This is a cool feature in openstack using which you can get back instances from the server which has gone down. Ya, but it requires some prior configuration.

The important stuff is how you keep you root disk. Openstack allows three different configurations to fetch the root disk.

1. Root on volume (EBS volumes) - By this instance can be brought up in other server with the same EBS(root) volume.

2. Instances folder in shared mode using NFS, GlusterFS, etc - Basically the disk file needs to be accessed across all nodes, i.e mount point for instances folder must be shared across all nodes. GlusterFS appears to work super cool in this method.

3. Disks are cleaned but instances are recreated from fresh disk from glance - Even though the disk is ultra new, instance information (like IP, instance Id,etc.,) are retained just as it was before evacuation.

Once the server is down, all you need to do is issue the following command

# nova host-evacuate --target_host <server where the VMs need to be transferred> --on-shared-storage <server which got down>

Eg:

# nova host-evacuate --target_host old_node --on-shared-storage new_node

I have added a video demonstration of the entire flow. I hope this helps someone. Have a great day


                                                  :) :) :) :) :) :) :) :)

Tuesday, October 14, 2014

Cool aliases that i found from my friend's GitHub

Hey Guys,
If you are a linux fan, you probably will love these aliases (short cuts or short forms of commands)

https://github.com/rushiagr/myutils/tree/master/aliases

If you are tired to copy it to your system, just use the script below to install these aliases :)

https://github.com/rushiagr/myutils/blob/master/install-aliases.sh

These save a lot of time for developers..

Thanks to Rushi Agarwal













See ya all.

Monday, August 18, 2014

Really Cool Python debugging Tool - "PUDB"

Hi once again,
I came across this really cool python debugging tool called "PUDB". Now i would rather say am using this tool for every code trace on openstack.

" PuDB is a full-screen, console-based visual debugger for Python. Its goal is to provide all the niceties of modern GUI-based debuggers in a more lightweight and keyboard-friendly package. PuDB allows you to debug code right where you write and test it--in a terminal. If you've worked with the excellent DOS-based Turbo Pascal or C tools, PuDB's UI might look familier. "

How to install PUDB

# sudo pip install pudb

How to debug

The place you feel debugger needs to start, insert the following piece of code  

import pudb;pu.db 

How does it look like ?



PUDB has the following panes
  • Debugger pane
  • Console Pane
  • Variables Pane
  • Stack Pane
  • BreakPoints pane
Basic Key Navigations
  • Use Left,Right,Up,Down arrow keys to navigate between the panes.
  • press 's' for step into a method
  • press 'n' for executing next line
  • press 'b' key to toggle break points
  • press 'r' for completing the method
  • press 'q' to quit debugger
  • press '?' for help and more key navigations
  • ctrl + x to navigate between debugger pane and console pane.
  • TAB key acts as auto-suggest/auto-fill while in console pane. It also brings down methods available.
Credits to my friend Rushi Agarwal - who pointed out to me about this tool while i was struggling to debug a piece of code with pdb :)
 

Tuesday, July 8, 2014

"apt-mirror" does not understand non standard port

Hey,
Today when i was setting up configuration for apt-mirror, i faced this problem of apt-mirror not recognizing non-standard port. I thought i would post the fix for the bug, as this might be helpful for others as well

Step 1: Edit the apt-mirror script

# nano /usr/bin/apt-mirror

Step 2: Look for the line

$uri =~ s&:\d+/&/&; # and port information

Change it to,

$uri =~ s&:\d+/$&/&; # and port information

Step 3: Run your apt-mirror command

There you go !!! You have your mirror fetching from non-standard port.

Monday, April 7, 2014

Eth0 Getting Incremented while Cloning

Hi everybody,
Today i came across a situation, that my network interface(s) number gets incremented when ever i clone my virtual machine (by virtual box or other means). For some or the other reason certain people do not like their interfaces to be changed.
   Started investigating the cause and found that udev was the daemon which increments the number on the interface. It has certain set of rules written which reinitiate the device number. Here is the small patch that can be handy for some users.

Note: These commands has to be performed as root

Step 1: Edit the file /lib/udev/write_net_rules and make the following changes

# vi /lib/udev/write_net_rules

Orginally looks like this

#!/bin/sh -e

# This script is run to create persistent network device naming rules
# based on properties of the device.
# If the interface needs to be renamed, INTERFACE_NEW=<name> will be printed
# on stdout to allow udev to IMPORT it.

# variables used to communicate:
#   MATCHADDR             MAC address used for the match
#   MATCHID               bus_id used for the match
#   MATCHDEVID            dev_id used for the match
#   MATCHDRV              driver name used for the match
#   MATCHIFTYPE           interface type match
#   COMMENT               comment to add to the generated rule
#   INTERFACE_NAME        requested name supplied by external tool
#   INTERFACE_NEW         new interface name returned by rule writer

# Copyright (C) 2006 Marco d'Itri <md@Linux.IT>
# Copyright (C) 2007 Kay Sievers <kay.sievers@vrfy.org>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

# debug, if UDEV_LOG=<debug>
if [ -n "$UDEV_LOG" ]; then
if [ "$UDEV_LOG" -ge 7 ]; then
set -x
fi
fi

RULES_FILE='/etc/udev/rules.d/70-persistent-net.rules'
. /lib/udev/rule_generator.functions

interface_name_taken() {
local value="$(find_all_rules 'NAME=' $INTERFACE)"
if [ "$value" ]; then
return 0
else
return 1
fi
}

find_next_available() {
raw_find_next_available "$(find_all_rules 'NAME=' "$1")"
}

write_rule() {
local match="$1"
local name="$2"
local comment="$3"

{
if [ "$PRINT_HEADER" ]; then
PRINT_HEADER=
echo "# This file was automatically generated by the $0"
echo "# program, run by the persistent-net-generator.rules rules file."
echo "#"
echo "# You can modify it, as long as you keep each rule on a single"
echo "# line, and change only the value of the NAME= key."
fi

echo ""
[ "$comment" ] && echo "# $comment"
echo "SUBSYSTEM==\"net\", ACTION==\"add\"$match, NAME=\"$name\""
} >> $RULES_FILE
}

if [ -z "$INTERFACE" ]; then
echo "missing \$INTERFACE" >&2
exit 1
fi

# Prevent concurrent processes from modifying the file at the same time.
lock_rules_file

# Check if the rules file is writeable.
choose_rules_file

# the DRIVERS key is needed to not match bridges and VLAN sub-interfaces
if [ "$MATCHADDR" ]; then
match="$match, DRIVERS==\"?*\", ATTR{address}==\"$MATCHADDR\""
fi

if [ "$MATCHDRV" ]; then
match="$match, DRIVERS==\"$MATCHDRV\""
fi

if [ "$MATCHDEVID" ]; then
match="$match, ATTR{dev_id}==\"$MATCHDEVID\""
fi

if [ "$MATCHID" ]; then
match="$match, KERNELS==\"$MATCHID\""
fi

if [ "$MATCHIFTYPE" ]; then
match="$match, ATTR{type}==\"$MATCHIFTYPE\""
fi

if [ -z "$match" ]; then
echo "missing valid match" >&2
unlock_rules_file
exit 1
fi

basename=${INTERFACE%%[0-9]*}
match="$match, KERNEL==\"$basename*\""

if [ "$INTERFACE_NAME" ]; then
# external tools may request a custom name
COMMENT="$COMMENT (custom name provided by external tool)"
if [ "$INTERFACE_NAME" != "$INTERFACE" ]; then
INTERFACE=$INTERFACE_NAME;
echo "INTERFACE_NEW=$INTERFACE"
fi
else
# if a rule using the current name already exists, find a new name
if interface_name_taken; then
INTERFACE="$basename$(find_next_available "$basename[0-9]*")"
# prevent INTERFACE from being "eth" instead of "eth0"
[ "$INTERFACE" = "${INTERFACE%%[ \[\]0-9]*}" ] && INTERFACE=${INTERFACE}0
echo "INTERFACE_NEW=$INTERFACE"
fi
fi

write_rule "$match" "$INTERFACE" "$COMMENT"

unlock_rules_file

exit 0


Change it as follows

#!/bin/sh -e

# This script is run to create persistent network device naming rules
# based on properties of the device.
# If the interface needs to be renamed, INTERFACE_NEW=<name> will be printed
# on stdout to allow udev to IMPORT it.

# variables used to communicate:
#   MATCHADDR             MAC address used for the match
#   MATCHID               bus_id used for the match
#   MATCHDEVID            dev_id used for the match
#   MATCHDRV              driver name used for the match
#   MATCHIFTYPE           interface type match
#   COMMENT               comment to add to the generated rule
#   INTERFACE_NAME        requested name supplied by external tool
#   INTERFACE_NEW         new interface name returned by rule writer

# Copyright (C) 2006 Marco d'Itri <md@Linux.IT>
# Copyright (C) 2007 Kay Sievers <kay.sievers@vrfy.org>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

# debug, if UDEV_LOG=<debug>
if [ -n "$UDEV_LOG" ]; then
if [ "$UDEV_LOG" -ge 7 ]; then
set -x
fi
fi

RULES_FILE='/etc/udev/rules.d/70-persistent-net.rules'
dnc='/etc/udev/rules.d/dnc-network'
. /lib/udev/rule_generator.functions

interface_name_taken() {
local value="$(find_all_rules 'NAME=' $INTERFACE)"
if [ "$value" ]; then
return 0
else
return 1
fi
}

find_next_available() {
raw_find_next_available "$(find_all_rules 'NAME=' "$1")"
}

write_rule() {
local match="$1"
local name="$2"
local comment="$3"

{
if [ "$PRINT_HEADER" ]; then
PRINT_HEADER=
echo "# This file was automatically generated by the $0"
echo "# program, run by the persistent-net-generator.rules rules file."
echo "#"
echo "# You can modify it, as long as you keep each rule on a single"
echo "# line, and change only the value of the NAME= key."
fi

echo ""
[ "$comment" ] && echo "# $comment"
echo "SUBSYSTEM==\"net\", ACTION==\"add\"$match, NAME=\"$name\""
} >> $RULES_FILE
}

if [ -z "$INTERFACE" ]; then
echo "missing \$INTERFACE" >&2
exit 1
fi

# Prevent concurrent processes from modifying the file at the same time.
lock_rules_file

# Check if the rules file is writeable.
choose_rules_file

# the DRIVERS key is needed to not match bridges and VLAN sub-interfaces
if [ "$MATCHADDR" ]; then
match="$match, DRIVERS==\"?*\", ATTR{address}==\"$MATCHADDR\""
fi

if [ "$MATCHDRV" ]; then
match="$match, DRIVERS==\"$MATCHDRV\""
fi

if [ "$MATCHDEVID" ]; then
match="$match, ATTR{dev_id}==\"$MATCHDEVID\""
fi

if [ "$MATCHID" ]; then
match="$match, KERNELS==\"$MATCHID\""
fi

if [ "$MATCHIFTYPE" ]; then
match="$match, ATTR{type}==\"$MATCHIFTYPE\""
fi

if [ -z "$match" ]; then
echo "missing valid match" >&2
unlock_rules_file
exit 1
fi

basename=${INTERFACE%%[0-9]*}
match="$match, KERNEL==\"$basename*\""

if [ "$INTERFACE_NAME" ]; then
# external tools may request a custom name
COMMENT="$COMMENT (custom name provided by external tool)"
if [ "$INTERFACE_NAME" != "$INTERFACE" ]; then
INTERFACE=$INTERFACE_NAME;
echo "INTERFACE_NEW=$INTERFACE"
fi
else
# if a rule using the current name already exists, find a new name
if interface_name_taken; then
  if ! [ -e $dnc ]; then
INTERFACE="$basename$(find_next_available "$basename[0-9]*")"
# prevent INTERFACE from being "eth" instead of "eth0"
[ "$INTERFACE" = "${INTERFACE%%[ \[\]0-9]*}" ] && INTERFACE=${INTERFACE}0
echo "INTERFACE_NEW=$INTERFACE"
  fi
fi
fi

write_rule "$match" "$INTERFACE" "$COMMENT"

unlock_rules_file

exit 0


Step 2: Create a file named /etc/udev/rules.d/dnc-network

# touch /etc/udev/rules.d/dnc-network

Step 3: Shutdown the virtual machine and clone the machine to test

Enjoy :)

Friday, March 7, 2014

Seagate Backup Plus Not Getting Detected in Linux

Hi all,

Today i just bought my brand new Seagate backup plus 1 TB external hard disk and i was shocked when it did not get detected in my Linux PC. At first i was thinking, there was some fault with the drive and i almost started checking the process for claiming warranty.

Suddenly something stuck me, thought to check it over windows and mac and to my surprise it worked great. So then googled over net and found that Seagate backup plus does not support for Linux.

Some investigation on dmesg


[2610653.068031] usb 2-6: new high-speed USB device number 5 using ehci_hcd
[2610653.201801] usb 2-6: New USB device found, idVendor=0bc2, idProduct=a013
[2610653.201804] usb 2-6: New USB device strings: Mfr=2, Product=3, SerialNumber=1
[2610653.201806] usb 2-6: Product: Backup+ BK
[2610653.201807] usb 2-6: Manufacturer: Seagate
[2610653.201808] usb 2-6: SerialNumber: NA5CME4T
[2610653.202497] scsi7 : uas
[2610653.203558] scsi 7:0:0:0: Direct-Access     Seagate  Backup+ BK       0412 PQ: 0 ANSI: 6
[2610659.808099] scsi 7:0:0:0: uas_eh_abort_handler tag 0
[2610659.808105] scsi 7:0:0:0: uas_eh_device_reset_handler tag 0
[2610659.808108] scsi 7:0:0:0: uas_eh_target_reset_handler tag 0
[2610659.808111] scsi 7:0:0:0: uas_eh_bus_reset_handler tag 0
[2610659.920091] usb 2-6: reset high-speed USB device number 5 using ehci_hcd
[2610660.053560] scsi 7:0:0:0: Device offlined - not ready after error recovery
[2610660.053581] scsi 7:0:0:0: rejecting I/O to offline device
[2610660.053589] scsi 7:0:0:0: rejecting I/O to offline device
[2610660.054693] scsi 7:0:0:1: Direct-Access     Seagate  Backup+ BK       0412 PQ: 0 ANSI: 6
[2610660.055693] scsi 7:0:0:2: Direct-Access     Seagate  Backup+ BK       0412 PQ: 0 ANSI: 6
[2610660.056694] scsi 7:0:0:3: Direct-Access     Seagate  Backup+ BK       0412 PQ: 0 ANSI: 6
[2610660.057691] scsi 7:0:0:4: Direct-Access     Seagate  Backup+ BK       0412 PQ: 0 ANSI: 6
[2610660.058691] scsi 7:0:0:5: Direct-Access     Seagate  Backup+ BK       0412 PQ: 0 ANSI: 6
[2610660.059691] scsi 7:0:0:6: Direct-Access     Seagate  Backup+ BK       0412 PQ: 0 ANSI: 6
[2610660.060693] scsi 7:0:0:7: Direct-Access     Seagate  Backup+ BK       0412 PQ: 0 ANSI: 6
[2610660.061185] sd 7:0:0:0: Attached scsi generic sg2 type 0
[2610660.061637] sd 7:0:0:1: Attached scsi generic sg3 type 0
[2610660.062191] sd 7:0:0:2: Attached scsi generic sg4 type 0
[2610660.062493] sd 7:0:0:3: Attached scsi generic sg5 type 0
[2610660.062727] sd 7:0:0:4: Attached scsi generic sg6 type 0
[2610660.062963] sd 7:0:0:5: Attached scsi generic sg7 type 0
[2610660.063257] sd 7:0:0:6: Attached scsi generic sg8 type 0
[2610660.063516] sd 7:0:0:7: Attached scsi generic sg9 type 0
[2610690.848080] sd 7:0:0:2: uas_eh_abort_handler tag 0
[2610690.848084] sd 7:0:0:3: uas_eh_abort_handler tag 0
[2610690.848086] sd 7:0:0:4: uas_eh_abort_handler tag 0
[2610690.848088] sd 7:0:0:5: uas_eh_abort_handler tag 0
[2610690.848090] sd 7:0:0:6: uas_eh_abort_handler tag 0
[2610690.848093] sd 7:0:0:7: uas_eh_abort_handler tag 0
[2610690.848095] sd 7:0:0:0: uas_eh_abort_handler tag 0
[2610690.848097] sd 7:0:0:1: uas_eh_abort_handler tag 0
[2610690.848105] sd 7:0:0:0: uas_eh_device_reset_handler tag 0
[2610690.848108] sd 7:0:0:1: uas_eh_device_reset_handler tag 0
[2610690.848110] sd 7:0:0:2: uas_eh_device_reset_handler tag 0
[2610690.848112] sd 7:0:0:3: uas_eh_device_reset_handler tag 0
[2610690.848115] sd 7:0:0:4: uas_eh_device_reset_handler tag 0
[2610690.848117] sd 7:0:0:5: uas_eh_device_reset_handler tag 0
[2610690.848119] sd 7:0:0:6: uas_eh_device_reset_handler tag 0
[2610690.848122] sd 7:0:0:7: uas_eh_device_reset_handler tag 0
[2610690.848124] sd 7:0:0:2: uas_eh_target_reset_handler tag 0
[2610690.848127] sd 7:0:0:1: uas_eh_bus_reset_handler tag 0
[2610690.960091] usb 2-6: reset high-speed USB device number 5 using ehci_hcd
[2610691.093310] sd 7:0:0:1: Device offlined - not ready after error recovery
[2610691.093313] sd 7:0:0:0: Device offlined - not ready after error recovery
[2610691.093315] sd 7:0:0:7: Device offlined - not ready after error recovery
[2610691.093317] sd 7:0:0:6: Device offlined - not ready after error recovery
[2610691.093318] sd 7:0:0:5: Device offlined - not ready after error recovery
[2610691.093320] sd 7:0:0:4: Device offlined - not ready after error recovery
[2610691.093322] sd 7:0:0:3: Device offlined - not ready after error recovery
[2610691.093324] sd 7:0:0:2: Device offlined - not ready after error recovery
[2610691.093347] sd 7:0:0:0: rejecting I/O to offline device
[2610691.093355] sd 7:0:0:0: rejecting I/O to offline device
[2610691.093358] sd 7:0:0:0: rejecting I/O to offline device
[2610691.093361] sd 7:0:0:0: [sdc] READ CAPACITY(16) failed
[2610691.093364] sd 7:0:0:1: rejecting I/O to offline device
[2610691.093364] sd 7:0:0:0: [sdc]  Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[2610691.093369] sd 7:0:0:1: rejecting I/O to offline device
[2610691.093369] sd 7:0:0:0: [sdc] Sense not available.
[2610691.093372] sd 7:0:0:1: rejecting I/O to offline device
[2610691.093374] sd 7:0:0:1: [sdd] READ CAPACITY(16) failed
[2610691.093374] sd 7:0:0:0: rejecting I/O to offline device
[2610691.093378] sd 7:0:0:1: [sdd]  
[2610691.093378] sd 7:0:0:0: rejecting I/O to offline device
[2610691.093382] Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[2610691.093382] sd 7:0:0:0: rejecting I/O to offline device
[2610691.093385] sd 7:0:0:1: [sdd] Sense not available.
[2610691.093386] sd 7:0:0:0: [sdc] READ CAPACITY failed
[2610691.093387] sd 7:0:0:0: [sdc]  Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[2610691.093390] sd 7:0:0:0: [sdc] Sense not available.
[2610691.093394] sd 7:0:0:1: rejecting I/O to offline device
[2610691.093394] sd 7:0:0:0: rejecting I/O to offline device
[2610691.093397] sd 7:0:0:0: rejecting I/O to offline device
[2610691.093400] sd 7:0:0:1: rejecting I/O to offline device
[2610691.093403] sd 7:0:0:1: rejecting I/O to offline device
[2610691.093403] sd 7:0:0:0: rejecting I/O to offline device
[2610691.093405] sd 7:0:0:0: [sdc] Write Protect is off
[2610691.093408] sd 7:0:0:1: [sdd] READ CAPACITY failed
[2610691.093410] sd 7:0:0:1: [sdd]  Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[2610691.093413] sd 7:0:0:1: [sdd] Sense not available.
[2610691.093413] sd 7:0:0:0: [sdc] Mode Sense: 00 00 00 00
[2610691.093416] sd 7:0:0:1: rejecting I/O to offline device
[2610691.093418] sd 7:0:0:0: rejecting I/O to offline device
[2610691.093421] sd 7:0:0:1: rejecting I/O to offline device
[2610691.093422] sd 7:0:0:0: [sdc] Asking for cache data failed
[2610691.093426] sd 7:0:0:1: rejecting I/O to offline device
[2610691.093426] sd 7:0:0:0: [sdc] Assuming drive cache: write through
[2610691.093429] sd 7:0:0:1: [sdd] Write Protect is off
[2610691.093431] sd 7:0:0:1: [sdd] Mode Sense: 00 00 00 00
[2610691.093434] sd 7:0:0:1: rejecting I/O to offline device
[2610691.093436] sd 7:0:0:1: [sdd] Asking for cache data failed
[2610691.093437] sd 7:0:0:1: [sdd] Assuming drive cache: write through
[2610691.093479] sd 7:0:0:6: rejecting I/O to offline device
[2610691.093482] sd 7:0:0:6: rejecting I/O to offline device
[2610691.093485] sd 7:0:0:6: rejecting I/O to offline device
[2610691.093487] sd 7:0:0:6: [sdi] READ CAPACITY(16) failed
[2610691.093488] sd 7:0:0:6: [sdi]  Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[2610691.093491] sd 7:0:0:6: [sdi] Sense not available.
[2610691.093491] sd 7:0:0:7: rejecting I/O to offline device
[2610691.093494] sd 7:0:0:6: rejecting I/O to offline device
[2610691.093497] sd 7:0:0:6: rejecting I/O to offline device
[2610691.093497] sd 7:0:0:7: rejecting I/O to offline device
[2610691.093500] sd 7:0:0:7: rejecting I/O to offline device
[2610691.093503] sd 7:0:0:6: rejecting I/O to offline device
[2610691.093505] sd 7:0:0:6: [sdi] READ CAPACITY failed
[2610691.093506] sd 7:0:0:7: [sdj] READ CAPACITY(16) failed
[2610691.093507] sd 7:0:0:7: [sdj]  Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[2610691.093510] sd 7:0:0:7: [sdj] Sense not available.
[2610691.093513] sd 7:0:0:6: [sdi]  
[2610691.093513] sd 7:0:0:7: rejecting I/O to offline device
[2610691.093517] Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[2610691.093517] sd 7:0:0:7: rejecting I/O to offline device
[2610691.093520] sd 7:0:0:6: [sdi] Sense not available.
[2610691.093520] sd 7:0:0:7: rejecting I/O to offline device
[2610691.093522] sd 7:0:0:7: [sdj] READ CAPACITY failed
[2610691.093525] sd 7:0:0:6: rejecting I/O to offline device
[2610691.093526] sd 7:0:0:7: [sdj]  
[2610691.093528] sd 7:0:0:6: rejecting I/O to offline device
[2610691.093529] Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[2610691.093532] sd 7:0:0:6: rejecting I/O to offline device
[2610691.093532] sd 7:0:0:7: [sdj] Sense not available.
[2610691.093535] sd 7:0:0:6: [sdi] Write Protect is off
[2610691.093537] sd 7:0:0:6: [sdi] Mode Sense: 00 00 00 00
[2610691.093540] sd 7:0:0:6: rejecting I/O to offline device
[2610691.093540] sd 7:0:0:7: rejecting I/O to offline device
[2610691.093544] sd 7:0:0:6: [sdi] Asking for cache data failed
[2610691.093544] sd 7:0:0:7: rejecting I/O to offline device
[2610691.093548] sd 7:0:0:6: [sdi] Assuming drive cache: write through
[2610691.093548] sd 7:0:0:7: rejecting I/O to offline device
[2610691.093550] sd 7:0:0:7: [sdj] Write Protect is off
[2610691.093552] sd 7:0:0:7: [sdj] Mode Sense: 00 00 00 00
[2610691.093554] sd 7:0:0:7: rejecting I/O to offline device
[2610691.093556] sd 7:0:0:7: [sdj] Asking for cache data failed
[2610691.093557] sd 7:0:0:7: [sdj] Assuming drive cache: write through
[2610691.093568] sd 7:0:0:4: rejecting I/O to offline device
[2610691.093571] sd 7:0:0:4: rejecting I/O to offline device
[2610691.093574] sd 7:0:0:4: rejecting I/O to offline device
[2610691.093576] sd 7:0:0:4: [sdg] READ CAPACITY(16) failed
[2610691.093577] sd 7:0:0:4: [sdg]  
[2610691.093577] sd 7:0:0:5: rejecting I/O to offline device
[2610691.093581] Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[2610691.093581] sd 7:0:0:5: rejecting I/O to offline device
[2610691.093584] sd 7:0:0:4: [sdg] Sense not available.
[2610691.093584] sd 7:0:0:5: rejecting I/O to offline device
[2610691.093587] sd 7:0:0:5: [sdh] READ CAPACITY(16) failed
[2610691.093590] sd 7:0:0:4: rejecting I/O to offline device
[2610691.093590] sd 7:0:0:5: [sdh]  
[2610691.093593] sd 7:0:0:4: rejecting I/O to offline device
[2610691.093593] Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[2610691.093596] sd 7:0:0:4: rejecting I/O to offline device
[2610691.093597] sd 7:0:0:5: [sdh] Sense not available.
[2610691.093600] sd 7:0:0:4: [sdg] READ CAPACITY failed
[2610691.093602] sd 7:0:0:4: [sdg]  Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[2610691.093604] sd 7:0:0:4: [sdg] Sense not available.
[2610691.093607] sd 7:0:0:4: rejecting I/O to offline device
[2610691.093607] sd 7:0:0:5: rejecting I/O to offline device
[2610691.093609] sd 7:0:0:5: rejecting I/O to offline device
[2610691.093613] sd 7:0:0:4: rejecting I/O to offline device
[2610691.093616] sd 7:0:0:4: rejecting I/O to offline device
[2610691.093616] sd 7:0:0:5: rejecting I/O to offline device
[2610691.093618] sd 7:0:0:5: [sdh] READ CAPACITY failed
[2610691.093621] sd 7:0:0:4: [sdg] Write Protect is off
[2610691.093623] sd 7:0:0:4: [sdg] Mode Sense: 00 00 00 00
[2610691.093623] sd 7:0:0:5: [sdh]  
[2610691.093626] sd 7:0:0:4: rejecting I/O to offline device
[2610691.093627] Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[2610691.093630] sd 7:0:0:4: [sdg] Asking for cache data failed
[2610691.093632] sd 7:0:0:4: [sdg] Assuming drive cache: write through
[2610691.093632] sd 7:0:0:5: [sdh] Sense not available.
[2610691.093634] sd 7:0:0:5: rejecting I/O to offline device
[2610691.093637] sd 7:0:0:5: rejecting I/O to offline device
[2610691.093640] sd 7:0:0:5: rejecting I/O to offline device
[2610691.093642] sd 7:0:0:5: [sdh] Write Protect is off
[2610691.093644] sd 7:0:0:5: [sdh] Mode Sense: 00 00 00 00
[2610691.093646] sd 7:0:0:5: rejecting I/O to offline device
[2610691.093648] sd 7:0:0:5: [sdh] Asking for cache data failed
[2610691.093650] sd 7:0:0:5: [sdh] Assuming drive cache: write through
[2610691.093657] sd 7:0:0:3: rejecting I/O to offline device
[2610691.093660] sd 7:0:0:3: rejecting I/O to offline device
[2610691.093663] sd 7:0:0:3: rejecting I/O to offline device
[2610691.093665] sd 7:0:0:3: [sdf] READ CAPACITY(16) failed
[2610691.093666] sd 7:0:0:3: [sdf]  Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[2610691.093670] sd 7:0:0:3: [sdf] Sense not available.
[2610691.093692] sd 7:0:0:2: rejecting I/O to offline device
[2610691.093695] sd 7:0:0:2: rejecting I/O to offline device
[2610691.093697] sd 7:0:0:2: rejecting I/O to offline device
[2610691.093700] sd 7:0:0:2: [sde] READ CAPACITY(16) failed
[2610691.093701] sd 7:0:0:2: [sde]  Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[2610691.093703] sd 7:0:0:2: [sde] Sense not available.
[2610691.093705] sd 7:0:0:2: rejecting I/O to offline device
[2610691.093975] sd 7:0:0:3: rejecting I/O to offline device
[2610691.093979] sd 7:0:0:3: rejecting I/O to offline device
[2610691.093982] sd 7:0:0:3: rejecting I/O to offline device
[2610691.093984] sd 7:0:0:3: [sdf] READ CAPACITY failed
[2610691.093986] sd 7:0:0:3: [sdf]  Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[2610691.093988] sd 7:0:0:3: [sdf] Sense not available.
[2610691.093990] sd 7:0:0:3: rejecting I/O to offline device
[2610691.093993] sd 7:0:0:3: rejecting I/O to offline device
[2610691.093996] sd 7:0:0:3: rejecting I/O to offline device
[2610691.093998] sd 7:0:0:3: [sdf] Write Protect is off
[2610691.094000] sd 7:0:0:3: [sdf] Mode Sense: 00 00 00 00
[2610691.094002] sd 7:0:0:3: rejecting I/O to offline device
[2610691.094004] sd 7:0:0:3: [sdf] Asking for cache data failed
[2610691.094005] sd 7:0:0:3: [sdf] Assuming drive cache: write through
[2610691.094022] sd 7:0:0:2: rejecting I/O to offline device
[2610691.094025] sd 7:0:0:2: rejecting I/O to offline device
[2610691.094027] sd 7:0:0:2: [sde] READ CAPACITY failed
[2610691.094029] sd 7:0:0:2: [sde]  Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[2610691.094031] sd 7:0:0:2: [sde] Sense not available.
[2610691.094033] sd 7:0:0:2: rejecting I/O to offline device
[2610691.094035] sd 7:0:0:2: rejecting I/O to offline device
[2610691.094038] sd 7:0:0:2: rejecting I/O to offline device
[2610691.094040] sd 7:0:0:2: [sde] Write Protect is off
[2610691.094042] sd 7:0:0:2: [sde] Mode Sense: 00 00 00 00
[2610691.094044] sd 7:0:0:2: rejecting I/O to offline device
[2610691.094054] sd 7:0:0:2: [sde] Asking for cache data failed
[2610691.094056] sd 7:0:0:2: [sde] Assuming drive cache: write through
[2610691.094078] sd 7:0:0:7: [sdj] Attached SCSI disk
[2610691.094692] sd 7:0:0:2: [sde] Attached SCSI disk
[2610691.094822] sd 7:0:0:5: [sdh] Attached SCSI disk
[2610691.094859] sd 7:0:0:6: [sdi] Attached SCSI disk
[2610691.094894] sd 7:0:0:1: [sdd] Attached SCSI disk
[2610691.094951] sd 7:0:0:0: [sdc] Attached SCSI disk
[2610691.095008] sd 7:0:0:3: [sdf] Attached SCSI disk
[2610691.095044] sd 7:0:0:4: [sdg] Attached SCSI disk



So here is the procedure to make it detect on a Linux PC.

There is a kernel module called UAC, which is the culprit. Disabling the kernel module, made my disk getting detected.

# rmmod uac

unplug and plug hard disk and it gets detected.
Its simple :)

Saturday, January 18, 2014

Postgreql - Import All Tables to CSV

Hi all,
Today  i came across a situation where i need to import and export csv to postgresql db and to migrate all tables in a db to csv format. Lets see what i did,

Step 1: Change to 'postgres user'

# su postgres

Step 2: Login to a database (In my case i used a local database to test)

# psql <database name>

Example:
# psql testdb

Step 3: Lets see how to export just one table

# COPY <table name> to '/path/to/csv file' delimeters',';

Example:
# COPY zones to '/tmp/test.csv' delimeters',';

Step 4: Lets see how to import from csv

# COPY <table name> from '/path/to/csv file' delimeters',';

Example:
# COPY zones from '/tmp/test.csv' delimeters',';

Step 4: Lets see how to import all tables in a database. For that we need to create a function like below

# CREATE OR REPLACE FUNCTION all_csv(path TEXT) RETURNS void AS $$
   declare
      tables RECORD;
      statement TEXT;
   begin
      FOR tables IN 
         SELECT (table_schema || '.' || table_name) AS schema_table
         FROM information_schema.tables t INNER JOIN information_schema.schemata s 
         ON s.schema_name = t.table_schema 
         WHERE t.table_schema NOT IN ('pg_catalog', 'information_schema', 'configuration')
         ORDER BY schema_table
     LOOP
     statement := 'COPY ' || tables.schema_table || ' TO ''' || path || '/' || tables.schema_table || '.csv' ||'''          DELIMITER '';'' CSV HEADER';
         EXECUTE statement;
     END LOOP;
     return;  
     end;
     $$ LANGUAGE plpgsql;

Next we can use the above function to export to a folder

# SELECT all_csv('/path/to/directiry');

example:
SELECT all_csv('/tmp/tt');

Thats it, we are done. Enjoy with your work....