Resizing File Systems

This is Linux specific of course. There are three file systems I’ll be listing here. The more common EXT4, newer XFS, and newest GPT file system.

For this example, we have a small image and need to extend it. Additional space has been added to bring the file system to 20 Gigabytes. You just need to expand the space to 20 Gigabytes.

One note here before we continue. Observe that all these examples are a single file system. What that means is extending a partition is pretty easy. But what happens with a normal configuration where there are separate file systems such as root, usr, home, var, etc? If the file system is at the end of the partition table, it’s pretty easy to extend it which is why, typically var is the last file system. But what happens if home needs to be extended? When you’re adding sectors, you add it to the end of a disk. What this means is you need to create a new home file system with the new size, move all the files to the new file system, unmount the old one, fix /etc/fstab, and remount. And now you have the old home directory as a blank spot in your partition table. You might be able to use it to extend usr if it needed extending. Or maybe use it as a /var specific file system such as for mysql. It’s why LVM is so popular.

EXT4 File System

# df -k
Filesystem     1K-blocks   Used Available Use% Mounted on
udev             1014152      0   1014152   0% /dev
tmpfs             204548   2948    201600   2% /run
/dev/vda1        2030416 991160    918068  52% /
tmpfs            1022720      0   1022720   0% /dev/shm
tmpfs               5120      0      5120   0% /run/lock
tmpfs            1022720      0   1022720   0% /sys/fs/cgroup
tmpfs             204544      0    204544   0% /run/user/0

Run the fdisk command to confirm space was added and is recognized.

# fdisk -l
Disk /dev/vda: 20 GiB, 21474836480 bytes, 41943040 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
Disklabel type: dos
Disk identifier: 0xe5c3b0d8
 
Device     Boot Start     End Sectors Size Id Type
/dev/vda1  *     2048 4194303 4192256   2G 83 Linux

And there it is, 20 GiB. You’ll delete the existing partition table and add it back in at the new size. Until you actually write to the disk, the changes are in memory. Exiting without saving will prevent the update.

# fdisk /dev/vda
 
Welcome to fdisk (util-linux 2.33.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
 
 
Command (m for help): p
Disk /dev/vda: 20 GiB, 21474836480 bytes, 41943040 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
Disklabel type: dos
Disk identifier: 0xe5c3b0d8
 
Device     Boot Start     End Sectors Size Id Type
/dev/vda1  *     2048 4194303 4192256   2G 83 Linux
 
Command (m for help): d
Selected partition 1
Partition 1 has been deleted.
 
Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-41943039, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-41943039, default 41943039):
 
Created a new partition 1 of type 'Linux' and of size 20 GiB.
Partition #1 contains a ext4 signature.
 
Do you want to remove the signature? [Y]es/[N]o: n
 
Command (m for help): p
 
Disk /dev/vda: 20 GiB, 21474836480 bytes, 41943040 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
Disklabel type: dos
Disk identifier: 0xe5c3b0d8
 
Device     Boot Start      End  Sectors Size Id Type
/dev/vda1        2048 41943039 41940992  20G 83 Linux
 
Command (m for help): w
The partition table has been altered.
Syncing disks.

From here you can either reboot the server or if partprobe is installed, run it to register the new table to the kernel.

# partprobe

Once registered, you simply extend the file system to fit the now available space using resize2fs.

# resize2fs /dev/vda1
resize2fs 1.44.5 (15-Dec-2018)
Filesystem at /dev/vda1 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 3
[ 4014.025845] EXT4-fs (vda1): resizing filesystem from 524032 to 5242624 blocks
[ 4014.172547] EXT4-fs (vda1): resized filesystem to 5242624
The filesystem on /dev/vda1 is now 5242624 (4k) blocks long.

And done, the file system now registers 20 Gigabytes.

# df -k
Filesystem     1K-blocks    Used Available Use% Mounted on
udev             1014152       0   1014152   0% /dev
tmpfs             204548    2948    201600   2% /run
/dev/vda1       20608592 1008764  18723724   6% /
tmpfs            1022720       0   1022720   0% /dev/shm
tmpfs               5120       0      5120   0% /run/lock
tmpfs            1022720       0   1022720   0% /sys/fs/cgroup
tmpfs             204544       0    204544   0% /run/user/0

XFS File Systems

In this case, you won’t need to use fdisk to make the necessary changes. Once the 20 Gig has been added, you just need to run the growpart command to extend the file system.

# growpart /dev/vda 1
CHANGED: partition=1 start=2048 old: size=16384000 end=16386047 new: size=41940992 end=41943039

Then use the xfs_growfs command to extend the file system.

# xfs_growfs -d /dev/vda1
meta-data=/dev/vda1              isize=512    agcount=4, agsize=512000 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=2048000, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 2048000 to 5242624

And the file system is 20 Gigs now.

GPT File Systems

This one is pretty similar to the EXT4 File System updates. The only change is managing partition tables uses gdisk instead of fdisk. Otherwise everything else is the same as EXT4.

# gdisk /dev/vda
GPT fdisk (gdisk) version 1.0.3
 
Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present
 
Found valid GPT with protective MBR; using GPT.
 
Command (? for help): p
Disk /dev/vda: 41943040 sectors, 20.0 GiB
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): E1A6C9DD-012D-4943-8697-0FE02F412F36
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 41943006
Partitions will be aligned on 2048-sector boundaries
Total free space is 37332958 sectors (17.8 GiB)
 
