Linux基礎(七)-軟RAID,LVM,bash腳本之循環

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

(1)要求其block大小為2048,預留空間百分比為2,卷標為MYDATA,默認掛載屬性包含acl;
(2)掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳;

[root@localhost ~]# fdisk /dev/sdb
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 (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): e           #創建的是擴展分區
Partition number (3,4, default 3): 3
First sector (41945088-83886079, default 41945088): 
Using default value 41945088
Last sector, +sectors or +size{K,M,G} (41945088-83886079, default 83886079): 
Using default value 83886079
Partition 3 of type Extended and of size 20 GiB is set

Command (m for help): n
Partition type:
   p   primary (2 primary, 1 extended, 1 free)
   l   logical (numbered from 5)
Select (default p): l           #創建邏輯分區,分配10G
Adding logical partition 5
First sector (41947136-83886079, default 41947136): 
Using default value 41947136
Last sector, +sectors or +size{K,M,G} (41947136-83886079, default 83886079): +10G
Partition 5 of type Linux and of size 10 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 ~]# partprobe /dev/sdb5

創建文件系統并掛載

[root@localhost ~]# mke2fs -t ext4 -b 2048 -m 2 -L MYDATA /dev/sdb5
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=MYDATA     #卷標
OS type: Linux
Block size=2048 (log=1)     #塊大小2048
Fragment size=2048 (log=1)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 5242880 blocks
104857 blocks (2.00%) reserved for the super user   #為超級用戶預留2%空間
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
## 默認掛載屬性包含acl
[root@localhost ~]# tune2fs -o acl /dev/sdb5
tune2fs 1.42.9 (28-Dec-2013)
#掛載
[root@localhost ~]# mkdir -p /data/mydata
[root@localhost ~]# mount -o noexec,noatime /dev/sdb5 /data/mydata
[root@localhost ~]# mount
/dev/sdb5 on /data/mydata type ext4 (rw,noexec,noatime,seclabel,data=ordered)
[root@localhost ~]# df -lh  #查看磁盤使用情況
Filesystem               Size  Used Avail Use% Mounted on
/dev/sdb5                9.8G   13M  9.6G   1% /data/mydata
#自動掛載,修改/etc/fstab文件
/dev/sdb5 /data/mydata ext4 defaults,acl,noexec,noatime, 0 0

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

創建一個sdb6分區,大小1G

[root@localhost ~]# mkswap /dev/sdb6    #格式化為swap分區
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=2a049e47-5b17-4311-9c6f-9cf945c7f2cc
[root@localhost ~]# blkid /dev/sdb6
/dev/sdb6: UUID="2a049e47-5b17-4311-9c6f-9cf945c7f2cc" TYPE="swap" 
[root@localhost ~]# free -m     #查看現在swap分區大小,為2G
              total        used        free      shared  buff/cache   available
