Monday, January 4, 2016

How to add a new hard drive with LVM


Let's assume you want to add a new disk (physical or virtual) in your Linux
system, so you will surely have to shutdown your system, add the desired hard
drive and and then boot the system.
After that you are 6 step away from adding your new hard drive.

1. Listing hard disk drives

Here for instance I have added a new 2GiB hard drive, naturally now the second (new)
hard drive on my system is named /dev/sdb, so let's show all disk present in the system :

# fdisk -l
Disk /dev/sdb: 2 GiB, 2147483648 bytes, 4194304 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 /dev/sda: 8 GiB, 8589934592 bytes, 16777216 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: 0x0003e22d Device     Boot Start      End  Sectors Size Id Type /dev/sda1  *     2048 16777215 16775168   8G 8e Linux LVM Disk /dev/mapper/system-swap: 2 GiB, 2147483648 bytes, 4194304 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 /dev/mapper/system-root: 6 GiB, 6434062336 bytes, 12566528 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

2. Creating a new partition

So now we will create a new partition that will take the entire hard drive and
labeled it as a LVM partition with fdisk:
# fdisk /dev/sdb Welcome to fdisk (util-linux 2.25). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table. Created a new DOS disklabel with disk identifier 0xa86da927. Command (m for help): p Disk /dev/sdb: 2 GiB, 2147483648 bytes, 4194304 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: 0xa86da927 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): First sector (2048-4194303, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (2048-4194303, default 4194303): Created a new partition 1 of type 'Linux' and of size 2 GiB. Command (m for help): p Disk /dev/sdb: 2 GiB, 2147483648 bytes, 4194304 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: 0xa86da927 Device     Boot Start     End Sectors Size Id Type /dev/sdb1        2048 4194303 4192256   2G 83 Linux Command (m for help): t Selected partition 1 Hex code (type L to list all codes): 8e Changed type of partition 'Linux' to 'Linux LVM'.
Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.

3. Format your new partition
Format your new partition with the desired File System, here I will use ext4:
# mkfs.ext4 /dev/sdb1

4. Listing the LVM layout
So now let's add our new partition to our existing LVM layout: But first let's show the existing LVM layout :
# pvs   PV         VG     Fmt  Attr PSize PFree   /dev/sda1  system lvm2 a--  8.00g 4.00m
# vgs   VG     #PV #LV #SN Attr   VSize VFree   system   1   2   0 wz--n- 8.00g 4.00m
# lvs   LV   VG     Attr      LSize Pool Origin Data%  Move Log Cpy%Sync Convert   root system -wi-ao--- 5.99g   swap system -wi-ao--- 2.00g

5. Adding the new partition to LVM

Initialize the partition for use by LVM :
# pvcreate /dev/sdb1   Physical volume "/dev/sdb1" successfully created

Add the new partition to the existing "system" Volume Group:
# vgextend system /dev/sdb1   Volume group "system" successfully extended

for adding all free space to Logical Volume "root"
# lvextend -l +100%FREE /dev/system/root   Extending logical volume root to 7.99 GiB   Logical volume root successfully resized

or for extending the logical volume to a specific amount (replace x by the desired amount of GiB)
# lvextend -L xG /dev/system/root

for adding one more GiB to the logical volume
lvextend -L+1G /dev/system/root

6. Resizing the Filesystem
For ext Filesystems:
# resize2fs /dev/system/root

For btrfs File System: Please note that btrfs has the built-in ability to add new hard drive to a mounted filesystem. Thus for performance optimization you could use btrfs without the LVM layer. So adding a btrfs filesystem to LVM is still doable as below.
# btrfs filesystem show Label: none  uuid: 71e5c18b-ed4b-475a-9669-b2ee31769351     Total devices 1 FS bytes used 4.67GiB     devid    1 size 5.99GiB used 5.99GiB path /dev/mapper/system-root   Btrfs v3.18.2+20150430

Where 1 is the devid number, you can specify an amount but "max" also possible and this will use all remaining free space on the device.
# btrfs filesystem resize devid:amount /mount-point

# btrfs filesystem resize 1:max /   Resize '/' of '1:max'

# btrfs filesystem show   Label: none  uuid: 71e5c18b-ed4b-475a-9669-b2ee31769351       Total devices 1 FS bytes used 4.67GiB       devid    1 size 7.99GiB used 5.99GiB path /dev/mapper/system-root   Btrfs v3.18.2+20150430