Number  Start (sector)    End (sector)  Size       Code  Name
   1          227328         4612062   2.1 GiB     8300
  14            2048           10239   4.0 MiB     EF02
  15           10240          227327   106.0 MiB   EF00
 
Command (? for help): d
Partition number (1-15): 1
 
Command (? for help): n
Partition number (1-128, default 1): 1
First sector (34-41943006, default = 227328) or {+-}size{KMGTP}:
Last sector (227328-41943006, default = 41943006) or {+-}size{KMGTP}:
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'
 
Command (? for help): p
Disk /dev/vda: 41943040 sectors, 20.0 GiB
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): E1A6C9DD-012D-4943-8697-0FE02F412F36
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 41943006
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)
 
Number  Start (sector)    End (sector)  Size       Code  Name
   1          227328        41943006   19.9 GiB    8300  Linux filesystem
  14            2048           10239   4.0 MiB     EF02
  15           10240          227327   106.0 MiB   EF00
 
Command (? for help): w
 
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
 
Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/vda.
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.

Again, you’ll use partprobe and resize2fs to extend the file system.

Notes

Just noting that this was done quite some time ago and it’s been updated several times over the years to be more current.

Posted in Computers, Troubleshooting | Tagged , , , , , , , , | Leave a comment

Linux Logical Volume Management

Overview

There are many articles and tutorials on the use of the Linux Logical Volume Manager (LVM). I have two goals when I write up these sorts of docs. One to create a document that is appropriate for the environment and two to help others who need the information in the wee hours during an incident or event.

Background

One of the issues with disk management in Linux is being able to extend a file system when needed. Since file systems are generally split up into different uses; root, usr, var, home, and so on, being able to extend that file system when not using LVM means the new space must be contiguous with the file system you want to extend. For this reason, generally var is the last file system created in a system as that’s the file system more likely to need to be extended. The logs get bigger, applications such as mysql are in /var, etc. If a different file system needs to be extended, you have to create a brand new one of the new size, move all the files to the new file system, unmount the old one and mount the new one. This also leaves a gap in the file system usage. As such, when creating file systems admins tend to err on the side of caution and give a bit of extra space.

When using LVM, you add the new disk to the volume group and extend the volume to the necessary size. It does add a layer between the application and the physical disk so there is a minor performance hit. And with the new virtual technology, an admin can add a new disk at the touch of a button.

As a note, the boot disk is a physical slice and not brought under LVM control. This is due to the kernel being located in this file system and loaded prior to the LVM modules. Make sure this file system is large enough to support multiple kernels, about 500 gigabytes.

Commands

There are three groups of commands. Physical Volumes, Volume Groups, and Logical Volumes. Physical Volume commands manage the physical disks. Adding or removing them from LVM and making them available to the system. Volume Groups are collections of one or more Physical Volumes. And Logical Volumes are slices of the Volume Groups.

I’m not going to dig into every command. Feel free to check the references at the end of this article and on Linux server, use the lvm command to see a list of all possible commands on a server.

To view summary information, the pvs (physical volume), vgs (volume group), and lvs (logical volume) commands are used. The pvdisplay, vgdisplay, and lvdisplay provide extended information.

To create LVM volumes, the pvcreate (add a physical disk to lvm), vgcreate (create a volume group), and lvcreate (create a logical volume) commands are used.

To extend LVM volumes, the pvextend, vgextend, and lvextend commands are used. If you’re given a new disk, you would use pvcreate and then vgextend and lvextend. If an existing physical disk is extended though, you’d use pvextend and then lvextend.

Physical Volume Management

You are given a disk to be used for a server and need to add it. First off, you need to add it to LVM. This can be the entire disk or a partition on the disk. A partition will end in a number.

# pvcreate /dev/sda2
# pvcreate /dev/sdb

To view the information, you can use the pvs or pvdisplay command.

# pvs
  PV         VG   Fmt  Attr PSize    PFree
  /dev/sda2  vg00 lvm2 a--    37.79g 4.00m
  /dev/sdb   vg01 lvm2 a--  <100.00g    0
# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               vg00
  PV Size               <37.80 GiB / not usable 4.00 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              9675
  Free PE               1
  Allocated PE          9674
  PV UUID               UCPvsu-xHVc-hZ12-CQGW-y3Ss-vfUp-x1zCdS

  --- Physical volume ---
  PV Name               /dev/sdb
  VG Name               vg01
  PV Size               100.00 GiB / not usable 4.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              25599
  Free PE               0
  Allocated PE          25599
  PV UUID               eipsjW-KysF-VK4o-mUcV-D4j7-FsOu-uqra6l

Note that the pvdisplay command gives you the number of available or Free Physical Extents. This is the number you’d use when creating a logical volume.

If an existing physical disk is extended, you will need to delete the partition table and recreate it to the new size.

I’ve broken the example below up into sections to make it easier to parse.

# fdisk /dev/sda
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p

Disk /dev/sda: 85.9 GB, 85899345920 bytes, 167772160 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 label type: dos
Disk identifier: 0x000f08ea

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048    80478207    39726080   8e  Linux LVM

Command (m for help): d
Partition number (1,2, default 2): 2
Partition 2 is deleted

Note that the Linux LVM partition is 80k sectors. This equates to about 40 gigabytes. As noted here, you’ve been given 40 gigabytes more space but extending the original disk not as a second disk. You’ll delete the second partition (sda2) and add it back in at the new size.

Again, this is a single session. Do not save until the end.

Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
Partition number (2-4, default 2): 2
First sector (1026048-167772159, default 1026048): 
Using default value 1026048
Last sector, +sectors or +size{K,M,G} (1026048-167772159, default 167772159): 
Using default value 167772159
Partition 2 of type Linux and of size 79.5 GiB is set

