從Linux小白到大?!c狼共舞的日子7

馬哥教育網絡班21期+第7周課程練習

1、創建一個10G分區,并格式為ext4文件系統;

  • (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl;

  • (2) 掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳;


[root@localhost ~]# fdisk /dev/sdb
Command (m for help): n
Partition number (1-4): 1
First cylinder (1-7832, default 1): 1
Last cylinder, +cylinders or +size{K,M,G} (1-7832, default 7832): +10G
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@localhost ~]# partx -a /dev/sdb
[root@localhost ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda  8:00   40G  0 disk 
├─sda1   8:10 29.3G  0 part /
└─sda2   8:202G  0 part [SWAP]
sdb  8:16   0   60G  0 disk 
└─sdb1   8:17   0   10G  0 part 
sr0 11:01  3.5G  0 rom

(1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl;

[root@localhost ~]# mke2fs -t ext4 -b 2048 -m 2 -L 'MYDATA'  /dev/sdb1
[root@localhost ~]# tune2fs -o acl /dev/sdb1

(2) 掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳;

[root@localhost ~]# mkdir -pv /data/mydata
[root@localhost ~]# mount -o noexec,noatime /dev/sdb1 /data/mydata

2、創建一個大小為1G的swap分區,并創建好文件系統,并啟用之;


[root@localhost ~]# fdisk /dev/sdb
Command (m for help): n
Partition number (1-4): 2
First cylinder (1307-7832, default 1307): 1307
Last cylinder, +cylinders or +size{K,M,G} (1307-7832, default 7832): +1G
Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 82
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@localhost ~]# partx -a /dev/sdb
[root@localhost ~]# mkswap /dev/sdb2
[root@localhost ~]# swapon /dev/sdb2

3、寫一個腳本

  • (1)、獲取并列出當前系統上的所有磁盤設備;

  • (2)、顯示每個磁盤設備上每個分區相關的空間使用信息;


[root@localhost ~]# cat disk.sh 
#!/bin/bash
#
for i in `lsblk | egrep '^(sd|hd)' | cut -d' ' -f1`;do
    echo Disk:$i
    echo Disk Space:`lsblk /dev/$i | egrep '(sd|hd)[[:alpha:]][[:digit:]]'`
done

4、總結RAID的各個級別及其組合方式和性能的不同;


從Linux小白到大牛——與狼共舞的日子7

RAID 0(條帶模式)

  • 這種模式下,RAID 會將磁盤分割成等量大小的區塊。存儲數據時,將數據交錯存儲到多塊磁盤上去。

  • 性能表現:讀、寫性能提升

  • 冗余能力(容錯能力):無

  • 空間利用率:N*min(S1,S2,…)

RAID 1(鏡像模式)

  • 這種模式下,每組至少兩顆磁盤,一塊用來存儲數據,另一塊用來存儲數據的備份。

  • 性能表現:讀性能提升,寫性能下降

  • 冗余能力:有

  • 空間利用率:1*min(S1,S2,…)

RAID 5(循環校驗)

  • RAID 5 至少需要 3 顆硬盤才能組成。它的寫入特點類似于 RAID 0,不同的是在每個循環寫入的過程中,在每顆磁盤中會加入一個校驗位。當寫入硬盤的數據損壞后,可以利用校驗位進行數據的恢復。如果單獨使用一顆磁盤存儲 校驗位,會大大增加它的讀寫負擔,所以校驗位是輪流寫入每顆硬盤的。

  • 性能表現:讀、寫性能提升

  • 冗余能力:有

  • 空間利用率:(N-1)*min(S1,S2,…)

RAID 0+1

  • 這種模式是 RAID 0 和 RAID 1 的組合。首先用兩顆磁盤組成 RAID 0,共設定兩組,然后將兩組 RAID 0組合成 RAID 1。

  • 性能表現:讀、寫性能提升

  • 冗余能力:有

  • 空間利用率:N*min(S1,S2,…)/2

RAID 1+0

  • 這種模式就是先組合成 RAID 1,然后在組合成 RAID 0。

  • 性能表現:讀、寫性能提升

  • 冗余能力:有

– 空間利用率:N*min(S1,S2,…)/2

5、創建一個大小為10G的RAID1,要求有一個空閑盤,而且CHUNK大小為128k;


[root@localhost ~]# mdadm -C /dev/md1 -n2 -l1 -a yes -x1 -c128 /dev/sdb1 /dev/sdb2 /dev/sdb3
[root@localhost ~]# mdadm -D /dev/md1
/dev/md1:
Version : 1.2
  Creation Time : Fri Oct 28 16:00:46 2016
 Raid Level : raid1
 Array Size : 10482112 (10.00 GiB 10.73 GB)
  Used Dev Size : 10482112 (10.00 GiB 10.73 GB)
   Raid Devices : 2
  Total Devices : 3
Persistence : Superblock is persistent

Update Time : Fri Oct 28 16:01:30 2016
  State : clean, resyncing 
 Active Devices : 2
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 1

  Resync Status : 84% complete

   Name : localhost:1  (local to host localhost)
   UUID : ebde693e:fb4f8293:9c3ed012:ee5fb97e
 Events : 13

Number   Major   Minor   RaidDevice State
   0   8   170  active sync   /dev/sdb1
   1   8   181  active sync   /dev/sdb2

   2   8   19-  spare   /dev/sdb3

6、創建一個大小為4G的RAID5設備,chunk大小為256k,格式化ext4文件系統,要求可開機自動掛載至/backup目錄,而且不更新訪問時間戳,且支持acl功能;


[root@localhost ~]# mdadm -C /dev/md2 -n3 -l5 -c256 /dev/sdb1 /dev/sdb2 /dev/sdb3
[root@localhost ~]# mdadm -D /dev/md2
/dev/md2:
Version : 1.2
  Creation Time : Fri Oct 28 16:11:03 2016
 Raid Level : raid5
 Array Size : 8393216 (8.00 GiB 8.59 GB)
  Used Dev Size : 4196608 (4.00 GiB 4.30 GB)
   Raid Devices : 3
  Total Devices : 3
Persistence : Superblock is persistent

Update Time : Fri Oct 28 16:11:16 2016
  State : clean, degraded, recovering 
 Active Devices : 2
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 1

 Layout : left-symmetric
 Chunk Size : 256K

 Rebuild Status : 32% complete

   Name : localhost:2  (local to host localhost)
   UUID : bf022f15:66dbe3d7:93db49c1:bcc40c46
 Events : 6

Number   Major   Minor   RaidDevice State
   0   8   170  active sync   /dev/sdb1
   1   8   181  active sync   /dev/sdb2
   3   8   192  spare rebuilding   /dev/sdb3
[root@localhost ~]# mkfs.ext4 /dev/md2
[root@localhost ~]# mkdir /backup
[root@localhost ~]# vim /etc/fstab
    /dev/md2   /backup  ext4notime,acl   0 0

7、寫一個腳本

  • (1) 接受一個以上文件路徑作為參數;

  • (2) 顯示每個文件擁有的行數;

  • (3) 總結說明本次共為幾個文件統計了其行數;


[root@localhost ~]# cat filecount.sh 
#!/bin/bash
#
declare -i count=0
if [ $# -lt 1 ];then
    echo "Usage:$0 /path/to/file1 /path/to/file2 ...."
    exit 1
fi
for i in $*;do
    [ -f $i ] && echo "$i have lines:`wc -l $i | cut -d' ' -f1`"
    [ $? -eq 0 ] && count=$[$count+1] || echo "$i not file"
done
echo "Files total:$count"

8、寫一個腳本

  • (1) 傳遞兩個以上字符串當作用戶名;

  • (2) 創建這些用戶;且密碼同用戶名;

  • (3) 總結說明共創建了幾個用戶;


[root@localhost ~]# cat useradd.sh 
#!/bin/bash
#
declare -i count=0
if [ $# -lt 2 ];then
    echo "Usage:$0 user1 user2"
    exit 1
fi
for i in $*;do
    ! id $i &>/dev/null && useradd $i && echo $i | passwd --stdin $i &>/dev/null && count=$[$count+1]
    [ $? -eq 0 ] && echo "User $i added." || echo "User $i exists."
done
echo "Create users:$count"

9、寫一個腳本,新建20個用戶,visitor1-visitor20;計算他們的ID之和;


[root@localhost ~]# cat userid.sh 
#!/bin/bash
#
declare -i idcount=0
for i in {1..20};do
    ! id visitor$i &>/dev/null && useradd visitor$i && echo User visitor$i add. 
    [ $? -eq 0 ] && let idcount=$idcount+$(id -u visitor$i) || echo User visitor$i exists.
done
echo ID count:$idcount.

10、寫一腳本,分別統計/etc/rc.d/rc.sysinit、/etc/rc.d/init.d/functions和/etc/fstab文件中以#號開頭的行數之和,以及總的空白行數;


[root@localhost ~]# cat colcount.sh 
#!/bin/bash
#
declare -i spacecount=0
declare -i jingcount=0
file1=/etc/rc.d/rc.sysinit
file2=/etc/rc.d/init.d/functions
file3=/etc/fstab
for i in {$file1,$file2,$file3};do
    [ -f $i ] && let jingcount+=$(grep ^# $i | wc -l) || echo $i no exists.
    [ -f $i ] && let spacecount+=$(grep ^$ $i | wc -l) || echo $i no exists. 
done
echo "Spacecount totall:$spacecount"
echo "# count totall:$jingcount"

11、寫一個腳本,顯示當前系統上所有默認shell為bash的用戶的用戶名、UID以及此類所有用戶的UID之和;


[root@localhost ~]# cat usershell.sh 
#!/bin/bash
#
declare -i count=0
for i in `grep bash$ /etc/passwd | cut -d: -f1,3`;do
    echo $i
    let count+=$[ `echo $i | cut -d: -f2` ]
done
echo "UID count:$count"

12、寫一個腳本,顯示當前系統上所有,擁有附加組的用戶的用戶名;并說明共有多少個此類用戶;


[root@localhost ~]# cat group.sh 
#!/bin/bash
#
declare -i count=0
for i in `cut -d: -f1 /etc/passwd`;do
    id $i | grep , &>/dev/null && echo $i && let count++
done
echo "User count:$count"

13、創建一個由至少兩個物理卷組成的大小為20G的卷組;要求,PE大小為8M;而在卷組中創建一個大小為5G的邏輯卷mylv1,格式化為ext4文件系統,開機自動掛載至/users目錄,支持acl;


[root@localhost ~]# fdisk /dev/sdb
   Device Boot  Start End  Blocks   Id  System
/dev/sdb1   1130610490413+  8e  Linux LVM
/dev/sdb21307261210490445   8e  Linux LVM
[root@localhost ~]# pvcreate /dev/sdb1 /dev/sdb2
  Physical volume "/dev/sdb1" successfully created
  Physical volume "/dev/sdb2" successfully created
[root@localhost ~]# vgcreate -s 8M vg1 /dev/sdb1 /dev/sdb2
  Volume group "vg1" successfully created
[root@localhost ~]# lvcreate -n mylv1 -L 5G vg1
  Logical volume "mylv1" created
[root@localhost ~]# mkfs.ext4 /dev/vg1/mylv1 
[root@localhost ~]# mkdir /users
    /dev/vg1/mylv1 /users   ext4acl  0 0

14、新建用戶magedu;其家目錄為/users/magedu,而后su切換至此用戶,復制多個文件至家目錄;


[root@localhost ~]# useradd -d /users/magedu/ magedu
[magedu@localhost ~]$ cp /etc/fstab /etc/inittab ./

15、擴展mylv1至9G,確保擴展完成后原有數據完全可用;


[root@localhost ~]# lvextend -L 9G /dev/vg1/mylv1
[root@localhost ~]# resize2fs /dev/vg1/mylv1

16、縮減mylv1至7G,確??s減完成后原有數據完全可用;


[root@localhost ~]# umount /dev/vg1/mylv1
[root@localhost ~]# e2fsck -f /dev/vg1/mylv1
[root@localhost ~]# resize2fs /dev/vg1/mylv1 7G
[root@localhost ~]# lvreduce -L 7G /dev/vg1/mylv1
[root@localhost ~]# mount /dev/vg1/mylv1 /users

17、對mylv1創建快照,并通過備份數據;要求保留原有的屬主屬組等信息;


[root@localhost ~]# lvcreate -L 7G -p r -s -n mylv1_snapshot /dev/vg1/mylv1

原創文章,作者:N21_孤狼,如若轉載,請注明出處:http://www.www58058.com/56895

(0)
N21_孤狼N21_孤狼
上一篇 2016-11-14
下一篇 2016-11-14

相關推薦

  • 馬哥教育網絡班22期+第二周課程練習

    Linux上文件可管理類命令,其常用的使用方法和相關示例 目錄管理類命令 目錄管理類命令包含:mkdir,rmdir mkdir 使用說明及格式 移除空目錄 rmdir [OPTION]… DIRECTORY…   常見選項及說明 -p –parents 創建時如果父目錄不存在,一并創建 -v –ve…

    Linux干貨 2016-08-24
  • shell腳本(一)

     本周是來馬哥教育的第四周,本周重點是shell腳本的編寫,本篇博客也是以shell腳本的簡述為主。 一.shell腳本的概念及意義     shell腳本是linux下的一種編程方式,百度百科給出這樣的釋義:腳本(shell script)是利用shell的功能所寫的一個程序,這個程序是使用純文本文件,將一…

    Linux干貨 2017-08-05
  • 第二十天 centos7的lamp簡單實現

    博客作業:CentOS 7 lamp, vhost1: pma.stuX.com, phpMyAdmin, 同時提供https服務; vhost2: wp.stuX.com, wordpress vhost3: dz.stuX.com, Discuz 環境說明: DNS是:192.168.100.7 vhosts(Centos7):192.168.100.1…

    Linux干貨 2016-06-18
  • useradd的學習小結

    1、作用 創建一個新的用戶賬號或者更新創建用戶時的默認設置。 2、語法 有兩種語法格式,第一種是創建新用戶時,為新用戶設置屬性,而不完全使用/etc/default/useradd默認設置的內容;第二種是設置/etc/default/useradd的內容,即設置創建新用戶時,新用戶具有的默認屬性。 (1)useradd [選項 屬性] 用戶名 如果不加選項,…

    2017-07-22
  • HA cluster應用—CoroSync+Pacemaker

    HA cluster應用——CoroSync v2 (quorum system)+Pacemaker (standalone daemon)+ crmsh/pcsh corosync簡述: Corosync是OpenAIS發展到Wilson版本后衍生出來的開放性集群引擎工程??梢哉fCorosync是OpenAIS工程的一部分。OpenAIS從openais…

    2016-11-27
  • Linux的發展史

    引言: 開源是什么?什么是Unix 、Linux ?這兩種操作系統又有什么關聯? ?   大家當前在用最常見的電腦系統是眼前的Windows ,但為何我們要花學習Linux 的發展史? 通過下面的介紹,我們能大致了解互聯網發展的一些問題,以及Linux和Unix的基本概念、歷史、發展情況。 一、操作系統介紹 內核(kernel)負責控制硬…

    Linux干貨 2016-10-19

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-11-16 15:42

    寫的很好,排版也很漂亮,有沒有嘗試自己畫圖來理解一下raid的原理

欧美性久久久久