- Virtualbox
- Vagrant
- Vagrant image based on centos64-x86_64-20131030.box
mkdir centos
cd centos
vagrant add box centos64-fpm.box https://github.com/2creatives/vagrant-centos/releases/download/v0.1.0/centos64-x86_64-20131030.box
vagrant init centos64-fpm.box
Open up Virtual box and manually add some epmpty disk images:
- Right click on VM (must be shutdown) -> settings -> storage
- Click the +harddisk icon -> Create new disk -> VMDK -> Dynamically allocated
- Set size to 8GB and name to: disk2
- Click create
Create disk2 and disk3
vagrant up
vagrant ssh
sudo yum update
sudo yum install lvm2
Use fdisk to set up the new disks. Create a primary partition, setting the partition id "Linux LVM" - 8e. Assuming that disk2 presents itself as /dev/sdb:
List the disks: $ sudo fdisk -l $ sudo fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x082bfac9.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help):
** Press: m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
** Press: n
Command (m for help): n
Command action
e extended
p primary partition (1-4)
** Press: p
Partition number (1-4):
** Press: 1
First cylinder (1-1044, default 1):
** Press: Enter
Last cylinder, +cylinders or +size{K,M,G} (1-1044, default 1044):
** Press: Enter
Command (m for help):
** Press: t
Hex code (type L to list codes):
** Press: L
0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
1 FAT12 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT-
2 XENIX root 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 40 Venix 80286 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 41 PPC PReP Boot 85 Linux extended c7 Syrinx
5 Extended 42 SFS 86 NTFS volume set da Non-FS data
6 FAT16 4d QNX4.x 87 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS 4e QNX4.x 2nd part 88 Linux plaintext de Dell Utility
8 AIX 4f QNX4.x 3rd part 8e Linux LVM df BootIt
9 AIX bootable 50 OnTrack DM 93 Amoeba e1 DOS access
a OS/2 Boot Manag 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 52 CP/M 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi eb BeOS fs
e W95 FAT16 (LBA) 54 OnTrackDM6 a5 FreeBSD ee GPT
f W95 Ext'd (LBA) 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 56 Golden Bow a7 NeXTSTEP f0 Linux/PA-RISC b
11 Hidden FAT12 5c Priam Edisk a8 Darwin UFS f1 SpeedStor
12 Compaq diagnost 61 SpeedStor a9 NetBSD f4 SpeedStor
14 Hidden FAT16 <3 63 GNU HURD or Sys ab Darwin boot f2 DOS secondary
16 Hidden FAT16 64 Novell Netware af HFS / HFS+ fb VMware VMFS
17 Hidden HPFS/NTF 65 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 70 DiskSecure Mult b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 75 PC/IX bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 80 Old Minix be Solaris boot ff BBT
1e Hidden W95 FAT1
Hex code (type L to list codes):
** Type: 8e
Command (m for help):
** Type: w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
Done! Repeat for /dev/sdb and /dev/sdc. This will create /dev/sb1 and /dev/sdc2
At this point we have 2 disks which we are going to use to create 1 logical bolume.
The key areas we'll tackle are:
- Physical Volumes
- Volume Groups
- Logical Volumes
Read what is LVM?. Theres a nice layed diagram here which shows the relationship between physical volumes, volume groups and logical volumes.
$ pvcreate /dev/sdb1
$ pvcreate /dev/sdc1
$ pvdisplay
$ vgcreate data /dev/sdb1 /dev/sdc1
$ vgdisplay
$ lvcreate --name repo --size 10G data
$ lvdisplay
Create a file system > mkfs.ext3 /dev/data/repo > mkdir /repo > mount /dev/data/repo /repo
Basic steps:
-
unmount filesysten
-
Remove journaling (if required) <-- I'm not sure if this totally necessary
-
Run file system check against fs
-
Resize (be careful not to shrink to less that current df -h value!)
-
Add journaling
umount /dev/data/repo tune2fs -O ^has_journal /dev/data/repo e2fsck -f /dev/data/repo resize2fs /dev/data/repo 1G e2fsck -f /dev/data/repo tune2fs -O +has_journal /dev/data/repo mount /dev/data/repo /repo df -h
> lvremove /dev/data/repo
The plan here is to remove /dev/sdb1. Ensure that the logical volumes can fit on /dev/sdc1
> lvreduce -L2G /dev/data/repo
> pvmove /dev/sdb1
> pvs -o+pv_used
> vgreduce data /dev/sdb1
> pvremove /dev/sdb1
This can be done online!
> vgextend data /dev/sdc1
> lvextend -L 10G /dev/data/repo
> resize2fs /dev/data/repo 10GB
LVM is straight forward to use. It allows the addition and removal of physical storage in a way that is transparent to the file system.
* Only use in scenarios where we anticipate that we may need to extend storage
Operations which can be done online (whilst the file system is mounted): * Add new Physical Volumes * Extend Logical Volumes * Extend file system * Shrink logical volumes () * Removing physical volumes * pvmove
Operations which need to be done offline * Shrink file system * Shrink logicl volumes (this can be done online, but risky)
Finally, when shrinking, removing physical volumes etc extreme care must be taken. Think about what you are doing!