第七周作業

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

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


[root@localhost ~]# fdisk /dev/sdb                #創建10G分區
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xf0ff800a.

Command (m for help): n            #添加分區
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p                #指定新建分區類型為主分區
Partition number (1-4, default 1): 1            #指定分區編號
First sector (2048-251658239, default 2048):     #回車從默認扇區開始分區
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-251658239, default 251658239): +10G        #劃分10G空間
Partition 1 of type Linux and of size 10 GiB is set

Command (m for help): p                #打印分區表信息

Disk /dev/sdb: 128.8 GB, 128849018880 bytes, 251658240 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: 0xf0ff800a

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    20973567    10485760   83  Linux

Command (m for help): w            #保存分區信息
The partition table has been altered!
[root@localhost ~]# partx -a /dev/sdb            #分區立即生效
partx: /dev/sdb: error adding partition 1
[root@localhost ~]# mke2fs -t ext4 -L MYDATA -b 2048 -m 20 /dev/sdb1       #格式化分區
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=MYDATA
OS type: Linux
Block size=2048 (log=1)
Fragment size=2048 (log=1)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 5242880 blocks
1048576 blocks (20.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=273678336
320 block groups
16384 blocks per group, 16384 fragments per group
2048 inodes per group
Superblock backups stored on blocks: 
        16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816, 1327104, 
        2048000, 3981312

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done   
[root@localhost ~]# tune2fs -o acl /dev/sdb1        #添加acl屬性
tune2fs 1.42.9 (28-Dec-2013)
[root@localhost ~]# blkid /dev/sdb1            #顯示分區的一般信息
/dev/sdb1: LABEL="MYDATA" UUID="b16f489e-a6f6-4e68-8887-3e242952ae0b" TYPE="ext4"

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


[root@localhost ~]# mkdir /data/mydata -p                #創建掛載點目錄
[root@localhost ~]# mount -o noatime,noexec /dev/sdb1 /data/mydata/        #掛載分區至掛載點
[root@localhost ~]# mount|grep /data/mydata              #查看詳細掛載信息
/dev/sdb1 on /data/mydata type ext4 (rw,noexec,noatime,seclabel,data=ordered)

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


[root@localhost ~]# fdisk /dev/sdb                #創建一個1G分區
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
Partition number (2-4, default 2): 2
First sector (20973568-251658239, default 20973568): 
Using default value 20973568
Last sector, +sectors or +size{K,M,G} (20973568-251658239, default 251658239): +1G
Partition 2 of type Linux and of size 1 GiB is set

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
partx: /dev/sdb: error adding partitions 1-2
[root@localhost ~]# mkswap /dev/sdb2            #格式化分區為swap類型
mkswap: /dev/sdb2: warning: wiping old swap signature.
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=e3cf8440-4029-4674-97cb-c5c5db641979
[root@localhost ~]# free -m                    #查看當前內存使用信息,swap為2047
              total        used        free      shared  buff/cache   available
Mem:           1824         118        1524           8         181        1542
Swap:          2047           0        2047
[root@localhost ~]# swapon /dev/sdb2           #掛載swap分區     
[root@localhost ~]# free -m                    #掛載后swap變為3071
              total        used        free      shared  buff/cache   available
Mem:           1824         119        1524           8         181        1541
Swap:          3071           0        3071

3、寫一個腳本 

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

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

#!/bin/bash
echo "Hard disk:"
ls /dev/[sh]d[a-z]
echo "Partition info:"
fdisk -l $(fdisk -l|grep "^/dev/[sh]d[a-z]"|cut -d" " -f1

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

RAID0:將多個磁盤合并成一個大的磁盤,不具有冗余,并行I/O,速度最快。

優點:讀寫速度快。

缺點:沒有冗余功能,如果一個磁盤損壞,則所有的數據都會丟失。

第七周作業 

RAID1:兩組以上的N個磁盤相互作鏡像,同一數據在各組磁盤上均保存一份。

優點:安全性好,任意一塊磁盤損壞不會導致數據丟失。讀取速度理論上等于硬盤數量的倍數,寫入速度僅有微小的降低。
缺點:會造成磁盤空間浪費,實際使用空間只有所有磁盤總和的一半。

第七周作業

RAID5:RAID 5至少需要三顆硬盤,RAID 5不是對存儲的數據進行備份,而是把數據和相對應的奇偶校驗信息存儲到組成RAID5的各個磁盤上,并且奇偶校驗信息和相對應的數據分別存儲于不同的磁盤上。當一個磁盤數據發生損壞后,可以利用剩下的數據和相應的奇偶校驗信息去恢復被損壞的數據。

優點:讀取速度快,接近RAID0;數據安全性較好,在只壞一個磁盤的情況下不會造成數據丟失。

缺點:至少需要3塊磁盤,并且會損失一個磁盤容量的使用空間;當一塊磁盤故障時,寫入速度會大幅降低。

第七周作業

RAID10/01:RAID 10是先鏡射再分區數據,再將所有硬盤分為兩組,視為是RAID 0的最低組合,然后將這兩組各自視為RAID 1運作。RAID 01則是跟RAID 10的程序相反,是先分區再將數據鏡射到兩組硬盤。它將所有的硬盤分為兩組,變成RAID 1的最低組合,而將兩組硬盤各自視為RAID 0運作。

優點:既保證了數據的安全性,也提高了讀寫速度。

缺點:會造成一半磁盤空間的損失。

補充說明:實際生產中RAID10使用更廣泛,因為:

RAID0+1是先做兩個RAID0,然后再做RAID1,因此RAID0+1允許壞多個盤,但只能在壞在同一個RAID0中,不允許兩個RAID0都有壞盤。RAID1+0是先做RAID1,然后再做RAID0,因此RAID1+0允許壞多個盤,只要不是一對磁盤壞就可以了。因此說RAID1+0比RAID0+1安全得多,因為在同一對磁盤中,兩塊磁盤都壞掉的概率很低。

第七周作業

第七周作業

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

1)使用fdisk工具創建3個10G,Id編號為fd的分區

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        1306    10490413+  fd  Linux raid autodetect
/dev/sdb2            1307        2612    10490445   fd  Linux raid autodetect
/dev/sdb3            2613        3918    10490445   fd  Linux raid autodetect

2)使用mdadm命令創建raid磁盤

