1,576
edits
Changes
→Part 2: Adding Additional Virtual Hard Drives
=LAB PREPARATION=
{| width="40%" align="right" cellpadding="10"
|- valign="top"
|
[[Image:software.png|thumb|right|200px|Monitory Monitoring Disk Space can fix problems <u>'''before'''</u> they become a crisis (like running low on hard disk space). We will use LVM to easily resize Linux file-systems.]]
|
[[Image:crontab.png|thumb|right|175px|Linux system administrators need to schedule Linux shell scripts and commands (via '''crontab''') to automatically run in order to be more productive.]]
|}
===Purpose / Objectives of Lab 5===
The purpose of this lab is to discuss demonstrate how a Linux system administrator can monitor hard disk space availability, and to manage file system size via the Logical Volume Manager (LVM) application. This lab will also demonstrate how to manually mount (i.e. connect) and unmount (disconnect) partitions to file system directories, and demonstrate how to have partitions including adjusting the size of their automatically mounted to directories upon Linux systems if space is requiredsystem startup.
:* Monitoring Disk Space with utilities such as '''ssm list''', '''df -h''', and '''du -ah'''.
:* Use the '''crontab''' utility to automatically schedule running the execution of a shell script to "flag" low disk space.
:* Use '''LVM''' to '''resize partitions via command-line utilities'''.
:* Create, partition and format '''virtual hard disks''' to increase the size of file systems.
[http://man7.org/linux/man-pages/man8/pvdisplay.8.html pvdisplay]<br>
[http://man7.org/linux/man-pages/man8/lvdisplay.8.html lvdisplay]<br>
[http://manpages.ubuntu.com/manpages/trusty/man8/ssm.8.html ssm]<br>
|style="padding-left:20px;" |LVM Management
[http://man7.org/linux/man-pages/man8/lvextend.8.html lvextend]<br>
[http://man7.org/linux/man-pages/man8/lvcreate.8.html lvcreate]<br>
[http://man7.org/linux/man-pages/man1/df.1.html df]<br>
[http://man7.org/linux/man-pages/man1/du.1.html du]<br>
[http://wwwman7.lehman.cuny.eduorg/cgi-binlinux/man-cgi?pages/man1/awk+1 .1p.html awk]<br>
[http://tldp.org/HOWTO/Partition/fdisk_partitioning.html fdisk]<br>
[http://www.cyberciti.biz/faq/howto-format-create-linux-filesystem/ mkfs]<br>
[http://code.tutsplus.com/tutorials/scheduling-tasks-with-cron-jobs--net-8800 Using crontab]
|}
= INVESTIGATION 1: MONITORING HARD DISK SPACE =
=== Part 1: Hard Disk Space Utilities===
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 they occur. An example could would be to periodically monitor hard disk space in order to make adjustments before it impacts on system performance.
Therefore, we are going to learn in this section how to monitor disk space activity to help take corrective action before problems can occur.
:'''Perform the following steps:'''
# Launch your '''c7host''' and '''centos2''' VMs.
# Issue the command: <b><code><span style="color:#3366CC;font-size:1.2em;">df -h</span></code></b>
# Note the disk space usage for the '''/''' and '''/home''' partitions.
# If a partition is running out of available space, the Linux System Administrator can reallocate space among partitions or add another disk and grow the file system. The administrator can also can investigate the cause of low disk space. Two examples immediately come to mind: excessive use of space from users, and potential penetration from hackers.
# To investigate excessive disk usage by regular users, you can obtain a total amount of disk usage for that user by issuing the command:<br><b><code><span style="color:#3366CC;font-size:1.2em;">du -ha . | more</span></code></b>
# If there is a recurring space usage problem with regular users, the Linux system administrator can impose quotas (caps on disk usage). This method is not taught in this course.
# The methods to monitor potential penetration to a Linux system are too numerous, and are taught in other courses (for example: SEC520). One method of monitoring potential penetration is use the command:<br><b><code><span style="color:#3366CC;font-size:1.2em;">find -P / -size +100000k</span></code></b>
# The next section will apply some of these tools we have discussed into a shell script and crontab entry to periodically monitor and contact the system administrator of potential disk space issues (before they become a serious problem).
|{{Admon/tip|Bash Shell Scripting Tips:|<br>'''<u>Using awk to Manipulate Text</u>'''<br><br><ul><li>Very useful command for report generation, text file repair, or text and floating-point decimal manipulation. The command mimics a C program, with braces '''{ }''' that surround the action to perform based on records from a database file matching either test conditions, regular expressions, etc. Fields appear as numbers with $.<br><br></li><li>Examples:<br><br>''awk '{print}' data-file.txt''<br>''awk -F";" '{print $5,$3}' data-file.txt''<br>''awk -F"," '$4 >= 10000 {print $1, $2}' salary.txt''<br><br></li></ul>'''<u>Crontab (Chronograph Tables)</u>'''<br><br><ul><li>Used to automatically run (as opposed to manually run) scripts, programs, or commands. There are many tables (files), but the main one is: '''/etc/cron'''. The '''crontab''' command can be used to ''list'', ''create'', ''modify'' or ''remove'' scheduled jobs in the file.<br><br></li><li>Examples:<br><br>''crontab -e -u user'' # create/modify<br>''crontab -r -u user-name'' # remove specific user's crontab<br>''crontab -l -u username'' #List current schedules</li></ul>}}
|}
===Part 2: Using crontab to Automatically Alert System Administrator of Low Hard Disk Space===
This emphasis on this section focuses on how to automatically run useful shell scripts or without the Linux system administrator being there to issue that shell script that we have created at specific dates/times. It would be silly highly unlikely to expect a system administrator to stay up late (eg. 2 a.m.) to manually run a shell script to terminate processes or to re-boot Linux servers. Database files (tables) are used to provide instructions on how frequent shell scripts or commands can be run.
The '''cron''' daemon is used to refer to these files shell scripts (or other commands or programs) and to run them on a pre-determined basis. The term '''cron''' comes from the old word '''chronograph''' meaning a special type of watch (actually a ''stop-watch'') to help monitor and schedule routine tasks.
:'''Perform the following steps:'''
#Perform this section in your '''c7host''' machine
#Make certain you are logged in as '''root'''.
#Change to the '''/root/bin''' directory.
#Download, study, and run the following shell script. Issue by issuing the following command:<br><b><code><span style=" pointer-events:none;cursor:default;color:#3366CC;font-size:1.2em;">wget https://scs.senecacict.onsenecacollege.ca/~murray.saulops235/labs/monitor-disk-space.bash</span></code></b>
#Try to understand what this Bash Shell script does (refer to man pages for the '''awk''' command), and then run the script as root.
#Give execute permissions and run this shell script. This script is supposed to notify the root user by email if there are any potential partition size issues.
#Issue the follow command: <b><code><span style="color:#3366CC;font-size:1.2em;">mail</span></code></b>(if you get an error, install email by issuing the command:<br><b><code><span style="color:#3366CC;font-size:1. 2em;">yum install mailx</span></code></b><br>Check to see if there are any mail messages. If there are mail messages, they do not relate to this shell script execution. Remove all mail messages by typing d immediately followed by a mail message number range (eg. to remove all messages. For example, if there are 5 messages, type '''d1-5''' and then press '''ENTER''' and enter '''q''' to exit the mail application).#Edit the '''monitor-disk-space.bash ''' shell script, and set the '''<b><code><span style="color:#3366CC;font-size:1.2em;">ALERT''' =90</span></code></b> value from 90 to '''30''', <b><code><span style="color:#3366CC;font-size:1.2em;">ALERT=10</span></code></b>. Then save your editing session, and re-run this shell script.
#Run the '''mail''' command. Do you have a mail message? Enter the mail message number to view the message. If there is a message, what is the purpose of this message?
# Exit from the mail command.
In order to automatically run the above-mentioned script periodically, you use the scheduler in Linux called '''crontab'''. The term crontab stands for '''Chronograph Tables''', where a chronograph is the old term for a timepiece (the forerunner of the modern stop-watch). You can run the crontab command to schedule commands and shell script to be run in a number of different ways.
<br><br>
<ol>
<li value="1011">Quickly view the tutorial about the <b>[http://code.tutsplus.com/tutorials/scheduling-tasks-with-cron-jobs--net-8800 Using crontab]</b> file to understand the purpose of this
file and how to basically set up a schedule to run a shell script.</li>
<li>Issue the following command to setup a crontab entry for root:<br><b><code><span style=" pointer-events:none;cursor:default;color:#3366CC;font-size:1.2em;">crontab -e</span></code></b></li><li>Enter the following line in order to run at 6:00 on the first day of every month:<br><b><code><span style=" pointer-events:none;cursor:default;color:#3366CC;font-size:1.2em;">0 6 1 * * /root/bin/monitor-disk-space.bash #Runs first day of each month (6:00 am)</span></code></b></li><li>'''Save''' the crontab entry.</li><li>Confirm that the entry was properly saved by issuing the following command:<br><b><code><span style=" pointer-events:none;cursor:default;color:#3366CC;font-size:1.2em;">crontab -l</span></code></b></li></ol>
'''Answer INVESTIGATION 1 observations / questions in your lab log book.'''
=INVESTIGATION 2: MANAGING HARD DISK SPACE USING LVM=
We will now use LVM in order to grow and reduce our file system, using extra unallocated space on our existing (default) virtual hard disk for our centos2 VM.
:'''Perform the following steps:'''
# Remain in your '''centos2''' VM for this section.
# Make certain that you are logged in as '''root'''.
#Issue the command: <b><code><span style="color:#3366CC;font-size:1.2em;">ls /dev/vd*</span></code></b><br><br>'''NOTE:''' If nothing displays, issue the command: '''ls /dev/sd*''' and use that device pathname '''/dev/sda''' instead, and notify your instructor when about to run your lab5-check.bash shell script at the end of this lab.<br><br>
# Issue the following command to install the '''ssm''' command:<br><b><code><span style="color:#3366CC;font-size:1.2em;">yum install system-storage-manager</span></code></b>
# Issue the command: <b><code><span style="color:#3366CC;font-size:1.2em;">ssm list</span></code></b>. Take a few moments to note the volume group, physical volume and logical volume sections of the command output.
# Check to see if there is any remaining space on your existing hard disk. Can you see any?
# You can create a partition by using the fdisk command. Issue the following command: <br><b><code><span style="color:#3366CC;font-size:1.2em;">fdisk /dev/vda</span></code></b> (or fdisk /dev/sda if there is no /dev/vda).
#At the '''fdisk''' prompt , issue the command: <b><code><span style="color:#3366CC;font-size:1.2em;">p</span></code></b>. What does this do?#Now issue the commands <b><code><span style="color:#3366CC;font-size:1.2em;">n</span></code></b> (new partition), <b><code><span style="color:#3366CC;font-size:1.2em;">p</span></code></b> (primary partition), <b><code><span style="color:#3366CC;font-size:1.2em;">3</span></code></b> (i.e. next available partition number). When prompted for initial block, press '''enter''' to accept the default beginning block size, and type: <b><code><span style="color:#3366CC;font-size:1.2em;">+2G3G</span></code></b> at ending block (create 2GB for a 3GB partition) and press '''enter'''.
#At the fdisk prompt, issue the command <b><code><span style="color:#3366CC;font-size:1.2em;">p</span></code></b> to review the partition information.
#Enter the command <b><code><span style="color:#3366CC;font-size:1.2em;">w</span></code></b> to save partition table and exit (ignore WARNING message).
[[Image:Add_virtual_disk.png|thumb|right|400px|You can add virtual hard disks for a VM by changing to the Details section for the VM (as opposed to console), click Add Hardware, fill information in the Add New Virtual Hardware dialog box and clicking Finish.]]
|}
===Part 2: Adding Additional Virtual Hard Drives===
:'''Perform the following steps:'''
# Remain in your '''centos2''' VM for this section.
<ol>
<li value="3">Record the size of the volume group and the amount of free space</li>
<li>At the top of your VM KVM window (make certain <u>not</u> full screen mode) for '''centos2''', click the '''view''' menu and change view from '''Console''' to <u>'''Details'''</u>''' .</li> <li>At the bottom left-hand corner, click '''Add Hardware''' and add a new storage device of '''2GBs''', make sure the '''Bus type''' is selected as: <u>'''using the same type as your first drive that'VirtIOs already there''' disk</u>. If your first drive is SATA, IDE, or VirtIO, select that.</li> <li>Click the '''VM ''' menuagain, and return to the '''console''' view to access your centos2 VM display.</li>
<li>Issue the command: <b><code><span style="color:#3366CC;font-size:1.2em;">ls /dev/vd*</span></code></b>, what has changed?</li>
<li>Use '''fdisk''' (''refer to how to use in Part 1'') to create a new single '''primary''' partition for '''/dev/vdb''' that fills the ''entire'' disk, save partition table (accepting defaults default prompts would workand '''type w to write your changes'''!), restart your '''centos3centos2''' VM and then .<li> Format your new ''vdb1'format''' that partition for with file type: '''ext4'''.</li> <li>Now we'll make the new device a '''physical volume''', add it to the '''volume group''', and extend '''lv_archive'''by issuing the following commands:</li></olbr>:: <b><code><span style="color:#3366CC;font-size:1.2em;">pvcreate /dev/vdb1</span></code></b> (enter '''y''' to proceed - ignore warning) :: <br><b><code><span style="color:#3366CC;font-size:1.2em;">vgextend cent0s_centos2 centos_centos2 /dev/vdb1</span></code></b><br><br>'''NOTE:''' If you experience an error message, issue the '''ssm list''' command, and check the '''volume group name''' under the '''"pool"''' section.<br>If the volume group name is different than '''centos_centos2''', then use that volume group name for all remaining commands that use "centos_centos2"<br><br></li> <li>Re-issue the '''ssm list''' command to see if there is any change.</li>: <li>Issue the following command to extend the logical volume for the home file-system: <b><code><span style="color:#3366CC;font-size:1.2em;">lvextend -L +2G -r centos_centos2/lv_archivehome --size +2G</span></code></b> <ol> <li value="10">Now rerun the '''ls /dev/vd*''' , '''ssm list''' and '''df -h''' commands.</li>
<li>Record the size of the volume group and the amount of free space. What has changed and what caused those changes?</li>
<li>Among Issue the changes, note '''ssm list''' command. Note that your root home file-system is now 2GB bigger, and you have not even rebooted your machine since you used fdisk to create a partition!</li> <li>Reduce the size of the '''lv_archiveReboot''' partition by '''1GB''' by issuing the following command:<br><b><code><span style="color:#3366CC;font-size:1.2em;">lvreduce centos_centos_2/lv_archive --size 1G</span></code></b></li>Confirm that the file system has been reduced.your centos2 VM</li> <li>Record the LVM Management commands in your lab log-book.</li>
</ol>
[[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.]]
=== Part 3: Manually & Automatically Mount Partitions ===
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 how to do this manually by editing or adding an entry in the file system table ('''/etc/fstab'''). This file 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).
:'''Perform the following steps:'''
# Perform this part in your '''centos2''' VM.
# Issue the following command to create a mount-point (directory to connect /dev/dva3 partition to):<br><b><code><span style="color:#3366CC;font-size:1.2em;">mkdir /archive</span></code></b>
# Issue the following command to mount the partition:<br><b><code><span style="color:#3366CC;font-size:1.2em;">mount -t ext4 /dev/vda3 centos_centos2/archive /archive</span></code></b># Use the '''ls ''' command to view the contents of the /archive directory. What do you see?
# Issue the '''mount''' command (without arguments) to confirm it has been mounted.
# Unmount the '''/arhive archive''' directory by issuing the following commmand: <b><code><span style="color:#3366CC;font-size:1.2em;">umount /archive</span></code></b>
# Issue the '''mount''' command (without arguments) to confirm it has been mounted.
:We will now edit the /etc/fstab file in order to have the /dev/vda3 partition automatically mounted to the /archive directory upon system boot-up
<ol><li value="8">View the contents of the file-system table '''/etc/fstab''' by issuing the following command:<br><b><code><span style="color:#3366CC;font-size:1.2em;">cat /etc/fstab</span></code></b></li>
<li>Note Issue the line that automatically mounts a file-system (''/dev/sda3'', type ''ext4'') following command to add an entry to '''/archive'''. This was automatically performed for you via the '''system-config-lvm''' utility.</li><li>View and record the fields for the '''/archive''' mount in your lab logbook, and then issue the following command to reconnect or mount '''/archive'''directory upon bootup:<br><b><code><span style="color:#3366CC;font-size:1.2em;">mount -t ext4 echo "/dev/centos_centos2/archive /archive ext4 defaults 1 2" >> /etc/fstab</span></code></b><br/li><brli>'''NOTE:Reboot''' If you are having problem mounting, use your centos2 VM so see if the /dev pathname listing in your /etc/fstab filearchive directory is automatically mounted.<br><br></li><li>Confirm that this file-system has been properly mounted. '''Note: ''' You could have also issued the command: '''mount -a''' to <u>automatically</u> mount the file-systems contained in the '''/etc/fstab''' file.<br><br>Tip: If you had to do manually configure /etc/fstab (eg. only in text-based mode - centos3), you could have issued without booting the command VM (as root):<br> <b><code><span style="color:#3366CC;font-size:1.2em;">echo "/dev/centos_centos2/archive /archive ext4 defaults 1 2" >> /etc/fstab</span></code></b><br>(although we don't need to do this, since it was already donegood for testing before trying a reboot).<br><br></li></ol>'''An Interesting Question''': If root needs to unmount the '''/home''' directory for maintenance but we had to first login in graphically as a regular user, then su to "root", isn't our regular user still logged in so we can't un-mount the /home directory?!? How can we as a Linux System Administrator get around the problem (hint: you already learned it somewhere in lab3!!! Wow, using what we already taught can pay-off in the future ... lol!).
'''Answer the INVESTIGATION 2 observations / questions in your lab log book.'''
= LAB 5 SIGN-OFF (SHOW INSTRUCTOR) =
===Exclusively for Summer 2020 term, submissions are accepted only online!===
Follow the submission instructions for lab 5 on Blackboard.
{{Admon/important|Time for a new backup!|If you have successfully completed this lab, make a new backup of your virtual machines as well as your host machine.}}
:'''Perform the Following Steps:'''
# Make certain that your '''c7host''' and '''centos2''' VMs are running.
# Switch to your '''centos2c7host''' VMmachine.
# Open a shell terminal, '''su -''' into root, and change to the '''/root/bin''' directory., open a shell terminal
# Issue the Linux command: <b><code><span style="color:#3366CC;font-size:1.2em;">wget httphttps://matrixict.senecac.onsenecacollege.ca/~murray.saulops235/ops235labs/lab5-check.bash</span></code></b>
# Give the '''lab5-check.bash''' file execute permissions (for the file owner).
# Run the shell script and if any warnings, make fixes and re-run shell script until you receive "congratulations" message.
#Arrange proof of the following on the screen:<br><blockquote><span style="color:green;font-size:1.5em;">✓</span> '''centos2''' VM:<blockquote><ul><li>Output from '''ssm list''' command.</li><li>Proof that '''/archive''' has been mounted</li></ul></blockquote><span style="color:green;font-size:1.5em;">✓</span> '''c7host''' Machine:<blockquote><ul><li>Proof of creation of the shell script: '''monitor-disk-space.bash'''</li><li>Crontab entry for '''root''' account</li><li>Run the '''lab5-check.bash''' script in front of your instructor (must have all <b><code><span style="color:#66cc00;border:thin solid black;font-size:1.2em;"> OK </span></code></b> messages)</li></ul></blockquote><span style="color:green;font-size:1.5em;">✓</span> '''Lab5''' log-book filled out.
= Practice For Quizzes, Tests, Midterm & Final Exam =
[[Category:OPS235]]
[[Category:OPS235 Labs]]
[[Category:CentOS 7]]
[[Category:SSD2]]
[[Category:Digital Classroom]]