Monday, August 25, 2014

Updating the default system editor - Debian

sudo update-alternatives --config editor

Then make your selection.

FIN

Friday, August 8, 2014

Resize Logical Volumes within a Volume Group (LVM2 on Debian 7)

I'll refine this later, just need to capture what I had to do this morning...

OK, I needed room on `/` to accommodate mongoDB journaling files.  I have debian 7 (Wheezy) running in a virtual machine with a separate /home partition. 

To get the space I needed I planned to take 5Gb from /home and add it to /.

So, as root, show me my Physical Volume:
root@rev0:~# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda5
  VG Name               rev0
  PV Size               89.76 GiB / not usable 2.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              22978
  Free PE               0
  Allocated PE          22978
  PV UUID               KBuU17-GOD4-8ckZ-EaJG-aurI-9ufl-oeUCNy
Show me my Logical Volumes at a high level using lvs:
root@rev0:~# lvs
  LV     VG   Attr     LSize  Pool Origin Data%  Move Log Copy%  Convert
  home   rev0 -wi-ao-- 77.19g                                          
  root   rev0 -wi-ao--  4.31g                                          
  swap_1 rev0 -wi-ao--  3.25g
Reduce the size of my /home LV using lvreduce (-5G = reduce by 5Gb):
NOTE: the LV path (/dev/rev0/home) can be found with the lvdisplay command which is illustrated below.)
root@rev0:~# lvreduce -L-5G /dev/rev0/home
  WARNING: Reducing active and open logical volume to 72.19 GiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce home? [y/n]: y
  Reducing logical volume home to 72.19 GiB
  Logical volume home successfully resized
Now add the newly available disk to root (/) using lvextend (conversely +5G here means grow by 5Gb):
 root@rev0:~# lvextend -L+5G /dev/rev0/root
  Extending logical volume root to 14.31 GiB
  Logical volume root successfully resized
GOTCHA!  Now here's what got me the first go round, the LV has now increased in size but the file system there remains at it's previous size.  So we need to grow the file system to fit the LV using resize2fs:
root@rev0:~# resize2fs /dev/rev0/root
resize2fs 1.42.5 (29-Jul-2012)
Filesystem at /dev/rev0/root is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/rev0/root to 3751936 (4k) blocks.
The filesystem on /dev/rev0/root is now 3751936 blocks long.
And when this is all done we can see the 5Gb shift from home to root:
root@rev0:~# lvs
  LV     VG   Attr     LSize  Pool Origin Data%  Move Log Copy%  Convert
  home   rev0 -wi-ao-- 72.19g                                          
  root   rev0 -wi-ao-- 14.31g                                          
  swap_1 rev0 -wi-ao--  3.25g
Or the more verbose:
root@rev0:~# lvdisplay
  --- Logical volume ---
  LV Path                /dev/rev0/root
  LV Name                root
  VG Name                rev0
  LV UUID                PA6izC-GU9D-eG9C-Ji9v-8avn-u7ng-dsLlPc
  LV Write Access        read/write
  LV Creation host, time rev0, 2014-08-07 07:40:00 -0500
  LV Status              available
  # open                 1
  LV Size                14.31 GiB
  Current LE             3664
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:0
  
  --- Logical volume ---
  LV Path                /dev/rev0/swap_1
  ***Swap omitted here***
  --- Logical volume ---
  LV Path                /dev/rev0/home
  LV Name                home
  VG Name                rev0
  LV UUID                0omdas-WNXb-17Sc-cfpZ-gRV0-i2G5-tHPV7L
  LV Write Access        read/write
  LV Creation host, time rev0, 2014-08-07 07:40:00 -0500
  LV Status              available
  # open                 1
  LV Size                72.19 GiB
  Current LE             18481
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:2


And now I have sufficient space on root for my journaling files.  Again, this was done fast and in a pinch, but it got the job done and may help others in a similar circumstance...

This should work for all flavors of *nix set up with LVM2.

FIN
  

Change Directory and list contents in single command.

I find myself often changing to a directory and immediately performing an `ls`. This is partly habit and partly the fluid nature nature of the files I work on.  Anyway, you don't care about that...

Using an editor of your choosing open your .bashrc or .bash_profile and add the following lines:
# User defined functions
function cdl { cd $1 && echo $PWD && ll; }
Note: In the above I have aliased `ll` as ->  alias ll='ls -ASlh'
Note: You can name this whatever you choose, I just think `cdl` made sense.
Note: You can omit the echo $PWD if you don't care to see the directory path in the output. So you could do something as simple as:
# User defined functions
function cdl { cd $1 && ls; }
Save and close and then
bkarels@rev0:~$ source ~/.bashrc
Now you can use cdl (or whatever you've named it to change directory and immediately ls the contents.

Example:
bkarels@rev0:~$ cdl foo/
/home/bkarels/foo
total 328K
-rw-------   1 bkarels bkarels 156K Aug  8 09:39 sample0
-rw-------   1 bkarels bkarels 6.9K Aug  8 08:47 someFile27
-rw-r--r--   1 bkarels bkarels 4.1K Aug  7 12:07 sayWhat
drwx------   6 bkarels bkarels 4.0K Aug  8 07:37 killWindows.exe
The above example was done on Debian 7 (Wheezy) but should work on all flavors of *nix and OSX.

FIN