-C: 創建模式
-n #: 使用#個塊設備來創建此RAID;
-l #:指明要創建的RAID的級別;
-a {yes|no}:自動創建目標RAID設備的設備文件;
-c CHUNK_SIZE: 指明塊大??;
-x #: 指明空閑盤的個數;


[root@centos6 ~]# mdadm -C /dev/md0 -n 2 -a yes -l 1 -x 1 -c 128 /dev/sdb{1,2,3} 
mdadm: /dev/sdb1 appears to be part of a raid array:
       level=raid1 devices=2 ctime=Sun Feb 12 23:04:41 2017
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@centos6 ~]# cat /proc/mdstat                 #發現raid磁盤組正在recovery
Personalities : [raid1] [raid6] [raid5] [raid4] 
md0 : active raid1 sdb3[2](S) sdb2[1] sdb1[0]
      10482176 blocks super 1.2 [2/2] [UU]
      [==>..................]  resync = 14.6% (1537792/10482176) finish=0.6min speed=219684K/sec
      
unused devices: <none>
[root@centos6 ~]# cat /proc/mdstat 
Personalities : [raid1] [raid6] [raid5] [raid4] 
md0 : active raid1 sdb3[2](S) sdb2[1] sdb1[0]
      10482176 blocks super 1.2 [2/2] [UU]
      [===>.................]  resync = 18.6% (1959296/10482176) finish=0.6min speed=217699K/sec

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

1)使用fdisk工具創建3個2G,Id編號為fd的分區

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         262     2104483+  fd  Linux raid autodetect
/dev/sdb2             263         524     2104515   fd  Linux raid autodetect
/dev/sdb3             525         786     2104515   fd  Linux raid autodetect

