Configuring an external USB drive with LVM
Published: Thursday, Feb 28, 2008 Last modified: Friday, May 12, 2023
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!