Command (m for help): p

Disk /dev/sda: 85.9 GB, 85899345920 bytes, 167772160 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 label type: dos
Disk identifier: 0x000f08ea

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048   167772159    83373056   83  Linux

We’ve created a new partition using all the available sectors to extend it to 80 gigabytes. There is a slight issue though. Did you notice it?

Command (m for help): t
Partition number (1,2, default 2): 2
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'

Command (m for help): p

Disk /dev/sda: 85.9 GB, 85899345920 bytes, 167772160 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 label type: dos
Disk identifier: 0x000f08ea

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048   167772159    83373056   8e  Linux LVM

It’s not a Linux LVM partition. You’ll need to change the partition type from Linux to 8e aka Linux LVM.

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

And save your changes. Once done, use the partprobe command to have the kernel recognize the new partition table.

# partprobe

And finally you extend the physical volume in LVM.

# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               vg00
  PV Size               37.89 GiB / not usable 3.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              9698
  Free PE               2
  Allocated PE          9696
  PV UUID               tsFRnn-bQNH-qm0Q-CY7O-6GTl-93P2-4lbbig
      
# pvresize /dev/sda2
  Physical volume "/dev/sda2" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized
# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               vg00
  PV Size               79.51 GiB / not usable 2.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              20354
  Free PE               10658
  Allocated PE          9696
  PV UUID               tsFRnn-bQNH-qm0Q-CY7O-6GTl-93P2-4lbbig

Volume Group Management

Now that you have physical volumes prepared, you need to either add a new volume group or extend an existing one.

# vgextend vg00 /dev/sdb
# vgcreate vg01 /dev/sdc 

In order to view a volume group, you can use the vgs or vgdisplay commands.

# vgs
  VG   #PV #LV #SN Attr   VSize    VFree
  vg00   1   6   0 wz--n-   37.79g 4.00m
  vg01   1   1   0 wz--n- <100.00g    0
# vgdisplay
  --- Volume group ---
  VG Name               vg00
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  7
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                6
  Open LV               6
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               37.79 GiB
  PE Size               4.00 MiB
  Total PE              9675
  Alloc PE / Size       9674 / <37.79 GiB
  Free  PE / Size       1 / 4.00 MiB
  VG UUID               yTaVIr-8bLB-HvQ9-WSns-LB6O-FYXW-AkydB2

  --- Volume group ---
  VG Name               vg01
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <100.00 GiB
  PE Size               4.00 MiB
  Total PE              25599
  Alloc PE / Size       25599 / <100.00 GiB
  Free  PE / Size       0 / 0
  VG UUID               5Llgfv-9fxg-IxzJ-dT4j-ef5Q-NB0Y-RHL5jS

Logical Volume Management

Now you want to use the available space in file systems. Either by creating a new one or extending an existing file system such as /var.

The logical volume command has two flags for identifying space. The -l (lower case L) flag which uses the physical extents as the option and the -L flag which uses disk sizes in Megabytes, Gigabytes, etc as options.

The -n flag names the file system.

For example, to create a 20 gigabyte file system called fs01 using the vg00 volume group:

# lvcreate -L20G -nfs01 vg00

You can also create one using physical extents. You’ll need to get the amount of Free PE from the output of the pvdisplay command and then calculate what 20 gigabytes might be. In looking at the above examples, 80 gigabytes is approximately 20,354 physical extents. divide by four and you get approximately 5,000 physical extents.

# lvcreate -l5000 -nfs01 vg00

Of course it’s not exactly 20G which is why you’d use the -L flag vs trying to figure out what 20 gigabytes is in physical extents.

Assuming you’re creating a file system, you’ll use the appropriate command to format it. In this example, I’m using a common EXT4 file system but others are available depending on your use case.

# mkfs -t ext4 /dev/mapper/vg00-fs01
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
4915200 inodes, 19659776 blocks
982988 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
600 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

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 27 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

Finally update /etc/fstab to add the mount point for the new file system.

And you’ll use the lvs or lvdisplay commands to view information about the logical volumes on the system.

# lvdisplay
  --- Logical volume ---
  LV Name                /dev/vg00/lv00
  VG Name                vg00
  LV UUID                Zr3Axv-eoOJ-cdM8-Cuvo-t7Db-vlPF-u3wpB3
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                1.00 GB
  Current LE             32
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
   
  --- Logical volume ---
  LV Name                /dev/vg00/lv05
  VG Name                vg00
  LV UUID                30VD3I-i90d-Efl1-PReu-0Wi3-V7ri-tyUJ4L
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                4.00 GB
  Current LE             128
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1
  ...

If you want to extend a logical volume once more space has been added, you’ll use the lvextend command. It works the same as the lvcreate commands with a few changes.

First, you’ll want to pass the -r flag as it extends the file system in addition to extending the logical volume. Much like when you delete a partition and add it back in, and needing to use resize2fs to extend the file system, the -r flag extends the file system.

Next up you can either use a plus to add more space to at logical volume or simply select a larger size than it current is. For example, if you extend a 40 gigabyte logical volume to 80 gigabytes you can either pass -L+40G or -L80G.

# lvextend -r -L+40G /dev/mapper/vg00-fs01
lvextend -- extending logical volume "/dev/vg00/fs01" to 80 GB
lvextend -- doing automatic backup of volume group "vg00"
lvextend -- logical volume "/dev/vg00/fs01" successfully extended

