13,420
edits
Changes
no edit summary
LVM allows more flexibility and growth potential for Linux systems (for example, having Logical volumes span multiple hard disks). CentOS uses LVM by default upon installation. Other Linux distributions may provide the capacity to install LVM,
==LVM Tools==
[[Image:lvm1.png|thumb|400px|right|The '''system-config-lvm''' application allows the Linux system administrator to manage LVMs Graphically. Your LVM information for '''centos2''' VM should be similarly displayed.]]
* There is a choice for managing LVM: Graphically or via Command-Line.
* A graphic program is called: '''system-config-lvm'''. This graphical application is useful, but may be deprecated (i.e. "being phased out").
* There are various commands to manage LVM (some include):
:*'''lvextend'''
:*'''lvcreate'''
:*'''lvreduce'''
:*'''pvcreate'''
:*'''vgextend'''<br><br>
* There are also commands to obtain LVM information:
:*'''vgs'''
:*'''pvs'''
:*'''lvs'''
== Any Simple Comparisons for LVM !?! ==
[[Image:lvma.png|thumb|right|700px|'''LVM''' ('''Logical Volume Manager''') is a program to manage file system size in an efficient manner. If this diagram was displayed <u>vertically</u> as opposed to <u>horizontally</u>, you could visualize building a large cake with many layers!]]
'''Certainly... Think of Using LVM like "building a cake":'''
* A cake needs to rest on a '''platter'''.
* In our case the ''platter'' is known as a '''volume group'''. One default volume group is automatically created if you enable LVM when installing a Linux OS. In this way we can support '''different volumes groups for different purposes''' (eg. accounting dept, IT, management, etc) just like different platters would hold different types of cakes for the party!
* Just one thing: We can grow our space between other partitions in various volume groups (or platters).
'''Need a Bigger Cake? Add More Layers for the unexpected guests!'''
* We can grow a larger cake by adding more <u>layers</u>.
* In our case, we add layers by defining and adding '''physical Volumes''' to our Volume Group.
* Some think of physical volumes as <u>partitions</u>.
* When you want to make a bigger cake, add more layers (in our case, add more physical volumes to volume group
* The partitions should be created and formatted ('''fdisk''', '''mkfs'''), then can be added as physical volumes to the volume group ('''pvcreate''')
'''Logical Volumes are like the "Unexpected Guests" at the Party (i.e. larger number of guests that expected)'''
* As hungry guests sample some can and want more, they can grab more layers of cake.
* In fact, they can also grab pieces from different cakes (i.e. from different platters or Volume Groups).
* A Logical Volume is simply a directory (mount-point) that is associated to a physical Volume or a group of physical volumes
* In our case, if we want more file size, simply create and format a partition, add it to the volume group, and then extend logical volume ('''lvextend''') so that directory or file system can grow.
* If we want to reduce size of logical volume, we can use the '''lvreduce''' command.
* There used to be problems if you reduced the logical volume size smaller than its unused capacity, but using the -r option prevents this from occurring.
* We can do these type of LVM operations without having to reboot the machine!
* You will also learn to simulate adding new hard disks by creating a virtual hard drive, partition & format new drive, add physical volume to volume group ('''pvcreate''', '''vgextend''') and extend the logical volume.
==Additional File System Maintenance==
[[Image:mount.png|thumb|700px|right|Using the '''mount''' command with no arguments displays file-systems that are already mounted. The Linux system administrator can use the '''mount''' and '''umount''' commands to connect and disconnect different partitions from the file-system to perform maintenance.]]
'''<u>Mounting and Un-Mounting File-Systems</u>'''
We take for granted that a file-system must be mounted (for example the root partition) in order for a Linux system to be usable upon system start-up. We need to learn now to do this manually by editing or adding an entry in the ''/etc/fstab'' file. The '''/etc/fstab''' (file system table) contains entries to mount various file systems automatically upon start-up of the Linux system.
The Linux system administrator also has the ability to manually '''mount''' (connect) and '''un-mount''' (disconnect) partitions in order to perform maintenance on the file system (for example un-mounting the '''/home''' partition to install software and prevent users from logging in during that process). Those command are called: '''mount''' and '''umount''' (that is NOT a typo)!
A useful example of un-mounting and mounting manually would be if a software update is to be performed, and users are not allowed to access the system. In this case, the system administrator could send an alert for the users to log-off the system due to system maintenance, un-mount the '''/home''' directory to prevent any regular users to login, and then update the software. Once the software has been updated, then mount the '''/home''' directory to allow user access.
[[Image:disk_usage.png|thumb|700px|right|The '''df''' and '''du''' commands are useful tools for Linux system administrators to flag disk space issues and investigate their causes.]]
Since administrators may need to log into the system with their regular user accounts, and then issue the '''su''' command to connect into the '''root''' account, there is a dilemma: How can /home be unmounted when you are logged in as a regular user. The solution would be to reboot the machine and boot into single-user mode (demonstrated in '''lab3'''). This allows the system administrator to connect into the system in a text-based system automatically logged in as root. Remember that '''the root account has its own home directory''' (i.e.'''/root''') which is not associated with the ''/home'' directory (which can now be un-mounted and mounted for system maintenance).
'''<u>Monitoring File System Space</u>'''
Another essential duty of a Linux system administrator is to anticipate problems and take preventative measures to avoid computer system problems <u>before</u> that occur.
Monitoring disk space activity helps provide Linux system administrators information to help take corrective action before problems can occur. The '''df''' and '''du''' commands are simply yet useful commands to help a Linux system administrator analyze and take corrective action to fix low disk space issues.
If we need more space, then we can use LVM to help us out!
Crontab utility is very easy to use.
<u>'''Typical field layout for a crontab entry (or multiple entries)'''</u>
<pre style="font-size:14pt">
.---------------- minute (0 - 59)
| .------------- hour (0 - 23)
| | .---------- day of month (1 - 31)
| | | .------- month (1 - 12) (or jan,feb,mar,apr ...)
| | | | .---- day of week (0 - 6) (Sunday=0 or 7)
| | | | | (or sun,mon,tue,wed,thu,fri,sat)
| | | | |
* * * * * command to be executed
</pre>
(NOTE: The asterisk (*) indicate to run for that unit of time)
<u>'''Example of crontab entry (using the ''crontab'' command to edit the '''/etc/crontab''' file)'''</u>
<pre style="font-size:14pt;font-family:courier;">
# Check every minute for logins by user “elvis”
* * * * * who | grep 'elvis'
# Run a script called "ascript.bash" every odd hour (1,3 5...) during the week
0 1,3,5,7,9,11,13,15,17,19,21,23 * * 1-5 /home/bob/ascript.bash
# Run "ascript.bash" every half hour during the week
0 */2 * * 1-5 /home/bob/ascript
# Same... just doing it a different way
0 */2 * * mon,tue,wed,thu,fri /home/bob/ascript
</pre>
You will learn in the lab how to create and use the crontab utility to run a shell script automatically and periodically that will send an e-mail warning to the system administrator if disk space capacity has reached a level for immediate resolution.
{{Admon/important |Be Aware of the Following Issues| Be aware of these common mistakes that students make that can cause problems for their future labs.}}
* Not following instructions
* Not constantly issuing commands to verify previous command were properly executed