Configuring an external USB drive with LVM

Published: Thursday, Feb 28, 2008 Last modified: Monday, Dec 9, 2024

Seagate Freeagent Desktop 500GB External Hard drive 7200RPM 8MB USB2.0

For 69GBP from Amazon.co.uk. So that’s about 15 pence for Gigabyte. Quite good value!

Plug it in:

scsi 3:0:0:0: Direct-Access     Seagate  FreeAgentDesktop 100F PQ: 0 ANSI: 4

sd 3:0:0:0: [sdb] 976773168 512-byte hardware sectors (500108 MB)

sd 3:0:0:0: [sdb] Write Protect is off

sd 3:0:0:0: [sdb] Mode Sense: 1c 00 00 00

sd 3:0:0:0: [sdb] Assuming drive cache: write through

sd 3:0:0:0: [sdb] 976773168 512-byte hardware sectors (500108 MB)

sd 3:0:0:0: [sdb] Write Protect is off

sd 3:0:0:0: [sdb] Mode Sense: 1c 00 00 00

sd 3:0:0:0: [sdb] Assuming drive cache: write through

 sdb: sdb1

sd 3:0:0:0: [sdb] Attached SCSI disk

In my case it’s sdb. You need to be super careful and USE THE RIGHT DISK!

Prime the disk:

x61:~% sudo pvcreate /dev/sdb

  Device /dev/sdb not found (or ignored by filtering).

x61:~% sudo pvcreate /dev/sdb1

  Physical volume "/dev/sdb1" successfully created

Should show up now:

x61:~% sudo pvscan

  PV /dev/sda5   VG x61   lvm2 [111.55 GB / 4.00 MB free]

  PV /dev/sdb1            lvm2 [465.76 GB]

  Total: 2 [577.31 GB] / in use: 1 [111.55 GB] / in no VG: 1 [465.76 GB]

Now we need a Volume Group:

x61:~% sudo vgcreate seagate /dev/sdb1

  Volume group "seagate" successfully created

x61:~% sudo vgscan

  Reading all physical volumes.  This may take a while...

  Found volume group "seagate" using metadata type lvm2

  Found volume group "x61" using metadata type lvm2

Ok, lets create the Logical Volume:

x61:~% sudo lvcreate -l 100%FREE -next3 seagate

  Logical volume "ext3" created

x61:~% sudo lvscan

  ACTIVE            '/dev/seagate/ext3' [465.76 GB] inherit

  ACTIVE            '/dev/x61/root' [16.68 GB] inherit

  ACTIVE            '/dev/x61/swap_1' [2.59 GB] inherit

  ACTIVE            '/dev/x61/home' [80.00 GB] inherit

  ACTIVE            '/dev/x61/crypt' [12.27 GB] inherit

Ok, now lets create an ext3 partition on there:

x61:~% sudo mkfs.ext3 /dev/seagate/ext3

mke2fs 1.40.6 (09-Feb-2008)

Warning: 256-byte inodes not usable on older systems

Filesystem label=

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

30531584 inodes, 122095616 blocks

6104780 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=0

3727 block groups

32768 blocks per group, 32768 fragments per group

8192 inodes per group

Superblock backups stored on blocks:

		32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,

		4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,

		102400000


Writing inode tables: done

Creating journal (32768 blocks): done

Writing superblocks and filesystem accounting information: done


This filesystem will be automatically checked every 25 mounts or

180 days, whichever comes first.  Use tune2fs -c or -i to override.

Ok, lets test it out:

x61:~% sudo mkdir /mnt/sg

x61:~% sudo mount /dev/seagate/ext3 /mnt/sg

x61:~% df -h | grep sg

					  459G  199M  435G   1% /mnt/sg

x61:~% ll /mnt/sg

total 24K

drwxr-xr-x 3 root root 4.0K 2008-02-28 16:41 ./

drwxr-xr-x 8 root root 4.0K 2008-02-28 16:50 ../

drwx------ 2 root root  16K 2008-02-28 16:41 lost+found/

SO 500G becomes about 435G….

So putting into my slug, I found I needed to make it ACTIVE by:

slug:~% sudo lvscan

  inactive          '/dev/seagate/ext3' [465.76 GB] inherit

slug:~% sudo lvchange -a y /dev/seagate/ext3

slug:~% sudo lvscan

  ACTIVE            '/dev/seagate/ext3' [465.76 GB] inherit

Ok lets share this guy:

slug:~% egrep seagate /etc/exports

/media/seagate 192.168.1.*(insecure,rw,async,no_root_squash,no_subtree_check,nohide)

slug:~% egrep seagate /etc/fstab

/dev/seagate/ext3 /media/seagate auto   rw,user,auto  0       0

Problems, bugs, I wish this didn’t happen:

sd 1:0:0:0: Device not ready: <6>: Current: sense key=0x2

	ASC=0x4 ASCQ=0x2

end_request: I/O error, dev sdb, sector 12807

Buffer I/O error on device dm-0, logical block 1545

lost page write due to I/O error on dm-0

sd 1:0:0:0: Device not ready: <6>: Current: sense key=0x2

	ASC=0x4 ASCQ=0x2

end_request: I/O error, dev sdb, sector 12807

Buffer I/O error on device dm-0, logical block 1545

lost page write due to I/O error on dm-0

sd 1:0:0:0: Device not ready: <6>: Current: sense key=0x2

I have noticed when initially mounting and using the device, you can see these scary messages. The OS can decide to remount the device as readonly and then you’ll know things are going wrong. To rectifiy the situation I simply unmount and mount the disk again and watch the logs with tail -f /var/log/messages.

Ok, I found the fix for external Seagate USB hard drives!