If you forget the -r flag, use the resize2fs command to resize the file system (or other command if not an EXT4 file system).

# resize2fs -p /dev/vg01/fs01
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/vg00/fs01 to 104855552 (4k) blocks.
Begin pass 1 (max = 1600)
Extending the inode table     XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
The filesystem on /dev/vg00/fs01 is now 104855552 blocks long.

Removing Volumes

In case you need to remove a logical volume, volume group, or physical volume, use the following commands.

To remove a logical volume, you have to unmount it first. Of course this means making sure no applications are using the file system or you won’t be able to unmount it.

# umount /dev/mapper/vg00-fs01
# lvremove /dev/mapper/vg00-fs01
lvremove -- do you really want to remove "/dev/mapper/vg00-fs01"? [y/n]: y
lvremove -- logical volume "fs01" successfully removed

Don’t forget to remove it from /etc/fstab.

To remove a volume group, run the vgremove command.

# vgremove vg01

If you just need to remove a physical volume from a volume group, use the vgreduce command.

# vgreduce vg01 /dev/sdb

Finally if you need to remove a physical volume from LVM control, use the pvremove command.

# pvremove /dev/sdb

References

A lot of this is experience but the LVM documentation got me started.

Posted in Computers | Tagged , , , , , , , , | Leave a comment

Mom’s Apple Pie

Pie recipe for Mom’s Apple Pie. Includes pie crust. Pretty tasty.

  • 2 Cans of Pie Apples or about 6 medium sized cored and peeled apples plus about a quarter cup of water.
  • 3/4 Cup of Brown Sugar
  • 1/4 Cup of Sugar
  • 4 Tbl Flour
  • 2 Tsp Cinnamon
  • 1 Tsp Nutmeg
  • 3/4 Tsp Cloves
  • 1/4 Tsp Salt

Mix the ingredients in a bowl. Heat the oven to 400F. Put the ingredients into a pie shell and cover. Cook for 1 hour, every 15 minutes spreading a pat of butter on the crust.

Pie Crust

I increased the ingredients a tad to make sure I had enough for crust. I’d rather cut off a bit of dough than have to try and stretch it out a bit and have it be weak or broken through.

  • 2 1/2 Cups of Flour
  • 1 1/4 Tsp Salt
  • 1 Cup Shortening

Mix together until it looks like corn meal. Add up to 8 Tsp cold water. Mix with a fork and press into a ball. Divide in half and roll out on a floured board.

Posted in Cooking | Tagged , , | Leave a comment

Mom’s Cherry Pie

This is my mom’s recipe for cherry pie. It includes making a pie crust as well. I’ve made it for several years and it’s pretty good.

  • 2 Cans of pitted tart red cherries. No cherry pie filling.
  • 1 cup Sugar
  • 4 Tbl Corn Starch
  • 1 Tsp Cloves
  • 2 Tsp Cinnamon

Drain the cherries into the pan and stir in the ingredients until thick. Pour with the cherries into the pie shell. put the top of the pie crust on top. Cut a few slices into the top of the crust. Cook at 400F for about an hour, crust should be brown on top.

Pie Crust

  • 2 Cups of flour
  • 1/2 Tsp Salt
  • 1 Cup butter
  • 7 to 8 Tbl Water

Stir flour and salt into a medium sized bowl with a pastry blender or a fork. Stir in butter until the pieces are pea sized. At the smallest amount of water and toss with a fork until all the flour is moistened and the mixture starts to form a ball. If necessary, add the remaining water to the crumbs in the bottom of the bowl. Gather dough into your hands, split it in half, and gradually shape it into a circle. You’ll need two, top and bottom.

Posted in Cooking | Tagged , , | Leave a comment

Computer Build

Just a table of information as I keep track of the costs for a new system.

Arrived Item Description Amazon TigerDirect NewEgg
2008/10/02 Case Antec 900 ATX Ultimate Gamer PC Case 79.99    
2008/10/04 Power Supply Corsair 750W CMPSU-750TX 105.61    
2008/10/04 Motherboard Gigabyte GA-EP45-DS3R 144.29    
2008/10/02 CPU Intel Core 2 Due Processor E8500, LGA775 Pkg 3.16 GHz, 6MB L2 Cache, 1333 MHz FSB, 45mm     189.99
2008/10/04 CPU Fan Zalman Ultra Quiet CPU Cooler CNPS9700 LED 53.99    
2008/10/02 Thermal Compound Arctic Silver 5 Thermal Compound

    5.99
