第五週作業 磁碟分割槽、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檔案系統。要求
- 塊大小為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 - 掛載至/mydata,要求掛載時禁止程式自動執行,且不更新檔案的訪問時間戳。
mkdir /mydata
mount /dev/sda3 /mydata/ -o noexec,noatime - 可開機自動掛載
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