trying to solve IT problems

How I tried to fix certain programming problems, mostly in the java, JEE, JBoss scene, web area and using Ubuntu or Debian linux.

  • Home
  • Geomajas / GIS
  • About
Twitter RSS
Category Archives: ubuntu / debian / linux

Salvaging a system with a broken disk

Posted on July 28, 2011 by joachim
No Comments

Once there was a server which contained two Xen virtual machines. All Ubuntu.
Then, suddenly (what else), disk failures. The backup was still on the todo list, so…

Many hours later trying to recover everything, I learned the following

Rescuing the domU images

(GNU) ddrescue to the rescue. This is a command which is similar to dd (which does low-level byte-by-byte disk copying), but with some added features for accessing failing disks. I used the command
ddrescue -v --no-split /dev/sdc sdc.img sdc.log
You could add additional steps to retry the failed parts hoping to recover more. This can only work if your new disk is bigger than the failing disk. Making the copy takes a lot of time. Copying files several GB in size takes a lot of time between healthy disks, reading a failing disk only makes it slower.

The disk can then be accessed using the loopback device. For starts, you can have a look at the partition table (giving valuable information for later, included in the output

$ fdisk -l -u -C 9039 sdc.img 

Disk sdc.img: 0 MB, 0 bytes
255 heads, 63 sectors/track, 9039 cylinders, total 0 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000c6c37

  Device Boot      Start         End      Blocks   Id  System
sdc.img1   *   119684250   139219289     9767520   83  Linux
sdc.img2       139219290   145211534     2996122+   5  Extended
sdc.img3              63   119684249    59842093+  83  Linux
sdc.img5       139219353   145211534     2996091   82  Linux swap / Solaris

You need to know the number of cylinders of your original disk to view this info (the “-C 9039″ parameter), which you can read from a fdisk on the original disk. So this command serves more as a sanity check that the copying was at least partially ok.

You can now access the partitions using the loopback device (as root, the mout point “/tst” in this example should already exist)

mount -o loop,offset=32256 -t ext3 sdc.img /test/
mount -o loop,offset=61278336000 -t ext3 sdc.img /test/

The offset values need to be given in bytes and can be calculated from the fdisk output. For example for sdc.img3 the offset is 63 (from the fdisk output) times the sector size (512 – also displayed in fdisk output), giving 32256.

Once mounted, you can go through the fisk and retrieve the xen disk images. These images are also images just like the ones created using dd (or ddrescue) and can be mounted in the same way (as these are partition images, you don’t need the offset).

The rescueing may have broken the xen disk image. To fix (please do take another copy of the disk image first), unmount the disk and check/fix:

losetup /dev/loop0 disk.img
e2fsck -f /dev/loop0
losetup -d /dev/loop0

Fresh dom0 installation

While I love Ubuntu, recent versions don’t have Xen support anymore (dom0 was 8.04, the latest version where it was still included). The guides to get it installed did not work for me (including recompile of xen, kernel etc). Finally I ended up installing Debian Squeeze. See the guide at http://wiki.debian.org/Xen.

One point where the guide is not clear, you have to add the line
(network-script 'network-bridge antispoof=yes')
in /etc/xen/xend-config.sxp to make the network bridge work (the file seems to indicate using a network bridge is the default, but it made a difference for me).

Getting the domU system up and running again

This was (in hindsight, there was a lot of trial-and-error and googling to get to this point) quite easy.

In the domU configuration file, change the kernel and ramdisk to point to the booted version, in my case this was

kernel = '/boot/vmlinuz-2.6.32-5-xen-amd64'
ramdisk = '/boot/initrd.img-2.6.32-5-xen-amd64'

I could notw create the virtual machines, but they could not yet access the disk. Apparently Debian does not include the blocktap device for licensing reasons, so accessing the disk using the (supposedly faster) “tap:iao:” protocol fails. This should be replaced by “file:”. Secondly, my original configuration created the disk as “sda1″. For some reason this failed and needs to be replaced by “xvda1″ (also in the “root” configuration).

Backups?

This time around, I did fix the backups. As I want these to be remote, I used dropbox http://wiki.dropbox.com/TipsAndTricks/TextBasedLinuxInstall. This works nicely but (as I don’t see how you can restrict what data is coming in without a GUI, it is best to create a specific dropbox account for the machine – the data can always be shared in other dropboxes).

Categories: ubuntu / debian / linux

TortoiseSVN on linux?

Posted on April 19, 2011 by joachim
No Comments

Yes it exists, RabbitVCS.

Categories: ubuntu / debian / linux

How to convert a file with invalid characters to be opened in gedit

Posted on April 12, 2011 by joachim
No Comments

First force UTF-8 proper, then remove null characters (gedit if very unhappy about them).

iconv -c -f 'UTF-8' -t 'UTF-8//IGNORE' input-file | tr -d '\0' >output-file

Categories: ubuntu / debian / linux
Previous Entries
  • Recent Posts

    • Plug-ins and faces overview for Geomajas
    • Adding an admin user in JIRA with embedded database
    • The Geomajas project release releases back-end 1.10, three independent projects and 15 plug-ins
    • Spatial data in the enterprise BeJUG session
    • Ktunaxa Referral Management System
  • Recent Comments

    • Eric on delete windows service account
    • nandra indonesia on delete windows service account
    • joachim on CXF ws client, dynamic endpoint and loading WSDL from the classpath
    • TXMaster on CXF ws client, dynamic endpoint and loading WSDL from the classpath
    • TXMaster on CXF ws client, dynamic endpoint and loading WSDL from the classpath
  • Categories

    • architecture
    • competencies
    • equanda
    • geomajas / GIS
    • java
    • jboss
    • maven
    • semantics
    • tapestry5
    • ubuntu / debian / linux
    • Uncategorized
    • web development
    • web services
© trying to solve IT problems. Proudly Powered by WordPress | Nest Theme by YChong