2008/10/02 Memory OCZ Fatal1ty Pair 2 Gigabyte DDR2 800Mhz Sticks   49.99  
2008/10/21 Memory OCZ Fatal1ty Pair 2 Gigabyte DDR2 800Mhz Sticks   49.99  
2009/09/02 Video Diamond ATI Radeon HD 4870 1GB GDDR5 PCI-E DUAL DVI-I/TVO   130.00  
2008/10/02 Video Diamond ATI Radeon HD 4870 512M GDDR5 4870PE5512   244.99  
2008/10/02 Hard Disk Seagate Barracuda 7200.10 ST3750640AS 750GB 7200 RPM SATA 3.0Gb/s     94.99
2008/10/02 Hard Disk Seagate Barracuda 7200.10 ST3750640AS 750GB 7200 RPM SATA 3.0Gb/s     94.99
2008/10/16 Hard Disk Seagate Barracuda 7200.10 ST3750640AS 750GB 7200 RPM SATA 3.0Gb/s     94.99
2008/10/07 Sound Card Creative Labs X-Fi XtremeGamer SB073A   89.99  
2008/10/07 Speakers Logitech X-540   79.99  
2008/10/07 DVD Sony DRU-V200S-BR DVD+/-R 20x   39.99  
2010/04/17 OS Microsoft Windows 7 Home Premium Upgrade   108.30  
2010/12/24 Monitor Acer G235H   139.99  
2010/12/24 Monitor Acer G235H   139.99  
2010/12/24 Monitor Acer G235H   139.99  
2010/12/24 Wall Mount Viewpoint F11 Small Tilt Mount Mount   12.99  
2010/12/24 Wall Mount Viewpoint F11 Small Tilt Mount Mount   12.99  
2010/12/24 Wall Mount Viewpoint F11 Small Tilt Mount Mount   12.99  
2010/12/24 Cable 6′ DVI Cable   19.99  
2010/12/28 Monitor Acer G235H   139.99  
2010/12/28 Wall Mount Viewpoint F11 Small Tilt Mount Mount   12.99  
2010/12/28 Cable 6′ DVI Cable   19.99  
2010/01/07 Cable 10′ DVI Cable   29.98  
2010/01/07 Cable 10′ DVI Cable   29.98  
Posted in Computers, Gaming | Leave a comment

Indian Peaks Hike

Last weekend Rita and I went hiking in Indian Peaks Wilderness. It was a short 7.4 mile hike in to the campsite. According to the book, it was somewhat moderate with the last couple of miles being strenuous.

We parked the car at Monarch Lake, put on the backpacks and started off.

Rita at the start of the hike.

One of the many water crossings.

We have this “thing”. We don’t cross bridges without a kiss. So she’s patiently waiting 🙂

The first couple of miles were ok. Mostly slight inclines but when carrying a 40lb pack (it weighed in at 35 lbs but Rita gave me the dried food before we left) it was a tad tiring. It was the first time I’d used the pack and I haven’t backpacked since I was a kid in Boy Scouts. I had the belly belt too high which wasn’t helping 🙂 After about 3 miles, I was ready to stop and camp for the night 😀 We kept going up past the second trail split and stopped for a break.

Rita studying the map

What a view

We continued on to Cascade Falls. We’d been passing folks coming back up to this point. The number of people we passed was severely reduced after this point, about 4.5 miles in.

Rita at the falls.

We spotted a birds nest in the rocks facing the falls. Just stick your beak out for a quick drink 😀

From this point it started getting steeper. There were a few places where there were switchbacks up and down but here is where it generally got rockier and steeper.

Our campsite is at the base of those cliffs.

We passed several meadows.

Rita’s happy to be outside.

Carl’s happy to stop for a moment.

Technically, I had a bit of a headache. I was tapping my head with the walking staff which made it feel better. Better than being hit with the staff anyway 😀

Taking a break.

Getting close to the tree line.

Even the last bit to the lake was tough. I was already dragging tail and then there was another switchback to get to the lake.

We hiked around the lake to get to our site. We went to site 7 which was actually on Crater Lake. The others were either below the switchbacks to the first lake (Mirror Lake) or were on Mirror Lake. There were another 5 sites on the other side but we didn’t investigate.

Stopped. Thank goodness!

From the shore just below our campsite.

We got the tent up and ate some of the food we brought. Dried apple rings, mixed nuts, dried mangos, and dried bananas. Rita had brought the camelbak but we’d run out of water about a mile back.

Back when we first got my backpack, we’d finished hiking 5 miles up into the Sawtooth mountains in northern Idaho. I’d suggested we should do a bit more hiking and even some camping. One of the guys at work was selling his backpack for $25 if I remember correctly. We bought it (reeking of cigarette smoke) and it’s been sitting in the closet up until this point. I took it out of the closet and was getting ready to pack it up when I discovered at the bottom of the pack, a Pur Hiker kit. It’s a water purifying kit. We tested it the night before and decided we’d just need to take the camelbak and this. It’s the reason Rita transferred the food into my backpack. She had the camelbak.

So we took the Hiker kit down to the lake and after a few pumps to clean out the hoses, we filled up the camelbak. The water tasted great 🙂

After a bit, it started to rain. We climbed into the tent and got settled in. I was pretty sore so I really didn’t want to be moving around after that. It started really pouring down. It only lasted a bit though and when it stopped, Rita headed out to look around.

Sleeping that night was pretty much toss and turn all night for both of us. I camp when touring on the bike so I’m used to the tent but generally it’s just the right size for me (it’s a two “man” tent) but with our gear sharing the tent, it was pretty tight. It was also a tad warm in the bags and add in the condensation from our breathing and it was certainly an interesting night.

In the morning we got up and had a bit more to eat. We also refilled the camelbak before we got packed so we’d have it for the hike back.

Our campsite.

Rita having breakfast.

Crater Lake in the morning.

Another morning shot of Crater Lake

One of my favorites. Looking at the reflection of the sun starting to shine on the peaks in the lake. The lake was like glass.

We got the site packed up and made sure everything was picked up. I actually felt a bit better, especially since we were going down hill. One problem I have when hiking is my right foot and my heels. I get a little overextended and they begin to really hurt. For this hike, I made a conscious effort to put my feet flat on the ground instead of walk on rocks. It kept me from having all my weight on one heel/tendon and it kept my right foot from spreading too much and hurting (I’d broken my right little toe so the toe is now sideways and the joint can get very painful). But since I’d been careful, both feet were in pretty good shape.

