1、創建一個10G分區,并格式為ext4文件系統;
(1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl;
(2) 掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳;
[root@localhost ~]# fdisk /dev/sda (創建分區)
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): n (添加新分區)
First cylinder (10499-15666, default 10499):
Using default value 10499
Last cylinder, +cylinders or +size{K,M,G} (10499-15666, default 15666): +10G (輸入分區大?。?/p>
[root@localhost ~]# mke2fs -t ext4 -b 2048 -L "MYDATA" -m 2 /dev/sda8 (格式化新分區)
[root@localhost ~]# tune2fs -o acl /dev/sda8 (修改分區默認掛在參數)
[root@localhost ~]# tune2fs -l /dev/sda8 |grep acl (查詢是否修改成功)
Default mount options: acl
[root@localhost ~]# mkdir -p /data/mydata (創建/data/mydata目錄)
[root@localhost ~]# mount -t ext4 -o noexec,noatime /dev/sda8 /data/mydata/ (掛載/dev/sda8分區)
2、創建一個大小為1G的swap分區,并創建好文件系統,并啟用之;
[root@localhost ~]# fdisk /dev/sda (創建分區)
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): n (添加新分區)
First cylinder (10499-15666, default 10499):
Using default value 10499
Last cylinder, +cylinders or +size{K,M,G} (10499-15666, default 15666): +1G (輸入大?。?/p>
Command (m for help): t (更改文件系統類型)
Partition number (1-9): 9
Hex code (type L to list codes): 82 (“82”為swap ID)
Changed system type of partition 9 to 82 (Linux swap / Solaris)
[root@localhost ~]# mkswap /dev/sda9 (格式化swap分區)
Setting up swapspace version 1, size = 1060252 KiB
no label, UUID=6751afd7-cdd0-4438-90fa-f18f4d6391b0
[root@localhost ~]# free (查看啟動前的swap大?。?/p>
total used free shared buffers cached
Mem: 1004412 142684 861728 0 6944 37928
-/+ buffers/cache: 97812 906600
Swap: 2047992 0 2047992
[root@localhost ~]# swapon /dev/sda9 (啟動剛創建swap分區)
[root@localhost ~]# free (查看啟動后的swap大?。?/p>
total used free shared buffers cached
Mem: 1004412 143180 861232 0 6956 37940
-/+ buffers/cache: 98284 906128
Swap: 3108240 0 3108240
3、寫一個腳本
(1)、獲取并列出當前系統上的所有磁盤設備;
(2)、顯示每個磁盤設備上每個分區相關的空間使用信息;
[root@localhost ~]# vim disk.sh
#!/bin/bash
# Author: liuguohui
# Date: 2016/09/25 17:00
# Email: liuguohui1008@sina.com
# Description: display disk messages
#
echo "Disk Device:"
fdisk -l |grep "^Disk /dev/[sh]d" |cut -d : -f 1
echo "========================================="
echo:"Partitions messages:"
df -h |grep "^/dev/[sh]d"
[root@localhost test]# bash disk.sh (腳本運行效果)
Disk Device;
Disk /dev/sda
===========================================
Partitions messages:
/dev/sda2 20G 387M 18G 3% /
/dev/sda1 194M 27M 158M 15% /boot
/dev/sda6 9.7G 151M 9.0G 2% /home
/dev/sda3 20G 589M 18G 4% /usr
/dev/sda5 20G 229M 19G 2% /var
4、總結RAID的各個級別及其組合方式和性能的不同;
RAID0:
不含校驗與冗余的條帶存儲,多塊磁盤組合為RAID0后,數據將被分割并分別存儲在每塊硬盤中,所以能最大的提升讀寫性能,但無法容錯,如果其中一塊磁盤損壞,將導致所有數據都無法使用,至少需要兩塊磁盤。
RAID1:
不含校驗的鏡像存儲,多塊磁盤組合為RAID1后,數據將被同時復制到每塊磁盤中,讀性能提升,寫性能下降,磁盤空間利用率降低,如果其中一個塊磁盤損壞,不會影響數據的正常使用,至少需要兩塊磁盤。
RAID2:
位級別的校驗式條帶存儲,多塊磁盤組合為RAID2后,數據將以位(bit)為單位同步式分別存儲在不同的磁盤上,并采用海明碼對數據進行校驗與恢復。擁有校驗位的RAID2允許三塊磁盤中的任何一塊磁盤損壞,并能夠對未損壞的兩塊磁盤進行運算后還原已損壞磁盤上的數據,從而實現數據恢復的功能。對大數據量的讀寫具有很高的性能,但對少量數據的讀寫性能反而不好,至少需要三塊磁盤。
RAID3:
字節級別的校驗式條帶存儲,該級別的磁盤陣列與RAID2的讀寫原理相似,僅數據分割的單位為字節。
RAID4:
數據塊級別的校驗式條帶存儲,該級別的磁盤陣列與RAID2類似,僅數據分割單位為塊。
RAID5:
數據塊級別的分布式校驗條帶存儲,多塊磁盤組合為RAID5后,數據將以塊為單位同步式分別存儲在不同的磁盤上,并對數據進行海明碼運算,與其他級別不同的是,該級別的海明碼會被寫入不同的磁盤。在每塊磁盤上,既有數據信息也有校驗信息,這一改變解決了爭用校驗盤的問題,使得同一組內并發進行多個寫操作。適用于大數據量的操作,在一塊硬盤發生故障后,RAID組online變為degraded方式,但I/O讀寫不受影響,直到故障盤恢復,但如果degraded狀態下,又有第二塊盤故障,整個RAID組的數據將丟失。
RAID6:
同RAID5最大的區別就是在RAID5的基礎上除了具有P校驗位以外,還加入了第2個校驗位Q位。相當于在RAID5的基礎之上再增加一個額外的冗余保護。它使用兩個校驗磁盤而不是一個,也就是說它能夠抵御兩塊磁盤損壞之后的數據丟失風險。但是其讀性能較差。
RAID 0+1
對數據進行分條和鏡像,性能和可靠性較高。一個磁盤驅動器發生故障,不會影響性能和可靠性,而在RAID0中,驅動器故障會影響性能和可靠性。另外,磁盤分條技術可以提高性能。
RAID 1+0
與RAID 0+1相似,對數據進行分條和鏡像,性能和可靠性較高。不同之處在于RAID10對所有磁盤進行集體分條,然后實現鏡像功能。
5、創建一個大小為10G的RAID1,要求有一個空閑盤,而且CHUNK大小為128k;
(已創建好/dev/sda{8,9,10}分區)
[root@localhost ~]# mdadm -C -a yes /dev/md1 -n 2 -l 1 -c 128 -x 1 /dev/sda{8,9,10} (創建raid1)
[root@localhost ~]# mdadm -D /dev/md1 (查看結果)
/dev/md0:
Version : 1.2
Creation Time : Sun Sep 25 12:30:56 2016
Raid Level : raid1
Array Size : 1052032 (1027.38 MiB 1077.28 MB)
Used Dev Size : 1052032 (1027.38 MiB 1077.28 MB)
Raid Devices : 2
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Sun Sep 25 12:31:02 2016
State : clean
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1
Name : localhost:0 (local to host localhost)
UUID : 5a504276:7560f20a:c08c7b21:c0459a10
Events : 17
Number Major Minor RaidDevice State
0 8 8 0 active sync /dev/sda8
1 8 9 1 active sync /dev/sda9
2 8 10 – spare /dev/sda10
6、創建一個大小為4G的RAID5設備,chunk大小為256k,格式化ext4文件系統,要求可開機自動掛載至/backup目錄,而且不更新訪問時間戳,且支持acl功能;
[root@localhost ~]# mdadm -C /dev/md5 -n 3 -l 5 -c 256 /dev/sda{8,9,10} (創建raid5)
[root@localhost ~]# mdadm -D /dev/md5 (查看結果)
/dev/md5:
Version : 1.2
Creation Time : Sun Sep 25 15:19:36 2016
Raid Level : raid5
Array Size : 8391680 (8.00 GiB 8.59 GB)
Used Dev Size : 4195840 (4.00 GiB 4.30 GB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Sun Sep 25 15:21:44 2016
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 256K
Name : localhost:5 (local to host localhost)
UUID : cd8a5920:6c9c1482:f1bafea2:05bc76eb
Events : 20
Number Major Minor RaidDevice State
0 8 8 0 active sync /dev/sda8
1 8 9 1 active sync /dev/sda9
3 8 10 2 active sync /dev/sda10
[root@localhost ~]# mke2fs -t ext4 /dev/md5 (格式化ext4文件系統)
[root@localhost ~]# vim /etc/fstab (編輯/etc/fstab文件)
寫入如下:
/dev/md127 /backup ext4 acl,noatime 0 0
7、寫一個腳本
(1) 接受一個以上文件路徑作為參數;
(2) 顯示每個文件擁有的行數;
(3) 總結說明本次共為幾個文件統計了其行數;
#!/bin/bash
# Author: liuguohui
# Date: 2016-10-04
# Email: liuguohui1008@sina.com
# Descriptions: count file lines
#
[ $# -lt 2 ] && echo "At least two filename" && eixt 2 (測試條件:參數必須大于2個)
for i in $*; do (使用for循環統計輸入文件內容的行數)
echo "filename $i: $(cat $i | wc -l)"
done
echo "total file: $#" (顯示一共統計的文件個數)
腳本運行效果:
[root@localhost test]# bash file6.sh /etc/issue /etc/fstab
filename /etc/issue: 3
filename /etc/fstab: 18
total file: 2
8、寫一個腳本
(1) 傳遞兩個以上字符串當作用戶名;
(2) 創建這些用戶;且密碼同用戶名;
(3) 總結說明共創建了幾個用戶;
#!/bin/bash
# Author: liuguohui
# Date: 2016-10-04 16:42
# Email: liuguohui1008@sina.com
# Descriptions: useradd user
#
[ $# -lt 2 ] && echo "At least two string" && exit 2 #測試傳遞的字符串不能少于2個
for i in $*; do
if id $i &> /dev/null; then #測試傳遞的字符串是否已經存在
echo "$i already exists" && exit 2
fi
useradd $i #創建用戶
echo "$i create user finished" #顯示成功信息
echo $i |passwd –stdin $i &> /dev/null #指定用戶名為用戶密碼
echo "$i set password successfully" #顯示成功信息
done
echo "total users:$#" #統計一共創建的用戶數量
[root@localhost test]# bash file5.sh join1 join2 (驗證執行腳本結果)
join1 create user finished
join1 set password successfully
join2 create user finished
join2 set password successfully
total users:2
9、寫一個腳本,新建20個用戶,visitor1-visitor20;計算他們的ID之和;
#!/bin/bash
# Author: liuguohui
# Date: 2016-10-04 18:24
# Email: liuguohui1008@sina.com
# Descriptions: useradd user and count all userid sum
#
declare -i sum=0 #聲明變量sum=0
for i in {1..20}; do
useradd visitor$i #創建用戶visitor1-visitor20
user_id=$(id -u visitor$i) #取出用戶id并賦值給變量user_id
sum=$[$sum+$user_id] #計算所有用戶的id和
done
echo $sum #輸出最后求和的值
[root@localhost test]# bash file5.sh (腳本執行結果)
10190
10、寫一腳本,分別統計/etc/rc.d/rc.sysinit、/etc/rc.d/init.d/functions和/etc/fstab文件中以#號開頭的行數之和,以及總的空白行數;
#!/bin/bash
# Author: liuguohui
# Date: 2016-10-04 18:40
# Email: liuguohui1008@sina.com
# Descriptions: total file line
#
[ $# -lt 1 ] && echo "At least a argument" && exit 2 (測試參數必須大于1個)
declare -i line_sum1=0 (聲明變量line_sum1=0)
declare -i line_sum2=0 (聲明變量line_sum2=0)
for i in $*; do (利用for循環計算題目要求的行數之和)
line=$(grep "^#" $i |wc -l)
line_sum1=$[$line+$line_sum1]
line1=$(grep "^$" $i |wc -l)
line_sum2=$[$line1+$line_sum2]
done
echo "whih # line:$line_sum1" (顯示'#'開頭的行的總和)
echo "whitespace line:$line_sum2" (顯示空白行的總和)
腳本運行結果:
[root@localhost test]# bash file6.sh /etc/rc.d/rc.sysinit /etc/fstab /etc/rc.d/init.d/functions
whih # line:94
whitespace line:206
11、寫一個腳本,顯示當前系統上所有默認shell為bash的用戶的用戶名、UID以及此類所有用戶的UID之和;
#!/bin/bash
# Author: liuguohui
# Date: 2016-10-04 19:05
# Email: liuguohui1008@sina.com
# Descriptions: total uid_sum
#
declare -i uid_sum=0 (聲明變量uid_sum=0)
grep "bash$" /etc/passwd |awk -F: '{print $1,$3}' (使用正則表達式和awk工具輸出用戶名和UID)
for i in $(grep "bash$" /etc/passwd |awk -F: '{print $3}'); do (使用for循環計算所有符合條件的用戶UID之和)
let uid_sum+=$i
done
echo "uid_sum:$uid_sum" (顯示UID總和)
12、寫一個腳本,顯示當前系統上所有,擁有附加組的用戶的用戶名;并說明共有多少個此類用戶;
#!/bin/bash
# Author: liuguohui
# Date: 2016-10-04 19:33
# Email: liuguohui1008@sina.com
# Descriptions: total user
#
declare -i count=0 (聲明變量count=0,用于for循環里計算次數)
for i in $(awk -F: '{print $1}' /etc/passwd); do (使用awk輸出所有用戶,for循環遍歷所有用戶并利用groups命令列出用戶的所屬組,再用wc -w統計,如大于3則有附加組)
if [ $(groups $i |wc -w) -gt 3 ]; then
echo "$i" (顯示有附加組的用戶名)
let count++ (累計符合條件結果的次數)
fi
done
echo "total user: $count" (顯示最后符合條件用戶的總數)
腳本執行結果:
[root@localhost test]# bash file6.sh
bin
daemon
adm
postfix
total user: 4
13、創建一個由至少兩個物理卷組成的大小為20G的卷組;要求,PE大小為8M;而在卷組中創建一個大小為5G的邏輯卷mylv1,格式化為ext4文件系統,開機自動掛載至/users目錄,支持acl;
[root@localhost ~]# pvcreate /dev/sda{9,10} (創建PV)
Physical volume "/dev/sda9" successfully created
Physical volume "/dev/sda10" successfully created
root@localhost ~]# pvscan (查詢創建結果)
PV /dev/sda9 lvm2 [10.00 GiB]
PV /dev/sda10 lvm2 [10.00 GiB]
Total: 2 [20.00 GiB] / in use: 0 [0 ] / in no VG: 2 [20.00 GiB]
[root@localhost ~]# vgcreate -s 8M lvm_one /dev/sda{9,10} (創建VG)
Volume group "lvm_one" successfully created
[root@localhost ~]# vgdisplay (查詢VG信息)
— Volume group —
VG Name lvm_one
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 19.99 GiB
PE Size 8.00 MiB
Total PE 2559
Alloc PE / Size 0 / 0
Free PE / Size 2559 / 19.99 GiB
VG UUID ndRzYS-o1mK-QZP7-0t1H-4iGQ-92Yj-mUShkn
[root@localhost ~]# lvcreate -L 5G -n mylv1 lvm_one (創建LV)
Logical volume "mylv1" created.
[root@localhost ~]# lvdisplay (查看LV信息)
— Logical volume —
LV Path /dev/lvm_one/mylv1
LV Name mylv1
VG Name lvm_one
LV UUID 1kYyft-BTvo-s7Qq-NPp9-onux-LehL-HLPpxD
LV Write Access read/write
LV Creation host, time localhost, 2016-10-07 03:46:58 -0400
LV Status available
# open 0
LV Size 5.00 GiB
Current LE 640
Segments 1
Allocation inherit
Read ahead sectors auto
– currently set to 256
Block device 253:0
[root@localhost ~]# mke2fs -t ext4 /dev/lvm_one/mylv1 (格式化mylv1)
[root@localhost ~]# vim /etc/fstab (編輯/etc/fstab)
輸入如下:
/dev/lvm_one/mylv1 /users ext4 acl 1 2
[root@localhost ~]# mount -a (掛載/etc/fstab文件中所有設備)
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 20G 393M 18G 3% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 194M 27M 158M 15% /boot
/dev/sda6 9.7G 151M 9.0G 2% /home
/dev/sda3 20G 590M 18G 4% /usr
/dev/sda5 20G 230M 19G 2% /var
/dev/mapper/lvm_one-mylv1 5.0G 138M 4.6G 3% /users
14、新建用戶magedu;其家目錄為/users/magedu,而后su切換至此用戶,復制多個文件至家目錄;
[root@localhost ~]# useradd -d /users/magedu magedu ;echo "magedu" |passwd –stdin magedu (創建magedu用戶,密碼為用戶名)
Changing password for user magedu.
passwd: all authentication tokens updated successfully.
[root@localhost magedu]# cp /var/log/messages ./ (復制文件到當前目錄)
15、擴展mylv1至9G,確保擴展完成后原有數據完全可用;
[root@localhost magedu]# lvextend -L +4G /dev/lvm_one/mylv1 (調整LV大小)
Size of logical volume lvm_one/mylv1 changed from 5.00 GiB (640 extents) to 9.00 GiB (1152 extents).
Logical volume mylv1 successfully resized.
[root@localhost magedu]# lvscan (查看調整結果)
ACTIVE '/dev/lvm_one/mylv1' [9.00 GiB] inherit
[root@localhost ~]# resize2fs /dev/lvm_one/mylv1 9G (調整文件系統大?。?/p>
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/lvm_one/mylv1 is mounted on /users; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/lvm_one/mylv1 to 2359296 (4k) blocks.
The filesystem on /dev/lvm_one/mylv1 is now 2359296 blocks long.
[root@localhost magedu]# tail -n 5 messages (查看之前復制的文件)
Oct 5 05:20:28 localhost yum[1538]: Erased: openssh-server
Oct 5 05:20:28 localhost yum[1538]: Erased: openssh
Oct 5 05:20:28 localhost yum[1538]: Erased: libdrm
Oct 5 05:20:29 localhost kernel: Kernel logging (proc) stopped.
Oct 5 05:20:29 localhost rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="963" x-info="http://www.rsyslog.com"] exiting on signal 15.
16、縮減mylv1至7G,確??s減完成后原有數據完全可用;
[root@localhost ~]# umount /users (卸載/dev/lvm_one/mylv1)
[root@localhost ~]# e2fsck -f /dev/lvm_one/mylv1 (強制檢查/dev/lvm_one/mylv1)
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/lvm_one/mylv1: 945/589824 files (0.0% non-contiguous), 79125/2359296 blocks
[root@localhost ~]# resize2fs /dev/lvm_one/mylv1 7G (調整文件系統大?。?/p>
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/lvm_one/mylv1 to 1835008 (4k) blocks.
The filesystem on /dev/lvm_one/mylv1 is now 1835008 blocks long.
[root@localhost ~]# mount /dev/lvm_one/mylv1 /users (掛載/dev/lvm_one/mylv1)
[root@localhost ~]# df -h (查看/dev/lvm_one/mylv1大小是否改變)
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 20G 393M 18G 3% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 194M 27M 158M 15% /boot
/dev/sda6 9.7G 151M 9.0G 2% /home
/dev/sda3 20G 590M 18G 4% /usr
/dev/sda5 20G 230M 19G 2% /var
/dev/mapper/lvm_one-mylv1 6.9G 165M 6.4G 3% /users
[root@localhost ~]# lvreduce -L 7G /dev/lvm_one/mylv1 (調整/dev/lvm_one/mylv1大?。?/p>
WARNING: Reducing active and open logical volume to 7.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lvm_one/mylv1? [y/n]: y
Size of logical volume lvm_one/mylv1 changed from 9.00 GiB (1152 extents) to 7.00 GiB (896 extents).
Logical volume mylv1 successfully resized.
[root@localhost ~]# lvscan (查看是否成功)
ACTIVE '/dev/lvm_one/mylv1' [7.00 GiB] inherit
[root@localhost magedu]# tail -n 5 messages (驗證文件是否損壞)
Oct 5 05:20:28 localhost yum[1538]: Erased: openssh-server
Oct 5 05:20:28 localhost yum[1538]: Erased: openssh
Oct 5 05:20:28 localhost yum[1538]: Erased: libdrm
Oct 5 05:20:29 localhost kernel: Kernel logging (proc) stopped.
Oct 5 05:20:29 localhost rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="963" x-info="http://www.rsyslog.com"] exiting on signal 15.
17、對mylv1創建快照,并通過備份數據;要求保留原有的屬主屬組等信息;
[root@localhost magedu]# lvcreate -s -L 512M -n mylv1-snap /dev/lvm_one/mylv1 (創建快照)
Logical volume "mylv1-snap" created.
[root@localhost magedu]# mount /dev/lvm_one/mylv1-snap /mnt (掛載快照)
[root@localhost magedu]# cp -a /mnt /tmp/backup/ (通過快照備份數據到/tmp/backup/目錄下)
原創文章,作者:heianyangguo,如若轉載,請注明出處:http://www.www58058.com/48962