2)使用mdadm命令創建raid磁盤

[root@centos6 ~]# mdadm -C /dev/md0 -n 3 -a yes -l 5 -c 256 /dev/sdb{1,2,3}

3)格式化raid磁盤

[root@centos6 ~]# mke2fs -t ext4 /dev/md0

4)查看磁盤的UUID信息

[root@centos6 ~]# blkid /dev/md0 
/dev/md0: UUID="c72dbdd2-109c-441b-a03e-99adca12676a" TYPE="ext4"

5)創建/backup目錄,并配置/etc/fstab文件,添加下面行:

UUID=c72dbdd2-109c-441b-a03e-99adca12676a /backup                 ext4    defaults,acl,nodiratime       0 0

7、寫一個腳本 

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

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

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

#!/bin/bash
if [ $# -le 1 ];then
    echo "At least 2 arguments!"
    exit 1
fi

cnt=0
for file in $@
do
    if [ -f $file ];then
        lines=$(cat $file|wc -l)
        echo "$file: "$lines
        let cnt++
    else
        echo "$file not exists."
        continue
    fi
done
echo "$cnt files have been counted."

8、寫一個腳本 

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

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

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

#!/bin/bash
if [ $# -le 1 ];then
    echo "At least 2 arguments!"
    exit 1
fi

sum=0
for user in $@
do
    if id $user &>/dev/null;then
        echo "user $user already exists."
        continue
    else
        useradd $user
        echo "$user"|passwd --stdin $user &>/dev/null
        echo "$user has been created."
        let sum++
    fi
done
echo "$sum users created."

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

#!/bin/bash
sum=0
for i in {1..20}
do
    if id visitor${i} &>/dev/null;then
        echo "visitor${i} already exists."
        continue
    else
        useradd visitor${i}
        echo "user visitor${i} has been created."
        uid=$(id -u visitor${i})
        let sum=sum+uid
    fi
done
echo "sum: "$sum

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

#!/bin/bash
files="/etc/rc.d/rc.sysinit /etc/rc.d/init.d/functions /etc/fstab"
sum1=0
sum2=0
for fn in $files
do
    line1=$(grep "^#" $fn|wc -l)
    line2=$(grep "^$" $fn|wc -l)
    let sum1=sum1+line1
    let sum2=sum2+line2
done
echo "Begin with #: "$sum1
echo "Blank rows: "$sum2

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

awk -F: 'BEGIN{printf "%-15s%s\n------------------\n","USERNAME","UID"}{if($NF=="/bin/bash"){sum=sum+$3;printf "%-15s%s\n",$1,$3}}END{printf "------------------\nsum: %s\n",sum}' /etc/passwd

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

#!/bin/bash
users=$(cat /etc/passwd|awk -F: '{print $1}')
sum=0
for name in $users
do
    gpcnt=$(id -G $name|xargs -n 1|wc -l)
    if [ $gpcnt -gt 1 ];then
        echo "$name"
        let sum++
    fi
done
echo "$sum users have additional group"

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

1)使用fdisk創建兩個10G,Id為8e的分區

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        1306    10490413+  8e  Linux LVM
/dev/sdb2            1307        2612    10490445   8e  Linux LVM

2)創建pv

[root@centos6 ~]# pvcreate /dev/sdb{1,2}
  Physical volume "/dev/sdb1" successfully created
  Physical volume "/dev/sdb2" successfully created
[root@centos6 ~]# pvs
  PV         VG   Fmt  Attr PSize  PFree 
  /dev/sdb1       lvm2 ---- 10.00g 10.00g
  /dev/sdb2       lvm2 ---- 10.00g 10.00g

3)創建vg

[root@centos6 ~]# vgcreate -s 8M myvg /dev/sdb1 /dev/sdb2
  Volume group "myvg" successfully created