Chewing on the inside of my mouth and contemplating the hike ahead 🙂

Mirror lake

What’s the best way to cross?

One false step. :crazy2:

Looking back at the lake.

It’s funny how just a different angle of the picture makes such a difference.

A bit higher so the mountain is the focus.

A little lower so the lake is the focus.

There were several water crossings. Some were actually bridges, some were a pair of hewn logs with a hand rail.

Some were just a log high above the water. Carl being sure footed made it without a problem.

“Need some help here”

“Maybe I can cross farther up or down stream.”

There were a few other campers up here. One guy with his dog and then as we passed the campsites, Rita’d go investigate.

Another camper.

A group of folks came up behind us with a dog. Apparently the dog had landed on a stick and gotten impaled 🙁 They were asking if we were doctors and if we had cell service. When we said we didn’t, they continued on.

View back.

One of the stone cairns had been knocked over. When we were heading up, we had to hunt a little to find the trail. On the way back, while we were paused, I set the cairn back up.

There were several really difficult spots including this one where it was simply a water channel we had to carefully pick our way down.

Watch your step

Rita snapped one from the bottom side.

Another of the water crossings.

The crossings were pretty sturdy if a little wobbly.

Hiking through the meadows.

On our way back. Here’s Cascade Falls again. The hike will be a bit better now 🙂

Yea, I’m feeling a tad better 😀

Lots of interesting rocks.

And the water’s getting mellower.

The hike down was a lot better. The only real problem were my feet. They were sliding around in the shoe enough that I could feel myself getting blisters. It was still a bit strenuous though. The last couple of miles had me basically saying “everything else is feeling good, it’s just the feet, just ignore it and keep going.”

Still. It was pretty tiring 😀

Quite pretty though. Nice place for a stop 🙂

When we got to the lake we figured we were done.

Oh wait, it’s at the _other_ end of the lake. One more mile.

We were passing other folks now coming out for their Sunday stroll or fishing.

Hot damn! Monarch Lake

We made it.

7.3 miles (6 hours) up. 7.3 miles (5 hours) down.

We stopped at a gas station where I “old man” walked into the store 😀 We then went through Winter Park and stopped for lunch at a BBQ place. Very good, especially after the hike.

We went over Berthoud Pass and then down 70 towards Denver. At Rt 6, we exited and headed down Coal Creek Canyon to Golden Colorado, up 93 and then home.

All in all it was a fricking tiring hike. It was very pretty and the temps weren’t bad. The mosquitoes were somewhat nuts. I had several on my right arm including one nicely placed to guarantee the raising of a gigantic welt.

That’s the hike. Hope you enjoyed the pics and narrative.

Posted in Hiking and Camping in Indian Peaks Wilderness, Outside Activities | Leave a comment

Heading to Alberta

Day two: Glendive MT to Tillebrook Provincial Park AB

The night before, David asked if it was ok if he came along to the border. No problem, says I. He also mentioned breakfast but I initially declined as I don’t like to eat meals on the road. Food comas turn into real comas real quick. I figured to snack.

We headed out bright and early, about 6am. I agreed to breakfast, especially as I was riding with someone and David wanted to take me up 24 to the border.

We headed to Circle and then west to 24N. The road was fairly straight. At places I’d zip by, then David would. All great fun.

The lands were pretty flat. As we approached Fort Peck Lake, the ground started to break up. I stopped to get a picture. As I left, a wolf ran across the road. The land is very green. Lots of farmland. We saw several abandoned houses. I wonder if they are truly abandoned or just bought by the big corporations.

We stopped at the turnout at the spillway and I let David know that my gas was at 36 MPG and that I was low on fuel. Not a good thing. We moved forward and stopped briefly at the memorial. Then a ride up to a gas station at the marina. I filled the tank and then put a gallon into the spare tank. Must have been the ethanol. 36mpg vs 46 mpg.

We stopped in town for breakfast. The food was great. Eggs, wheat toast, sausage, and hash browns Smile really good. Thanks David!

After breakfast, we headed north. After I said I was going to Moose Jaw, David said he might follow me into Canada and up to Moose Jaw.

More green lands on the way north and even a nice curvy bit Smile

At the border, David almost pulled into the Last Parking area before Canada. Part of the problem is he only had his driver’s license.

We waited a bit for the border guard to return with my passport and driver’s license, we chatted. Eventually we were free to go.

I led the way initially but let David go as this was his first time in Canada on a bike.

So we continued up to Moose Jaw. The Canada maps on the GPS aren’t up to date so it was interesting to say the least Smile

We made it to Moose Jaw without a problem. At the gas station I snagged a tourist map to find something for lunch. The Pita Pit looked good so we headed on over. I got a gyros which was ok for a fast food type of place vs a family shop.

We finished and headed back to the bikes. A couple of guys rolled up on a bike and parked. We chatted for a minute or two (I barely understood the second guy Smile ).

Then we split up with thanks and handshakes. I headed north to 1 and headed west to Calgary.

The ride was mostly uneventful. A woman blew by me at 160k. About 20 minutes or so later I saw her on the side of the road chatting with the RCMP Smile She didn’t learn though, she blew by me again at warp speed.

Continued on looking for a place to stop. I spotted Tillebrook Provincial Park and pulled in. The sign on the door said they closed at 4 and opened at 8 and to check in in the morning.

I’ll be gone by then. I got the site set up and rolled up at 9pm or so.

827 miles

Posted in 2008 - Alaska Trip, Motorcycle Trips | Leave a comment

Heading to Montana


