馬哥教育網絡班22期+第7周課程練習 忍者亂太郎喻成

第七周 
1、創建一個10G分區,并格式為ext4文件系統;
   (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl;
    我個人比較喜歡使用交互式的分區工具fdisk
    我以fdisk為例:
        先添加一個硬盤到虛擬機后
 使用命令: fdisk -l 查詢分區情況:

        Disk /dev/sda: 64.4 GB, 64424509440 bytes, 125829120 sectors  
        Units = sectors of 1 * 512 = 512 bytes        
        Sector size (logical/physical): 512 bytes / 512 bytes        
        I/O size (minimum/optimal): 512 bytes / 512 bytes        
        Disk label type: dos        
        Disk identifier: 0x0002a567
        Device Boot      Start         End      Blocks   Id  System        
        /dev/sda1   *        2048     1026047      512000   83  Linux        
        /dev/sda2         1026048   125829119    62401536   8e  Linux LVM
        Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors       
        Units = sectors of 1 * 512 = 512 bytes       
        Sector size (logical/physical): 512 bytes / 512 bytes       
        I/O size (minimum/optimal): 512 bytes / 512 bytes

   可以看見我掛載了一個新的未分區硬盤/dev/sdb到計算機上, 現在用fdisk對/dev/sdb分區
   命令為
         fdisk /dev/sdb # 進入相關sdb的fdisk交互式編程接口
         g 回車 # 因為是新硬盤,先建立GPT分區表
         fdisk 回應:Building a new GPT disklabel (GUID: 4FD83B09-C8A1-4617-BE78-80F87C388356)
         n 回車 # 創建一個分區
         Partition number (1-128, default 1): 直接回車使用默認值
         First sector (2048-41943006, default 2048): 直接回車
         Last sector, +sectors or +size{K,M,G,T,P} (2048-41943006, default 41943006): +10G 回車完成n選項

        根據mke2fs的文檔 -b block-size -m reserved-blocks-percentage -L volume-label
         為新的分區建立文件系統

   mkfs.ext4 -b 2048 -m 2 -L MYDATA /dev/sdb1

      
       用tune2fs -l觀察新分區的文件系統
       tune2fs -l /dev/sdb1
       得到的回復是:

tune2fs 1.42.9 (28-Dec-2013)
Filesystem volume name:   MYDATA
Last mounted on:          <not available>
Filesystem UUID:          e1d96c33-8ab1-43c1-9fdd-b56e245b6adf
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              655360
Block count:              5242880
Reserved block count:     104857
Free blocks:              5121266
Free inodes:              655349
First block:              0
Block size:               2048
Fragment size:            2048
Group descriptor size:    64
Reserved GDT blocks:      512
Blocks per group:         16384
Fragments per group:      16384
Inodes per group:         2048
Inode blocks per group:   256
Flex block group size:    16
Filesystem created:       Wed Nov  9 07:37:45 2016
Last mount time:          n/a
Last write time:          Wed Nov  9 07:37:52 2016
Mount count:              0
Maximum mount count:      -1
Last checked:             Wed Nov  9 07:37:45 2016
Check interval:           0 (<none>)
Lifetime writes:          65 MB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:           256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      c107d650-fe51-4421-bccc-a756008aa3d9
Journal backup:           inode blocks

此文件系統已經滿足要求 acl 已經在默認掛載選項上, 如果不是則使用下指令來更改默認掛載選項:
   

    tune2fs -o acl /dev/sdb1

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

  mkdir -p /data/mydata
  mount -o noatime -o noauto /dev/sdb1 /data/mydata

2、創建一個大小為1G的swap分區,并創建好文件系統,并啟用之;
    創建一個1G的分區 /dev/sdb2 方法同上一題

    mkswap /dev/sdb2
    swapon /dev/sdb2

    使用swap 命令可以看到 swap 分區已經掛載好了

    NAME      TYPE       SIZE USED PRIO
    /dev/dm-1 partition    2G   3M   -1
    /dev/sdb2 partition 1024M   0B   -2

   
3、寫一個腳本
   (1)、獲取并列出當前系統上的所有磁盤設備;
       

fdisk -l | grep  -o "\/dev\/s.."| uniq?

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

 fdisk -l $(fdisk -l | grep  -o "\/dev\/s.."| uniq)

4、總結RAID的各個級別及其組合方式和性能的不同;
     RAID-0:對兩塊磁盤進行并行讀寫,性能上有較大提升,應該提高了一倍
     沒有數據被備份所以無容錯能力,空間利用率100%
    RAID-1:又稱磁盤鏡像,兩塊磁盤進行全盤備份,一份數據會同時寫入兩塊磁盤中,全盤備份,安全性高,但是磁盤利用率為1/2
                   讀取的時候性能會有提升應該會接近RAID-0,但是寫入的時候性能就會下降至略微小于兩塊磁盤中寫速度較慢的磁盤的寫速度.

     RAID-2:因為商業環境用的不多故簡單地說,N個磁盤以bit的方式平行存放數據,M個磁盤存放漢明校驗碼,
                   讀寫數據不考慮校驗是單個硬盤的N倍。磁盤利用率也很高為N/(M+N), 但實現復雜,不適合工業界粗暴的方式
     RAID-3:與RAID-2 相同只不過使用了較為簡單的亦或校驗法所以M為1,磁盤利用率提高但是安全性下降
     RAID-4:與RAID-3 相同只不過RAID-3是以位為單位進行讀寫,但是RAID4是以塊為單位,這樣集中校驗讀寫速度會略有提高
     2,3,4商業運用不廣泛
     RAID-5:4 的升級版,將奇偶校驗分布到磁盤列陣結構中而不是使用單獨的備份磁盤使得安全性有所提高,工業界應用較多。

    RAID-10:高可靠性與高效磁盤結構。先做RAID-1,再做RAID-0
                   讀性能有提升提升近N倍,可用空間下降一半,冗余能力:每組可以容納一塊壞,但不能有一組壞。從概率上優于RAID-01
    RAID-01:先做RAID-0,再做RAID-1,讀寫性能有提升近N倍,可用空間下降一半冗余能力: 每組一塊壞組壞,一組壞沒事, 從概率上壞于RAID-10

5、創建一個大小為10G的RAID1,要求有一個空閑盤,而且CHUNK大小為128k;
   連結新硬盤   /dev/sdc 分出兩個10G的分區(如題一),/dev/sdc1, /dev/sdc2

     mdadm --create /dev/md0 --level=1 --raid-devices=2 --chunk=128K /dev/sdc{1,2}

   創建完畢

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

   mdadm --create /dev/md1 --level=5 --raid-devices=2 --chunk=256K /dev/sdc{3,4}

   mkfs.ext4 /dev/md1 #格式化RAID設備到ext4文件格式
   編輯/etc/fstab 添加一行 實現開機自動掛載

  /dev/md1      /backup         ext4      defaults,noatime,acl      0      2

7、寫一個腳本
   (1) 接受一個以上文件路徑作為參數;
   (2) 顯示每個文件擁有的行數;
   (3) 總結說明本次共為幾個文件統計了其行數;

#!/bin/bash

paths=$@;
files_num_total=$#;
declare -i lines_num_total=0;

for path in $paths; do    
    wc $path;    
    let lines_num_total+=$(wc -l $path| awk '{print $1;}');
done
printf "%d files counted, %d lines in total\n" $files_num_total $lines_num_total

8、寫一個腳本
   (1) 傳遞兩個以上字符串當作用戶名;
   (2) 創建這些用戶;且密碼同用戶名;
   (3) 總結說明共創建了幾個用戶;

#!/bin/bash

names=$@;
names_num=$#;
declare -i users_added=0;

for name in $names; do    
    useradd $name -p $name&&let "users_added++";
done
printf "%d names input, %d users added in total\n" $names_num $users_added

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

#!/bin/bash
declare -i sum_ids;

for x in $(seq 1 20); do    
    useradd visitor$x
done;
for x in $(seq 1 20); do    
    sum_ids+=$(cat /etc/passwd| awk -F: -v name=visitor$x '{if($1==name) {print $3;}}')
done;
printf "The sum of user ids are %s\n" $sum_ids

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

#!/bin/bash

declare -a files=("/etc/rc.d/rc.sysinit" "/etc/rc.d/init.d/functions" "/etc/fstab")
function count_lines 
{        
    sharp_line_numbers=$(cat $1 | grep "^#"|wc -l);
    empty_line_numbers=$(cat $1 | grep "^\s*$"|wc -l);        
    printf "%d lines start with #, %d empty lines in %s\n" $sharp_line_numbers $empty_line_numbers $1;
}

for file in ${files[@]}; do        
    count_lines $file;
done

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

#!/bin/bash

declare -i uid_sum = 0;
while read line
do    
    shell_using=$(echo $line| cut -d":" -f7);    
    if [ $shell_using == "/bin/bash" ]; then         
        uid=$(echo $line| cut -d":" -f3);         
        uname=$(echo $line| cut -d":" -f1);         
        printf "user %s %s use bash\n" $uid $uname;         
        let uid_sum+=uid;    
    fi
done < /etc/passwd
printf "uid sum are %d\n" $uid_sum;

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

#!/bin/bash
declare -i uid_sum=0;
declare extra_users="";
while read line
do   
    extra_users_row=$(echo $line| cut -d":" -f4);   
    if [[ ! -z $extra_users_row ]]; then      
        if [[ ! -z $extra_users ]]; then          
            extra_users="$extra_users,$extra_users_row";      
        else          
            extra_users="$extra_users_row";      
        fi   
    fi
done < /etc/group

IFS=', ' read -r -a extra_users_array <<< "$extra_users"

declare -A extra_users_set;

for name in ${extra_users_array[@]}; 
    do  extra_users_set[$name]=1;
done

printf "%s have extra groups and the total number of them are %d" $extra_users ${#extra_users_set[@]}

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

pvcreate /dev/sdb1
pvcreate /dev/sdb2

創建卷組

vgcreate test_vg /dev/sdb1 -s 8M
vgextend test_vg /dev/sdb2

創建邏輯卷

lvcreate -L 5G test_vg -n mylvl

格式化文件系統ext4

mkfs.ext4 /dev/test_vg/mylvl

編輯/etc/fstab 添加一行 實現開機自動掛載

/dev/test_vg/mylvl      /users         ext4      defaults,acl      0      3

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

useradd magedu -b /users

切換至此用戶su magedu
復制多個文件至家目錄(var內部的所有文件)

cp -R /var ~/

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

lvextend -L +4G /dev/test_vg/mylvl

重塑文件系統適應新空間

 resize2fs /dev/test_vg/mylvl

16、縮減mylv1至7G,確??s減完成后原有數據完全可用;
  lv縮減需要先卸載

  umount /users

  首先縮減文件系統

  e2fsck -f /dev/test_vg/mylvl
  lvreduce -L 7G /dev/test_vg/mylvl

  再重新掛載即可

  mount /dev/test_vg/mylvl /users

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

  lvcreate -L1G -s -n backup /dev/test_vg/mylvl

  如有需要恢復,掛載后覆蓋被備份邏輯卷掛載路徑即可
 
 

原創文章,作者:chengyu,如若轉載,請注明出處:http://www.www58058.com/59443

(0)
chengyuchengyu
上一篇 2016-11-21
下一篇 2016-11-21

相關推薦

  • CentOS7系統用戶空間管理進程systemd詳解

    概述:     系統啟動過程中,當內核啟動完成,后加載根文件系統,后就緒的一些用戶空間的服務的管理工作,就交由init進行啟動和管理,在CentOS6之前的init的管理方式都類似,相關的內容我們在之前的文章中也做出過介紹。在CentOS7上,init變成了systemd,其管理方式也發生了重大的變化,本章就跟大家歐一…

    Linux干貨 2016-09-21
  • Linux下裝載軟Raid

    步驟1.創建磁盤,并轉換為fd #fdisk /dev/sdb //這里使用新的磁盤sdb 然后輸入n ,創建分區 使用默認的起始點 輸入大小為+100M 然后重復剛才的操作4次,創建4個分區,創建完4個分區后 我們還要改變分區的ID 在分區的主菜單輸入T 然后輸入要改變ID的分區號,也就是最后4個分區 然后輸入分區的ID:fd 四個分區都改成FD 完成后,…

    Linux干貨 2017-08-12
  • 馬哥教育網絡班22期+第一周課程練習

    計算機的組成及其功能 計算機主要由五大部分組成:控制器、運算器、存儲器、輸入設備、輸出設備,即CPU(控制器、運算器)、內存、I/O(輸入/輸出設備)。 控制器 是整個計算機的中樞神經,其功能是對程序規定的控制信息進行解釋,根據其要求進行控制,調度程序、數據、地址,協調計算機各部分工作及內存與外設的訪問等。 運算器 對數據進行各種算術運算和邏輯運算,即對數據…

    Linux干貨 2016-08-15
  • 五種開源協議的比較(BSD,GPL,LGPL,Apache,BSD)

    BSD開源協議(original BSD license、FreeBSD license、Original BSD license) BSD開源協議是一個給于使用者很大自由的協議?;旧鲜褂谜呖梢浴睘樗麨椤?可以自由的使用,修改源代碼,也可以將修改后的代碼作為開源或者專有軟件再發布。 但”為所欲為”的前提當你發布使用了BSD協議的代碼,或則以BSD協議代碼…

    Linux干貨 2016-01-16
  • 單用戶模式破解密碼與密碼的加密

    當你坐在一臺CentOS 6主機前,但是卻不知道密碼,要怎樣破解掉密碼進入系統呢? 答案很簡單: 1、啟動系統,當出現如下界面時,按任意鍵 2、你會看到這個畫面 3、敲擊“a”鍵,執行modifiy the kernel arguments 4、鍵入“1”鍵,進入單用戶模式 5、至此,你已經成功進入系統,并修改了密碼! 是不是覺得Centos6的系統這樣安全…

    Linux干貨 2016-09-13
  • 馬哥教育網絡班20期+第2周課程練習

    馬哥教育網絡班20期+第2周課程練習 練習題: 1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。2、bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示。3、請使用命令行展開功能來完成以下練習:   (1)、創建/tmp目錄下的:a_c, a_d, b_c, b_d  …

    Linux干貨 2016-06-23

評論列表(1條)

  • luoweiro
    luoweiro 2016-11-29 22:56

    對于LVM這部分只是,希望能和RAID一起總結一下,而且各自的特點都要有詳細的說明。

欧美性久久久久