[root@centos6 ~]# vgdisplay 
  --- Volume group ---
  VG Name               myvg
  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               20.00 GiB
  PE Size               8.00 MiB
  Total PE              2560
  Alloc PE / Size       0 / 0   
  Free  PE / Size       2560 / 20.00 GiB
  VG UUID               7XzzmY-TcTV-Tskk-KkJF-DX8j-M3r0-yegZOn

4)創建lv

[root@centos6 ~]# lvcreate -L 5G -n mylv1 myvg
  Logical volume "mylv1" created.
[root@centos6 ~]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/myvg/mylv1
  LV Name                mylv1
  VG Name                myvg
  LV UUID                qf4YZA-Fpb3-mSbA-bmE8-akpw-PF6c-jT6qxd
  LV Write Access        read/write
  LV Creation host, time centos6, 2017-02-13 02:26:03 +0800
  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

5)文件系統格式化

[root@centos6 ~]# mkfs -t ext4 /dev/myvg/mylv1

6)文件系統掛載

[root@centos6 ~]# mkdir /users
[root@centos6 ~]# blkid /dev/myvg/mylv1 
/dev/myvg/mylv1: UUID="9792d25f-fd1d-46ae-aa88-c14ea5383bc2" TYPE="ext4" 
[root@centos6 ~]# vim /etc/fstab          #添加下面內容
UUID=9792d25f-fd1d-46ae-aa88-c14ea5383bc2 /users                  ext4    defaults,acl        0 0

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