701 Miles

Day one: Denver CO to Glendive MT

I got up at 4ish and headed down to witness for Pilot and Ric (from CoSportBikeClub). As I rolled on to the freeway, the other side of the visor popped off. I was wearing goggles this time as a experiment so it was only a little inconvenient. I pushed it back into place and headed south to Denver. It took a couple of loops around the capitol before I spotted Pilot running down to the corner. We were supposed to meet at the steps but he didn’t say which ones :). I pulled in to the southern steps next to his bike and got off the bike.

We chatted as we waited on Ric. Ric arrived a few minutes later. I signed the paperwork after verifying the miles, we got pics and then we were off to the gas station for their startup receipts. The beasts gassed up, we started out. In my helmet, War was playing Low Rider (Remix).

Pilot led the way on the first leg. We’re heading north to Wyoming Rt 20 east where we’ll get gas. It’s a beautiful morning, a little chilly but my sweatshirt under the ‘stich is perfect. While Pilot was leading, he was hauling but he’d slow a bit and look right up the off ramps looking for police cars 🙂

The hot air balloons were up as we approached Ft Collins, the sun hitting them and the mountains before lighting us up. It’s a beautiful day for the start of the trip.

As we passed through Cheyenne, Pilot pointed out the air base as someplace he was stationed (assuming as he was a “pilot” hence the nic 🙂 ).

We passed 85, just north of Cheyenne which was the way I was going to head but with the guys doing an IronButt run, the highways are the best for speed. So we continued on to Wheatland and Rt 20 and the first gas stop.

Once gassed up, Pilot had me in front for the leg to Mule Junction. I tried to keep speeds reasonable, a little fast but not warp speed. Ironbutt is about time in saddle and not speed. You don’t have to ride fast, but you do need to make quick pit stops.

At one point, we got behind a bunch of semi’s and RV’s. After a few minutes of patience, I wicked it up to pass. A SUV was parked on the southbound side. As I passed it, I saw a cop behind him writing a ticket. His head was down so we zipped by without trouble.

20 or so minutes later, we pulled in to Mule Junction rest area. Pilot and Ric are heading east from here and I’m heading north. There is a Goldwing trike towing a trailer. We discover there is a Goldwing get together on my route north.

We grab a quick bite, shake hands, and I’m on my way north.

Headed north on 85. The ride into the black hills on 85 is great, even on a somewhat loaded ‘busa. I could have done without the bleeding tar snakes though! What a pain.

I got to Spearfish canyon and turned in. There was a slight wait as the road was under construction. A short ride through hard packed dirt and we were on our way again.

Again, a great road. Light traffic and a gorgeous day to be riding.

In Spearfish, I stopped in at the local HJC helmet and bike dealership. I had let Rita know that the helmet has broken on the other side. She checked the shops in the area and found it. Turns out the guy only had the one which was a warranty replacement. Excellent!

I also bought a bungee net. The new tri-bag tank bag is a real pain. It doesn’t stay centered and tends to migrate to the left. Really annoying. So I hooked the net into the rear set and the hook on the bag and it stayed pretty well in place. I also found you cannot have it expanded as it catches the wind and tends to lift. Not a bag for a low windshield bike like the ‘busa.

Leaving Spearfish had me heading north to 94. The winds were pretty bad but making the turn west seemed to be better. I’d called David a couple of times with progress reports and am going to be arriving in town at around 5:30pm as expected.

I arrived at the right place but a slow moving train was blocking the road. As I always fill up before stopping for the night, I pulled in to the gas station. The pumps had regular at $4.05 per gallon but midrange was at $4.01. Puzzled I asked the young lady but she didn’t know. Something about ethanol. I went ahead and filled up with the $4.01 fuel and then hunted for David.

As I crossed over the tracks, the sign across the way said something about it being private property so I hooked left. I was looking for the street but didn’t see it. A u-turn back and still no street. Hmm, the sign could be for the fenced in grassy area, so I made the left. Yep, there’s the street and there’s David.

David introduced me to Marty and I got settled in. We had a nice dinner (steak and potatoes; don’t tell Rita).

After, we headed up to the local dirt area. David had me ride his bike and we went with Marty and (gary?).

The dirt road was great. I haven’t been on a dirt bike like this and roads either. David told me about the bike before I got on. Turn off the fuel if it dies was the main thing.

I’m still not good on dirt. It was fun going up, but not so much so going down. At the viewpoint, we stopped and relaxed for a few minutes.


I killed it on the way back, turn off fuel, kick start, turn on fuel.

The second time, it was on the downhill side. I’d stopped to get a picture and killed it. As you can imagine, kicking a bike isn’t easy especially on the side of a hill. But I got it going.



We did a longer way riding around back to David’s house. The bike is geared for low end so it was revving high on the freeway.

I can see why they hit the trails though with lots of straight highways 🙂

We hit the sack at 9:30 expecting to be up at 5am and ready to head north.

Posted in 2008 - Alaska Trip, Motorcycle Trips | Tagged , | Leave a comment

Alaska Trip Preparation

I’ve been planning a trip to Alaska since I went to Labrador. I’ve snagged the Milepost books for the past few years to try and plan. I’ve also made a couple of trips into Canada, especially Jasper/Banff which is a great park. I’ve planned the route a couple of times. In chatting with a couple of guys from the Colorado Sportbike Club, they are attempting their IronButt ride so we decided to ride together as far as South Dakota. Of course that means I leave a little later than I normally do 🙂 Also, David (mtrider16) from Sport-Touring.net has made his place available for a stop so that’s in the trip plan as well. I also plan on a stop in to see my daughter in Portland. Should be a fun trip.

