1. 程式人生 > >第五週作業 磁碟分割槽、shell指令碼、lvm邏輯卷

第五週作業 磁碟分割槽、shell指令碼、lvm邏輯卷

一、什麼是GPT,有什作用?

inux中磁碟分割槽分為MBR和GPT。
一一MBR全稱為Master Boot Record,為主引導記錄,是傳統的分割槽機制,應用於絕大多數使用的BIOS的PC裝置。

  • MBR分割槽主分割槽數目不能超過4個
  • MBR分割槽方案無法支援超過2TB容量的磁碟。因為這一方案用4個位元組儲存分割槽的總扇區數,最大能表示2的32次方的扇區個數,按每扇區512位元組計算,每個分割槽最大不能超過2TB
    一一GPT(全稱為GUID Partition Table)分割槽為全域性唯一分割槽表,是一個實體硬碟的分割槽表的結構佈局的標準,解決了MBR很多缺點。
  • 支援2TB以上的大硬碟。
  • 每個磁碟的分割槽個數幾乎沒有限制。為什麼說“幾乎”呢?是因為Windows系統最多隻允許劃分128個分割槽。
  • 分割槽大小几乎沒有限制。因為它用64位的整數表示扇區號。
  • 分割槽表自帶備份。在磁碟的首尾部分分別儲存了一份相同的分割槽表,其中一份被破壞後,可以通過另一份恢復。
  • 迴圈冗餘檢驗值針對關鍵資料結構而計算,提高了資料崩潰的檢測機率。
  • MBR提供1位元組分割槽型別程式碼,但GPT使用一個16位元組的全域性唯一識別符號(GUID)值來標識分割槽型別,這使分割槽型別更不容易衝突。
  • 支援唯一的磁碟和分割槽 ID,每個分割槽可以有一個名稱(不同於卷標)。

二、建立一個10G分割槽,並格式化為ext4檔案系統。要求

  1. 塊大小為2048,預留空間20%,卷標為mydata
    fdisk -l 檢視分割槽情況
    fdisk /dev/sda p/n/3/w 進入分割槽/dev/sda,分出一個10G的主分割槽/dev/sda3儲存退出
    partx -a /dev/sda 將新分割槽同步到磁碟
    lsblk 檢視磁碟情況
    mkfs.ext4 -b 2048 -L mydata /dev/sda3 -m 20
  2. 掛載至/mydata,要求掛載時禁止程式自動執行,且不更新檔案的訪問時間戳。
    mkdir /mydata
    mount /dev/sda3 /mydata/ -o noexec,noatime
  3. 可開機自動掛載
    vim /etc/fstab
    /dev/sda3 /mydata ext4 defaults,noexec,noatime 0 0
    mount -a

    三、建立一個大小為1G的swap分割槽,並啟用。

    建立交換分割槽有兩種選擇:新增一個交換分割槽或新增一個交換檔案。推薦你新增一個交換分割槽;不過,若你沒有多少空閒空間可用,則新增交換檔案。
     
    1 新增一個交換分割槽
      步驟如下:
    a 使用fdisk來建立交換分割槽(假設 /dev/sdb2 是建立的交換分割槽,type為82)
    b 使用 mkswap 命令來設定交換分割槽:
      #mkswap /dev/sdb2
    c 啟用交換分割槽:
      #swapon /dev/sdb2 #swapon –s 檢視
    d 寫入/etc/fstab,以便在引導時啟用:
       /dev/sdb2 swap swap defaults 0 0
     
    2 新增一個交換檔案
      a 建立大小為1G的交換檔案:
       #dd if=/dev/zero of=/swapfile1 bs=1024k count=1024
      b 使用 mkswap 命令來設定交換檔案:
       #mkswap /swapfile1
      c 啟用交換分割槽:
       #swapon /swapfile1
      d 寫入/etc/fstab,以便在引導時啟用:
       /swapfile1 swap swap defaults 0 0
      新添了交換分割槽並啟用它之後,請檢視 cat /proc/swaps 或free 命令的輸出來確保交換分割槽已被啟用了。
     
    3 刪除交換空間
      a 禁用交換分割槽:
       #swapoff /dev/sdb2
      b 從 /etc/fstab 中刪除專案;
      c 使用fdisk或yast工具刪除分割槽。
    刪除交換檔案步驟同上。
     