[root@centos6 ~]# useradd -d /users/magedu magedu
[root@centos6 ~]# echo "magedu"|passwd --stdin magedu
[root@centos6 ~]# su - magedu
[magedu@centos6 ~]$ cp /etc/yum.repos.d/* /users/magedu

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

1)使用lvextend命令將當前PV中剩余PE分4G給mylv1(此時并未生效)

[root@centos6 ~]# lvextend -L +4G /dev/myvg/mylv1 

2)使用resize2fs命令使新擴展的磁盤空間生效

[root@centos6 ~]# resize2fs /dev/myvg/mylv1
[root@centos6 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2             116G  1.4G  109G   2% /
tmpfs                 364M     0  364M   0% /dev/shm
/dev/sda1             477M   32M  420M   7% /boot
/dev/mapper/myvg-mylv1
                      8.8G   12M  8.3G   1% /users

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

1)先卸載要縮減的LV

[root@centos6 ~]# umount /dev/myvg/mylv1

2)進行強制磁盤檢測

[root@centos6 ~]# e2fsck -f /dev/myvg/mylv1

3)resize2fs重定義LV大小為7G

[root@centos6 ~]# resize2fs /dev/myvg/mylv1 7000M

4)lvreduce使縮減后的LV生效

[root@centos6 ~]# lvreduce -L 7000M /dev/myvg/mylv1

5)重新掛載LV并檢查分區上原來的文件是否損壞

[root@centos6 ~]# mount /dev/myvg/mylv1 /users/
[root@centos6 magedu]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2             116G  1.4G  109G   2% /
tmpfs                 364M     0  364M   0% /dev/shm
/dev/sda1             477M   32M  420M   7% /boot
/dev/mapper/myvg-mylv1
                      6.7G   12M  6.3G   1% /users
[root@centos6 magedu]# ls /users/magedu/
CentOS-Base.repo       CentOS-fasttrack.repo  CentOS-Vault.repo
CentOS-Debuginfo.repo  CentOS-Media.repo

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

1)創建一個1G的快照文件

[root@centos6 magedu]# lvcreate -L 1G -s -n mysnap /dev/myvg/mylv1 
  Logical volume "mysnap" created.
[root@centos6 magedu]# lvs
  LV     VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mylv1  myvg owi-aos--- 6.84g                                                    
  mysnap myvg swi-a-s--- 1.00g      mylv1  0.00

2)創建并掛載快照目錄

[root@centos6 magedu]# mkdir /mnt/snapshot
[root@centos6 magedu]# mount /dev/mapper/myvg-mysnap /mnt/snapshot/
[root@centos6 magedu]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2             116G  1.4G  109G   2% /
tmpfs                 364M     0  364M   0% /dev/shm
/dev/sda1             477M   32M  420M   7% /boot
/dev/mapper/myvg-mylv1
                      6.7G   12M  6.3G   1% /users
/dev/mapper/myvg-mysnap
                      6.7G   12M  6.3G   1% /mnt/snapshot

3)刪除mylv1中的數據,并使用鏡像文件進行恢復

[root@centos6 magedu]# rm -f /users/magedu/*
[root@centos6 magedu]# cp -a /mnt/snapshot/magedu/* /users/magedu/
[root@centos6 magedu]# ll /users/magedu/
total 24
-rw-r--r-- 1 magedu magedu 1991 Feb 13 02:47 CentOS-Base.repo
-rw-r--r-- 1 magedu magedu  647 Feb 13 02:47 CentOS-Debuginfo.repo
-rw-r--r-- 1 magedu magedu  289 Feb 13 02:47 CentOS-fasttrack.repo
-rw-r--r-- 1 magedu magedu  630 Feb 13 02:47 CentOS-Media.repo
-rw-r--r-- 1 magedu magedu 6259 Feb 13 02:47 CentOS-Vault.repo

原創文章,作者:N26-西安-方老喵,如若轉載,請注明出處:http://www.www58058.com/66990

(0)
N26-西安-方老喵N26-西安-方老喵
上一篇 2017-02-19
下一篇 2017-02-19

相關推薦

  • 8.1作業

    8月1日作業 創建testuser uid 1234,主組:bin,輔助組:root,ftp,shell:/bin/csh home:/testdir/testuser [root@localhost ~]# useradd -u 1234 -g bin -G root,ftp&…

    Linux干貨 2016-08-04
  • 學習宣言

    世界上只有一種失敗,就是半途而廢!

    Linux干貨 2016-12-29
  • CentOS系統啟動流程

        Linux系統的組成部分   1、動態視角:內核+根文件系統  2、靜態視角:磁盤分區+文件 Linux運行中的系統環境   1、用戶空間:應用程序(進程或線程)  2、內核空間:內核代碼(系統調用) 內核設計流派:   *單內核設計:把所有功能集成于同一個程序,如:Linux  *微內核設計:每種功能使用一個單獨的子系統實現,如…

    Linux干貨 2016-12-30
  • 第十一周作業

    1、詳細描述一次加密通訊的過程,結合圖示最佳。 一次通信加密過程: 發送方: 1.使用單向加密算法提取生成數據特征碼; 2.使用自己的私鑰加密特征碼附加在數據后面; 3.生成用于對稱加密的臨時密鑰; 4.用此臨時密鑰加密數據和已經使用私鑰加密后的特征碼; 5.使用接受方的公鑰加密此臨時密鑰,附加在對稱密鑰后的數據后方; 接受方: 1.使用自己的私鑰解密加密的…

    2017-10-02
  • N26-第十周

    1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情)     看到同學的圖不錯拿來用用 ~ ~      2、為運行于虛擬機上的CentOS 6添加一塊新硬件,提供兩個主分區;  (1) 為硬盤新建兩個主分區;并為其安裝grub;  (2) 為硬盤的第一個主…

    2017-03-26
  • Java線程

    線程是一個單獨程序流程。多線程是指一個程序可以同時運行多個任務,每個任務由一個單獨的線程來完成。也就是說,多個線程可以同時在一個程序中運行,并且每一個線程完成不同的任務。程序可以通過控制線程來控制程序的運行,例如線程的等待、休眠、喚起線程等。本章將向讀者介紹線程的機制、如何操作和使用線程以及多線程編程。  1. 線程的基本知識   &nb…

    2015-06-08

評論列表(1條)

  • 馬哥教育
    馬哥教育 2017-02-27 17:05

    非常非常棒博客內容,贊一個。

欧美性久久久久