I have a packing list I’ve refined over the past few trips and started gathering up my gear. Tent because I enjoy motocamping in addition to the other gear. I also have a new tank bag with three layers so lots of room for the trip. I also have the tail bag + saddlebags set up and ready for the trip.

One of the things I did was replace the CoolPix 2500 with a Canon 7MP digital camera so I can get better pictures. I did get it at Circuit City where I’ve mostly bad luck with electronics but it got several good reviews so I made the call. I intended on taking a Denver Post with me to The Arctic Circle and get a picture. But I needed a better camera for the pic. So Alaska is a goal, the Arctic Circle is the primary goal with a possibility of hitting Deadhorse.

I got the bike packed and ready to go. Unfortunately, while strapping gear down, the helmet dropped to the floor breaking the right side visor holder. Fortunately, Rita has the same helmet so I swapped the mechanical bit and put the visor back on.

Posted in 2008 - Alaska Trip, Motorcycle Trips | Leave a comment

EAS Boulder Peak Triathlon

A week or so ago, a post appeared on the Colorado Sportbike Club forums asking for escorts. The escorts would be taking officials or photographers around the bicycle portion of the EAS Boulder Peak Triathlon. Kevin Edwards posted his e-mail address and I decided I’d check it out.

I was pointed to this website to review the upcoming requirement, told that I’d get a t-shirt and a check for volunteering. He said I needed to be at the north end of the bicycle transition area by 5:45am. I told him sure I’d be interested and he asked for my t-shirt size, phone number and address for the check which I provided.

So I set the alarm this morning for 4:30am. For some reason though, at about 3am in a dream I kicked someone pretty hard and of course I did that in real life as well. Smashing my shin against the open door woke me up pretty handily. I tried to go back to sleep but the throbbing wasn’t cooperating so eventually at 4am I rolled out.

At about 4:45am, I put on my Aerostich and tucked a magazine and my mesh JR jacket into my Givi in case it got boring and/or warm and headed on out.

I followed Kevin’s advise and came in via the north side of the reservoir along the dirt roads. Only a couple of cars were in front of me. As I came over the rise, I could see a long long line of cars waiting to get into the parking area. I told them I was an escort and she waved me past everyone so I could find my spot.

After parking, I spotted a couple of motorcycles on the other side of the bikes and walked on over. When I found out that that’s where we should be parked, I went back and moved my motorcycle on up. I got some raised eyebrows. “Some who rides a Hayabusa in an Aerostich! Impossible.” Of course we talked bikes. They were appreciative that I had 61,100 miles on the Hayabusa. Of course I showed them my farkles including the horn.

Walking around checking out the bikes.

A pic of the escort motorcycles

The participants had to swim for 1.5k in the Boulder Reservoir, come up from the beach and to the bicycle transition area. There were 16 waves at 5 minute intervals. From there they’d ride out, up Olde Stage Road and back down Left Hand Canyon Drive. It was a total of 42k.

Afterwards they had to do a 10k run. It might have been around the reservoir, I’m not sure.

Anyway, we got assignments. Either we’d have a passenger on the back (official checking for rules compliance or a photographer) or we’d be sent around the loop to break up any obvious problems.

Some of the rules violations were drafting, littering (you can throw your bottles but they have to be around the aid stations), passing on the right, or listening to an iPod or other music device (basically headphones weren’t allowed).

These guys were in the bicycle transition area checking over their gear and making sure they were ready to go. Of course there’s my ‘busa and there were three (three!) Honda TransAlps there. Heck, had I known we were going to have so many, I’d have brought mine. Heck, I didn’t even know there were more than two in the entire state!

Here are the other two Transalps. Note the closer one has hard bags and a trunk. He has a cage on the front with two water bottles. It looks pretty set up.

I headed over to the concession stands to watch the start of the race.

It’s a little far away, but you can see the beginnings of splashing at the arch. After several minutes the first swimmer came from the beach. He ran through a kiddie pool filled with water (so the swimmers can rinse sand off before getting changed and into their bike gear) and then to the parking lot. He was a good 2 minutes ahead of the next swimmer. He must have been part dolphin or something.

Other motorcyclists left with photographers to get pics of the front runner and to set up on the course to get pics. We left about 30 minutes or so later after a good amount of bicyclists got on the road.

As we went around the course, the track official had me speed up to catch up with clumps of riders or slow down so he could get numbers for penalties. Looking at the map, we stayed on 36 to catch up with the earlier bikes as they came off of Left Hand Canyon Drive.

The cool thing was we were able to slip past traffic as they waited for bikes to go by. The cops would stop the cars and other bikes and wave us through when there was an opening.

I did my best to anticipate the official’s requests by speeding up when we were in areas with only one or two bikes since he was looking for drafting mainly. He spotted one guy passing on the right and another throwing a gatorade bottle well past the aid station. By the time we got back the first time, he had maybe a page and a half of a small notebook filled with numbers and the violations.

We made a second loop around with the first half of the loop being pretty sparse and then we stopped for the day (the race was to end at 11am but the bikes should be off by 9:30 or so which was when we got back from the second loop).

There were quite a few bikes on the road as you can see from the bike transition area:

I hung around for a bit and watched as the first of the marathoner’s completed the 10k.

All in all it was a pretty fun day. I’ll check out the other races and if they’ll have me, I’ll volunteer for another escort.

Posted in Colorado | Tagged | Leave a comment