四、編寫指令碼計算/etc/passwd 第10個使用者和第20個使用者id號之和。

#!/bin/bash
id10=$(head -10 /etc/passwd | tail -1 | cut -d: -f3)
id20=$(head -20 /etc/passwd | tail -1 | cut -d: -f3)
id_sum=$[$id1+$id2]
echo id_sum=$id_sum
[[email protected] Desktop]# bash idSUM.sh
id_sum=180

五、將當前主機名儲存至HostName變數中,如果主機名為空,或者為localhost. localdomain將設主機名設為www. magedu. com

hostName=$(hostname)
[ -z "$hostName" -o "$hostName" == "localhost.localdomain" -o "$hostName" == "localhost" ] && hostname www.magedu.com

六、編寫指令碼,通過命令列引數傳入一個使用者名稱,判斷id號是偶教還是奇教。

#!/bin/bash
[[ $# != 1 ]] && echo "input a username:" ||exit
grep "^\<$1\>" /etc/passwd | awk -F: '{print "user is " $1,",uid is " $3} {if($3%2 == 0){print "偶數"} else {print "奇數"}}'

七、lvm的基本應用及收縮擴充套件

1、建立lvm
 
新增硬碟
Fdisk –l
More /proc/partitions 或者lsblk檢視
Fdisk /dev/sdb 建立分割槽,格式為LVM,記得儲存w退出,建立後可能讀不出來,需要重啟或者partprobe或者kpartx –a /dev/sdb或者partx -a /dev/sdb
Fdisk –l 或者lsblk檢視

Pvcreate /dev/sdb1 pvdisplay
Vgcreate vg1 /dev/sdb1 vgdisplay -s 8M 注: -s 指定PE大小
Lvcreate –L 4.99G –n lv1 vg1 注:-l 指定PE個數 –L指定大小 -n指定名稱
Lvdisplay
Mkfs.ext4 /dev/vg1/lv1
Mount /dev/vg1/lv1 /mnt
或者vi /etc/fstab
/dev/mapper/vg1-lv1 /mnt ext4 default 0 0
Mount –a
2、卷組變化
 
(1) 擴展卷組
 
fdisk /dev/sdb #新增/dev/sdb5(邏輯分割槽8e) 2G
pvcerate /dev/sdb5 #建立物理卷sdb5
vgextend vg1 /dev/sdb5 #把物理卷sdb5新增到vg1卷組中
lvresize -L 100M /dev/vg1/lv1 #擴容邏輯卷大小
Df –h
如果掛載的大小沒變
Resize2fs /dev/vg1/lv1 Df –h
(需要重新格式化和掛載嗎?)不需要
 
(2) 擴容邏輯卷,擴容不影響擴容前磁盤裡面的內容
 
lvresize -L 300M /dev/vg1/lv1 #重新設定大小 lvextend也行
e2fsck -f /dev/vg1/lv1 #檢查磁碟錯誤 (針對ext4執行)
resize2fs /dev/vg1/lv1 #更新邏輯卷資訊(針對ext4執行)
 
(3) 縮減邏輯卷,xfs不支援,縮減前先unmount
 
e2fsck -f /dev/vg1/lv1 #檢查磁碟錯誤 (針對ext4執行)
resize2fs /dev/vg1/lv1 100M #更新邏輯卷資訊(針對ext4執行)
lvresize -L 100M /dev/vg1/lv1 #重新設定大小
 
3、離線解除安裝
1.lvscan , vgscan 或者 lvdisplay,vgdisplay一下
2.舉例:我的LV1 和VG1要刪除
umount /mnt/lv1
將lv1邏輯卷至離線狀態
lvremove lv1
刪除了lv1之後 ,到vg1了,
vgchange -an /dev/vg1 -------- -an離線 (非活動)-ay 上線(活動)
vgremove /dev/vg1
pv物理卷 其實可以不用理會 pvremove