Thursday, May 21, 2015

X Forwarding issue with Mac OS X

If you try to remote access a Linux application from your Mac, you will certainly face the following issue : Forwarded X application window will be limited to the two thirds of your screen.
So you won't be able to drag the window out of the two thirds of the screen.

The issue has been reported here https://xquartz.macosforge.org/trac/ticket/2116, the workaround is to disable the "Displays have separate Spaces" option in Mission Control Preferences on your Mac.

Thursday, April 9, 2015

How to write on NTFS disk on Mac OS X Yosemite

Here is the best and simpler way to allow write on NTFS partition on my Mac OS X, you should follow exactly what's described in https://github.com/osxfuse/osxfuse/wiki/NTFS-3G and it will work like a charm !

Have fun,

Tuesday, March 24, 2015

How to mount and umount an iso image from the command line on Mac OS

How to mount an iso image from the command line on Mac OS :
# hdiutil mount SUSE_Manager_Server.x86_64-2.1.0.iso /dev/disk3 /Volumes/KIWI CD_DVD Installation
Here you go, your iso image will be mount in /Volumes/ . If needed here is how to list your disks :
# diskutil list /dev/disk0 #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme *251.0 GB disk0 1: EFI EFI 209.7 MB disk0s1 2: Apple_CoreStorage 250.1 GB disk0s2 3: Apple_Boot Recovery HD 650.0 MB disk0s3 /dev/disk1 #: TYPE NAME SIZE IDENTIFIER 0: Apple_HFS Macintosh HD *249.8 GB disk1 Logical Volume on disk0s2 /dev/disk2 #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme *1.0 TB disk2 1: EFI EFI 209.7 MB disk2s1 2: Apple_HFS WDOUILLE 900.0 GB disk2s2 3: Microsoft Basic Data FATOUILLE 99.8 GB disk2s3 /dev/disk3 #: TYPE NAME SIZE IDENTIFIER 0: KIWI CD_DVD Install... *611.4 MB disk3
To unmount your iso from the cli :
# hdiutil eject /dev/disk3 "disk3" unmounted. "disk3" ejected.

Wednesday, March 18, 2015

Installing Virtualbox Guest Additions on SUSE Linux Enterprise Server 12 and 15

 This article is not a complete and detailed how to, but will covered the subtlety of installing and using the Virtualbox Guest Additions (or Virtualbox Tools) on SUSE Linux Enterprise Server 12 SPX and SUSE Linux Enterprise Server 15 SPX.

Requirement:
Packages : gcc make kernel-default-devel
And of course you need to add the CD image of the Virtualbox Guest Additions in your SLES Virtual Machine :
Devices -> Insert Guest Additions CD image

Step :
1) Mount the cd image:
# mount /dev/sr0 /mnt


2) Install the package requirement:
# zypper in gcc kernel-default-devel

3) Enable "unsupported modules" to be loaded in the SLES's kernel:
Edit /etc/modprobe.d/10-unsupported-modules.conf
and set: allow_unsupported_modules 1
 
4) Run the Virtualbox Guest Additions installation script:
# cd /mnt
# ./VBoxLinuxAdditions.run
Verifying archive integrity... All good.
Uncompressing VirtualBox 5.0.14 Guest Additions for Linux............
VirtualBox Guest Additions installer
Copying additional installer modules ...
Installing additional modules ...
Removing existing VirtualBox non-DKMS kernel modules                  done
Building the VirtualBox Guest Additions kernel modules
Building the main Guest Additions module                              done
Building the shared folder support module                             done
Building the OpenGL support module                                    done
Doing non-kernel setup of the Guest Additions                         done
You should restart your guest to make sure the new modules are actually used

Installing the Window System drivers
Installing X.Org Server 1.15 modules                                  done
Setting up the Window System to use the Guest Additions               done
You may need to restart the hal service and the Window System (or just restart
the guest system) to enable the Guest Additions.

Installing graphics libraries and desktop services components         done

5) You can now reboot your system and check the if the new modules are used:
# reboot
and then after the reboot: 
# lsmod | grep vbox vboxsf                 47920  0 vboxvideo              12669  1 drm                   322623  2 vboxvideo vboxguest             298126  3 vboxsf

6) VoilĂ  !