Mem:            977         118         710           6         148         707
Swap:          2047           0        2047
[root@localhost ~]# swapon /dev/sdb6    #啟用/dev/sdb6的swap分區
[root@localhost ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:            977         119         709           6         148         706
Swap:          3071           0        3071     #此時swap大小為3G,證明sdb6的swap分區已啟動

3.寫一個腳本:

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

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

#!/bin/bash
#
fdisk -l /dev/[sh]d[a-z] | grep "^Disk /dev/[sh]d[a-z]"
 
df -lh | grep "^/dev/[sh]d[a-z]"

1478337359175.jpg

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

RAID:
Redundant Arrays of Independent Disks

獨立硬盤冗余陣列(RAID, Redundant Array of Independent Disks),舊稱廉價磁盤冗余陣列(Redundant Array of Inexpensive Disks),簡稱磁盤陣列。其基本思想就是把多個相對便宜的硬盤組合起來,成為一個硬盤陣列組,使性能達到甚至超過一個價格昂貴、容量巨大的硬盤。

參考資料:https://zh.wikipedia.org/wiki/RAID

RAID-0: (追求最大容量、速度)
讀、寫性能提升;
可用空間:N*min(S1,S2,…)
無容錯能力
最少磁盤數:2, 2+

RAID-1:(追求最大安全性)
讀性能提升、寫性能略有下降;
可用空間:1*min(S1,S2,…)
有冗余能力,安全性高
最少磁盤數:2, 2+

RAID-4
1101, 0110, 1011
一塊硬盤專門生成校驗數據(校驗盤)
最少磁盤數:3,3+

RAID-5:(追求最大容量、最小預算)
讀、寫性能提升
可用空間:(N-1)*min(S1,S2,…)
有容錯能力:1塊磁盤
最少磁盤數:3, 3+

RAID-6:(同RAID 5,但較安全)
讀、寫性能提升
可用空間:(N-2)*min(S1,S2,…)
有容錯能力:2塊磁盤
最少磁盤數:4, 4+

混合類型
RAID-10:
讀、寫性能提升
可用空間:Nmin(S1,S2,…)/2
有容錯能力:每組鏡像最多只能壞一塊;
最少磁盤數:4, 4+
RAID-01:
讀、寫能力提升
可用空間:N
min(S1,S2,…)/2
有容錯能力:每組鏡像最多可壞三塊;
最少磁盤數:4, 4+

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

在/dev/sdb劃分三個10G大小的空間,/dev/sdb{5,6.7},并將分區類型改為fd.

1478350124870.jpg

[root@localhost ~]# mdadm -C /dev/md1 -a yes -c 128 -n 2 -x 1 -l 1 /dev/sdb{5,6,7}       #創建RAID1
mdadm: /dev/sdb5 appears to be part of a raid array:
       level=raid1 devices=2 ctime=Sat Nov  5 04:02:27 2016
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     #這里是說這個RAID不能做引導分區
mdadm: /dev/sdb6 appears to be part of a raid array:
       level=raid1 devices=2 ctime=Sat Nov  5 04:02:27 2016
mdadm: /dev/sdb7 appears to be part of a raid array:
       level=raid1 devices=2 ctime=Sat Nov  5 04:02:27 2016
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.
[root@localhost ~]# cat /proc/mdstat    #查看md的狀態
Personalities : [raid1] 
md1 : active raid1 sdb7[2](S) sdb6[1] sdb5[0]
      10473472 blocks super 1.2 [2/2] [UU]
      
unused devices: <none>

1478350468933.jpg

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

刪除前面創建的raid1,從/dev/sdb分出3個2G,分區類型設置為fd

1478352601885.jpg

[root@localhost ~]# mdadm -C /dev/md5  -a yes -c 256 -n 3 -l 5 /dev/sdb{7,8,9}
mdadm: /dev/sdb7 appears to be part of a raid array:
       level=raid1 devices=2 ctime=Sat Nov  5 04:14:49 2016
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.
##格式化為ext4
[root@localhost ~]# mke2fs -t ext4 /dev/md5
[root@localhost ~]# blkid /dev/md5
/dev/md5: UUID="49b8b4c2-58e9-458b-affe-3dec2f5495c8" TYPE="ext4"

在/etc/fstab最后面加上一行.使用UUID更穩.

 UUID=49b8b4c2-58e9-458b-affe-3dec2f5495c8 /backup ext4  defaults,acl,noatime    0   0
 ##重啟查看##
 [root@localhost ~]# mount
 /dev/md5 on /backup type ext4 (rw,noatime,seclabel,stripe=128,data=ordered)

可以看看這篇文章:
http://www.toxingwang.com/linux-unix/linux-basic/1048.html

7.寫一個腳本:

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

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

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

#!/bin/bash
#
if [ $# -lt 1  ];then
    echo "至少一個文件路徑" && exit 1
fi

declare -i sum=0

for i in $*; do
    if [ ! -f $i  ];then
        echo "$i文件不存在"
        continue
    fi
    
    echo "文件$i行數為"$(cat $i | wc -l)
    let sum++
done

echo "傳入路徑$#個,統計有效文件$sum個"

1478355522232.jpg

8.寫一個腳本:

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

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

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

#!/bin/bash
if [ $# -lt 2  ];then
    echo "至少2個用戶名" && exit 1
fi
declare -i sum=0
for i in $*; do
    id $i &> /dev/null
    if [ $? -eq 0 ];then
        echo "$i用戶已存在"
        continue
    fi
    useradd  $i
    echo $i | passwd --stdin $i
    echo "$i用戶添加完成,密碼同用戶名"
    let sum++
done

echo "一共傳入$#個用戶,共創建$sum個用戶.$[$#-$sum]個用戶已存在"

1478357208676.jpg

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

#!/bin/bash
declare -i sumid=0
for i in {1..20};do
    useradd visitor$i
    sumid+=$(id -u visitor$i)
done

echo "用戶id之和為$sumid"

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

#!/bin/bash
declare -i count1=0
declare -i count2=0
for i in /etc/{rc.d/{rc.sysinit,init.d/functions},fstab};do
    count1+=$(grep "^#" $i | wc -l)
    count2+=$(grep "^$" $i | wc -l)
done
    echo "文件#開頭的行有$count1行,空白行有$count2行"

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

#!/bin/bash
declare -i uid=0
for i in $(grep "/bin/bash$" /etc/passwd | cut -d: -f1);do
    echo "shell為bash的用戶名:$i"
    uid+=$(id -u $i)
done
echo "shell為bash的用戶id之和為:$uid"

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

#!/bin/bash
declare -i count=0
for i in $(cat /etc/passwd | cut -d: -f1);do
    if [ $(id -G $i | wc -w) -gt 1 ] ;then
        echo $i
        let count++
    fi
done
echo "用戶附加組的用戶個數為:$count"

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

創建思路:PV->VG->LV
先格式化兩個10G大小的分區/dev/sdb5,/dev/sdb6,分區類型為8e

1478405883742.jpg

[root@localhost ~]# fdisk -l /dev/sdb

Disk /dev/sdb: 42.9 GB, 42949672960 bytes, 83886080 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: 0xc4afe58d

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    20973567    10485760   83  Linux
/dev/sdb2        20973568    83886079    31456256    5  Extended
/dev/sdb5        20975616    41947135    10485760   8e  Linux LVM
/dev/sdb6        41949184    62920703    10485760   8e  Linux LVM
## 創建PV ##
[root@localhost ~]# pvcreate /dev/sdb{5,6}
  Physical volume "/dev/sdb5" successfully created
WARNING: linux_raid_member signature detected on /dev/sdb6 at offset 4096. Wipe it? [y/n]: y          #這里是前面sdb6創建過軟riad,所以提示有信息,問是否清除.
  Wiping linux_raid_member signature on /dev/sdb6.
  Physical volume "/dev/sdb6" successfully created
[root@localhost ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree 
  /dev/sda2  centos lvm2 a--  119.51g 64.00m
  /dev/sdb5         lvm2 ---   10.00g 10.00g
  /dev/sdb6         lvm2 ---   10.00g 10.00g
## 創建VG ##
[root@localhost ~]# vgcreate -s 8M myvg /dev/sdb{5,6}
  Volume group "myvg" successfully created
[root@localhost ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree 
  centos   1   3   0 wz--n- 119.51g 64.00m
  myvg     2   0   0 wz--n-  19.98g 19.98g

1478407698503.jpg

創建lv:

[root@localhost ~]# lvcreate -n mylv1 -L 5G myvg
  Logical volume "mylv1" created.
[root@localhost ~]# lvs
  LV    VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  home  centos -wi-ao---- 67.45g                        
  root  centos -wi-ao---- 50.00g                         
  swap  centos -wi-ao----  2.00g              
  mylv1 myvg   -wi-a-----  5.00g

1478407939054.jpg

格式化,開機自動掛載:

##格式化為ext4 ##
[root@localhost ~]# mke2fs -t ext4 /dev/myvg/mylv1
[root@localhost ~]# blkid /dev/myvg/mylv1
/dev/myvg/mylv1: UUID="528cd557-d46e-4e40-bf54-03fe1209c018" TYPE="ext4" 
## 開機自動掛載,編輯/etc/fstab文件,加入一行 ,建議使用UUID掛載##
UUID=528cd557-d46e-4e40-bf54-03fe1209c018 /users ext4   defaults,acl    0 0
##重啟,看到掛載中有mylv1就是成功了
[root@localhost ~]# reboot
[root@localhost ~]# mount
/dev/mapper/myvg-mylv1 on /users type ext4 (rw,relatime,seclabel,data=ordered)
[root@localhost ~]# ls /users
lost+found

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

[root@localhost ~]# useradd -d /users/magedu magedu
[root@localhost ~]# tail -1 /etc/passwd
magedu:x:3042:3042::/users/magedu:/bin/bash
[root@localhost ~]# su -l magedu
Last login: Sun Nov  6 01:07:34 EDT 2016 on pts/0
[magedu@localhost ~]$ pwd
/users/magedu
##復制幾個文件到家目錄
[magedu@localhost ~]$ cp -r /etc/fstab /etc/init.d ./
[magedu@localhost ~]$ ls
fstab  init.d

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

擴展LV:(步驟從上往下)
# lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME
# resize2fs /dev/VG_NAME/LV_NAME   #只適用ext文件系統.

##擴展到9G
[root@localhost ~]# lvextend -L 9G /dev/myvg/mylv1
  Size of logical volume myvg/mylv1 changed from 5.00 GiB (640 extents) to 9.00 GiB (1152 extents).
  Logical volume mylv1 successfully resized.

[root@localhost ~]# df -lh  #我們可以看到此時mylv1的大小還是沒有變的
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/myvg-mylv1   4.8G   21M  4.6G   1% /users
## 執行擴展文件系統邊界 ##
[root@localhost ~]# resize2fs /dev/myvg/mylv1
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/myvg/mylv1 is mounted on /users; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/myvg/mylv1 is now 2359296 blocks long.
[root@localhost ~]# df -lh
##  此時mylv1已經擴展到9G
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/myvg-mylv1   8.8G   23M  8.3G   1% /users
##查看下文件是否還正常
[root@localhost ~]# cat /users/magedu/fstab

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

縮減LV:
# umount /dev/VG_NAME/LV_NAME
# e2fsck -f /dev/VG_NAME/LV_NAME #文件系統強制檢測
# resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT] #縮減文件系統大小,縮減到大小要能容納已存在文件大小.
# lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME #縮減LV大小
# mount

[root@localhost ~]# umount /dev/myvg/mylv1
[root@localhost ~]# e2fsck -f /dev/myvg/mylv1
e2fsck 1.42.9 (28-Dec-2013)
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/myvg/mylv1: 19/589824 files (0.0% non-contiguous), 75558/2359296 blocks
[root@localhost ~]# resize2fs /dev/myvg/mylv1 7G
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/myvg/mylv1 to 1835008 (4k) blocks.
The filesystem on /dev/myvg/mylv1 is now 1835008 blocks long.

[root@localhost ~]# lvreduce -L 7G /dev/myvg/mylv1
  WARNING: Reducing active logical volume to 7.00 GiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce mylv1? [y/n]: y
  Size of logical volume myvg/mylv1 changed from 9.00 GiB (1152 extents) to 7.00 GiB (896 extents).
  Logical volume mylv1 successfully resized.
[root@localhost ~]# mount /dev/myvg/mylv1 /users
[root@localhost ~]# cat /users/magedu/fstab

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

快照:snapshot
lvcreate -L #[mMgGtT] -p r -s -n snapshot_lv_name original_lv_name

[root@localhost ~]# lvcreate -L 100M -p r -s -n mylv1-snapshot /dev/myvg/mylv1
  Rounding up size to full physical extent 104.00 MiB
  Logical volume "mylv1-snapshot" created.
[root@localhost ~]# lvs
  LV             VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mylv1-snapshot myvg   sri-a-s--- 104.00m      mylv1  0.0
## 掛載 ##
[root@localhost ~]# mount /dev/myvg/mylv1-snapshot /mnt
## 使用vim 修改一下/users/magedu/fstab 文件
[root@localhost mnt]# vim /users/magedu/fstab
[root@localhost mnt]# head -2 /users/magedu/fstab

#這里加上一行注釋
[root@localhost mnt]# head -2  magedu/fstab #快照里面的內容不會變化

#

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

(0)
luoluoluoluo
上一篇 2016-11-06 13:46
下一篇 2016-11-06 14:26

相關推薦

  • 系統基礎之AWK詳解

    GUN awk 文本處理三工具:grup,sed,awk     grep,egrep,fgrep:文本過濾工具     sed:行編輯器         模式空間,保持空間   …

    Linux干貨 2016-09-21
  • Linux 文本編輯器三劍客之 sed

    參考手冊: http://www.gnu.org/software/sed/manual/sed.html 轉載請注明:馬哥教育!!

    Linux干貨 2017-01-12
  • http協議

    Web Service概述 web服務時一種應用程序的服務,它所提供的最主要的信息是一種超文本標記語言(HTML)、多媒體資源(如:視頻、圖片、音樂等)。HTML是一種純文字的文本信息,通過所謂的標簽來規范所要顯示的內容格式,在客戶端通過瀏覽器的形式對HTML及多媒體資源進行解析,然后呈現在終端上。主要由http和https協議實現 http協議概述 HTT…

    Linux干貨 2016-10-28
  • 第一次寫的linux腳本

    剛開始學的時候,都是一些基本的命令,總是無法把它們聯系到一塊去,現在剛開始接觸腳本,頓時感覺壓力好大,基礎命令如果記不牢,很有可能就掛了,下面我把近幾天學習的一些腳本命令及練習拿來分享一下,供大家參考,同時加深我的記憶。 首先是寫腳本的格式,我這里用vim編輯器來寫的腳本,因為它的色彩非常明艷,易于區分?;靖袷饺缦拢?#!/bin/bash 第一行一般為調…

    Linux干貨 2017-08-05
  • N22-第4周作業-冥界之王

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。    [root@CentOS6 ~]# cp -r /etc/skel/ /home/tuser1/    [r…

    Linux干貨 2016-09-19
  • 數據庫

    數據庫系統理論概述(一) –本文主要講述: – 1.數據庫和數據庫管理系統 – 2.使用傳統的文件系統對大量數據管理存在的問題 – 3.常見的數據庫系統模型 – 4.數據庫視圖 – 5.數…

    Linux干貨 2016-10-30
欧美性久久久久