一、描述GPT是什麼,應該怎麼使用。node
早期磁盤第一個扇區裏面含有的重要信息咱們稱爲 MBR (Master Boot Record) 格式,可是因爲近年來磁盤的容量不斷擴大,形成讀寫上的一些困擾, 甚至有些大於 2TB 以上的磁盤分區已經讓某些操做系統沒法存取。所以後來又多了一個新的磁盤分區格式,稱爲 GPT (GUID partitiontable)! 這兩種分區格式與限制不太相同。linux
由於過去一個扇區大小就是 512bytes 而已,不過目前已經有 4K 的扇區設計出現!爲了兼容於全部的磁盤,所以在扇區的定義上面, 大多會使用所謂的邏輯區塊地址(Logical Block Address, LBA)來處理。GPT 將磁盤全部區塊以此 LBA(預設爲 512bytes 喔!) 來規劃,而第一個 LBA 稱爲 LBA0 (從0 開始編號)。與 MBR 僅使用第一個 512bytes 區塊來紀錄不一樣, GPT 使用了 34 個 LBA 區塊來紀錄分區信息!同時與過去 MBR 僅有一的區塊,被幹掉就死光光的狀況不一樣, GPT 除了前面 34 個 LBA 以外,整個磁盤的最後 33 個 LBA 也拿來做爲另外一個備份!web
二、建立一個10G的分區,並格式化爲ext4文件系統。要求:centos
(1)block大小爲2048,預留空間20%,卷標爲MYDATA,bash
(2)掛載至/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳。app
(3)可開機自動掛載。dom
一、格式化一塊10G的磁盤空間出來 fdisk /dev/sda n 1 p 默認起始 +10G 二、建立爲ext4的文件系統 mke2fs -t ext4 -b 2048 -L MYDATA -m 2 /dev/sda1 三、修改默認掛載屬性包含acl tune2fs -o acl /dev/sda1 四、掛載至/data/mydata mkdir -p /data/mydata amount -o noexec noatime /data/mydata /dev/sda1 開機自動掛載: 在/etc/fstab中添加一行 LALEL=MYDATA /data/mydata ext4 defaults,acl,noexec,noatime 0 0
三、建立一個大小爲1G的swap分區,並啓用。ide
一、先格式化一塊1G的磁盤分區 fdisk /dev/sda n 2 p 默認起始值 +1G 調整磁盤類型爲swap可用 t 82 w 二、重讀分區 kpartx -af /dev/sda 三、建立swap文件系統 (1)、臨時 mkswap /dev/sda3 swapon /dev/sda3 (2)、開機啓動掛載 編輯/etc/fstab,增長 /dev/sda3 swap swap defaults 0 0
四、編寫腳本計算/etc/passwd文件中第10個用戶和第20個用戶id號之和。佈局
[root@localhost ~]# cat useridadd.sh #!/bin/bash # num1=$(head -10 /etc/passwd | tail -1 | cut -d: -f3) num2=$(head -20 /etc/passwd | tail -1 | cut -d: -f3) sum=$(($num1+$num2)) echo $sum
五、將當前主機名保存至hostName變量中,主機名若是爲空,或者爲localhost.localdomain則將設置爲www.magedu.com。 ui
hostName=$(hostname) [ -z "$hostName" -o "$hostName" == "localhost.localdomain" ] && hostname www.magedu.com
六、編寫腳本,經過命令行參數傳入一個名戶名,判斷id號是偶數仍是奇數。
[root@localhost scripts]# cat userid_odd.sh #!/bin/bash # [ $# -ne 1 ] && echo "Input one Arg" && exit 2; uid=$(id -u $1) uid_yu=$(($uid % 2)) if [ $uid_yu -eq 0 ];then echo "$1的ID號爲偶數" else echo "$1的ID號爲奇數" fi
七、lvm基本應用以及擴展縮減實現。
LVM是邏輯卷管理(Logical Volume Manager)的簡稱,它是一種更爲靈活的磁盤分區管理機制。LVM是在磁盤分區和文件系統之間添加的一層邏輯層,它爲文件系統屏蔽下層的磁盤分區佈局,向文件系統提供一個抽象的存儲卷。經過LVM,Linux系統管理員可輕鬆地管理磁盤分區,如:既然LVM是創建在硬盤和分區之上的一層邏輯層,那麼能夠將多個硬盤、多個分區或RAID組織起來構建成存儲卷組,做爲一個存儲池;而後在這個存儲卷之上再將其劃分出一個或多個邏輯卷,Linux系統管理員能夠對這個劃分出來的邏輯捲進行一系列操做(例如格式化、掛載等),能夠將邏輯卷當作一個系統分區來對待,更重要的是,這個系統分區的大小還能夠在線擴展或縮減。總的來講,LVM使得系統分區獨立於底層硬件。
那麼LVM是如何作到支持系統分區在線擴容或縮容的?咱們再梳理一下LVM的工做原理。要製做邏輯分區,首先須要將多個硬盤、多個分區或RAID製做成爲便於識別的物理卷(PV, Physical Volume),將這些製做好的物理卷再構建成一個存儲池,咱們把這個存儲池稱爲卷組(VG, VolumeGroup),這是LVM的第一個邏輯層。在卷組這一層上再邏輯出一層邏輯卷(LV, LogicalVolume),這個邏輯卷LV可供用戶使用,例如格式化、掛載、存儲數據,至關於一個邏輯意義上的系統分區。而這個邏輯分區的空間大小取決於卷組VG的分配,所以邏輯卷LV的存儲空間不能超過其所屬卷組VG的總存儲空間。
LVM建立:
// 磁盤分區,模擬建立物理磁盤過程 [root@cdcjtx-centos-001 ~]# fdisk /dev/sdb 歡迎使用 fdisk (util-linux 2.23.2)。 更改將停留在內存中,直到您決定將更改寫入磁盤。 使用寫入命令前請三思。 命令(輸入 m 獲取幫助):n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): Using default response p 分區號 (1-4,默認 1): 起始 扇區 (2048-41943039,默認爲 2048): 將使用默認值 2048 Last 扇區, +扇區 or +size{K,M,G} (2048-41943039,默認爲 41943039):+3G 分區 1 已設置爲 Linux 類型,大小設爲 3 GiB 命令(輸入 m 獲取幫助):n Partition type: p primary (1 primary, 0 extended, 3 free) e extended Select (default p): Using default response p 分區號 (2-4,默認 2): 起始 扇區 (6293504-41943039,默認爲 6293504): 將使用默認值 6293504 Last 扇區, +扇區 or +size{K,M,G} (6293504-41943039,默認爲 41943039):+4G 分區 2 已設置爲 Linux 類型,大小設爲 4 GiB 命令(輸入 m 獲取幫助):n Partition type: p primary (2 primary, 0 extended, 2 free) e extended Select (default p): Using default response p 分區號 (3,4,默認 3): 起始 扇區 (14682112-41943039,默認爲 14682112): 將使用默認值 14682112 Last 扇區, +扇區 or +size{K,M,G} (14682112-41943039,默認爲 41943039):+2G 分區 3 已設置爲 Linux 類型,大小設爲 2 GiB 命令(輸入 m 獲取幫助):t 分區號 (1-3,默認 3): Hex 代碼(輸入 L 列出全部代碼):8e 已將分區「Linux」的類型更改成「Linux LVM」 命令(輸入 m 獲取幫助):t 分區號 (1-3,默認 3):2 Hex 代碼(輸入 L 列出全部代碼):8e 已將分區「Linux」的類型更改成「Linux LVM」 命令(輸入 m 獲取幫助):t 分區號 (1-3,默認 3):1 Hex 代碼(輸入 L 列出全部代碼):8e 已將分區「Linux」的類型更改成「Linux LVM」 命令(輸入 m 獲取幫助):w The partition table has been altered! Calling ioctl() to re-read partition table. 正在同步磁盤。 [root@cdcjtx-centos-001 ~]# fdisk /dev/sdb 歡迎使用 fdisk (util-linux 2.23.2)。 更改將停留在內存中,直到您決定將更改寫入磁盤。 使用寫入命令前請三思。 命令(輸入 m 獲取幫助):p 磁盤 /dev/sdb:21.5 GB, 21474836480 字節,41943040 個扇區 Units = 扇區 of 1 * 512 = 512 bytes 扇區大小(邏輯/物理):512 字節 / 512 字節 I/O 大小(最小/最佳):512 字節 / 512 字節 磁盤標籤類型:dos 磁盤標識符:0xc950dffb 設備 Boot Start End Blocks Id System /dev/sdb1 2048 6293503 3145728 8e Linux LVM /dev/sdb2 6293504 14682111 4194304 8e Linux LVM /dev/sdb3 14682112 18876415 2097152 8e Linux LVM 命令(輸入 m 獲取幫助):q
// 建立PV [root@cdcjtx-centos-001 ~]# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created. [root@cdcjtx-centos-001 ~]# pvcreate /dev/sdb2 Physical volume "/dev/sdb2" successfully created. [root@cdcjtx-centos-001 ~]# pvcreate /dev/sdb3 Physical volume "/dev/sdb3" successfully created. [root@cdcjtx-centos-001 ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <19.00g 0 /dev/sdb1 lvm2 --- 3.00g 3.00g /dev/sdb2 lvm2 --- 4.00g 4.00g /dev/sdb3 lvm2 --- 2.00g 2.00g
// 建立PE大小爲12M,名稱爲TESTvg的邏輯卷組 [root@cdcjtx-centos-001 ~]# vgcreate -s 12M TESTvg /dev/sdb1 /dev/sdb2 /dev/sdb3 Volume group "TESTvg" successfully created [root@cdcjtx-centos-001 ~]# vgs VG #PV #LV #SN Attr VSize VFree TESTvg 3 0 0 wz--n- <8.98g <8.98g centos 1 2 0 wz--n- <19.00g 0
// 建立大小爲4G,名爲TESTlv的邏輯分區 [root@cdcjtx-centos-001 ~]# lvcreate -L 4G -n TESTlv TESTvg Rounding up size to full physical extent <4.01 GiB Logical volume "TESTlv" created. [root@cdcjtx-centos-001 ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert TESTlv TESTvg -wi-a----- <4.01g root centos -wi-ao---- <17.00g swap centos -wi-ao---- 2.00g
// 格式化分區爲ext4類型,並掛載到/users目錄下,將目錄/etc/pam.d 複製到/users目錄下 [root@cdcjtx-centos-001 ~]# mkfs.ext4 /dev/TESTvg/TESTlv mke2fs 1.42.9 (28-Dec-2013) 文件系統標籤= OS type: Linux 塊大小=4096 (log=2) 分塊大小=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 263472 inodes, 1053696 blocks 52684 blocks (5.00%) reserved for the super user 第一個數據塊=0 Maximum filesystem blocks=1080033280 33 block groups 32768 blocks per group, 32768 fragments per group 7984 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Allocating group tables: 完成 正在寫入inode表: 完成 Creating journal (32768 blocks): 完成 Writing superblocks and filesystem accounting information: 完成 [root@cdcjtx-centos-001 ~]# partprobe // 在不從新啓動機器的狀況下系統可以識別這些分區 [root@cdcjtx-centos-001 ~]# mount /dev/TESTvg/TESTlv /users/ [root@cdcjtx-centos-001 ~]# cp -R /etc/pam.d/ /users/ [root@cdcjtx-centos-001 ~]# ls -l /users/ 總用量 20 drwx------ 2 root root 16384 5月 13 16:27 lost+found drwxr-xr-x 2 root root 4096 5月 13 16:29 pam.d
LVM擴展:
// 爲TESTlv新增長2G容量,並驗證數據完整度 [root@cdcjtx-centos-001 ~]# lvextend -L +2G /dev/TESTvg/TESTlv // 擴展物理邊界 Rounding size to boundary between physical extents: 2.00 GiB. Size of logical volume TESTvg/TESTlv changed from <4.02 GiB (343 extents) to 6.02 GiB (514 extents). Logical volume TESTvg/TESTlv successfully resized. [root@cdcjtx-centos-001 ~]# resize2fs /dev/TESTvg/TESTlv // 擴展邏輯邊界 resize2fs 1.42.9 (28-Dec-2013) Filesystem at /dev/TESTvg/TESTlv is mounted on /users; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 1 The filesystem on /dev/TESTvg/TESTlv is now 1579008 blocks long. [root@cdcjtx-centos-001 ~]# ls -l /users/ //數據校驗 總用量 20 drwx------ 2 root root 16384 5月 13 16:27 lost+found drwxr-xr-x 2 root root 4096 5月 13 16:29 pam.d
LVM縮減:
// 將TESTlv縮減到2G大小,並校驗數據完整性! // 這裏採用ext4做爲文件系統類型 // 先卸載物理文件系統->文件系統的強制檢測和修復->縮減邏輯邊界->縮減物理邊界->從新掛載 [root@cdcjtx-centos-001 ~]# umount /dev/TESTvg/TESTlv // 卸載物理文件系統 [root@cdcjtx-centos-001 ~]# e2fsck -f /dev/TESTvg/TESTlv // 文件系統的強制檢測和修復 e2fsck 1.42.9 (28-Dec-2013) 第一步: 檢查inode,塊,和大小 第二步: 檢查目錄結構 第3步: 檢查目錄鏈接性 Pass 4: Checking reference counts 第5步: 檢查簇概要信息 /dev/TESTvg/TESTlv: 67/391216 files (0.0% non-contiguous), 61501/1579008 blocks [root@cdcjtx-centos-001 ~]# resize2fs /dev/TESTvg/TESTlv 2G // 縮減邏輯邊界爲2G大小 resize2fs 1.42.9 (28-Dec-2013) Resizing the filesystem on /dev/TESTvg/TESTlv to 524288 (4k) blocks. The filesystem on /dev/TESTvg/TESTlv is now 524288 blocks long. [root@cdcjtx-centos-001 ~]# lvreduce -L 2G /dev/TESTvg/TESTlv // 縮減物理邊界爲2G大小 Rounding size to boundary between physical extents: 2.00 GiB. WARNING: Reducing active logical volume to 2.00 GiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce TESTvg/TESTlv? [y/n]: y // 確認執行,注意風險性 Size of logical volume TESTvg/TESTlv changed from 6.02 GiB (514 extents) to 2.00 GiB (171 extents). Logical volume TESTvg/TESTlv successfully resized. [root@cdcjtx-centos-001 ~]# mount /dev/TESTvg/TESTlv /users/ //從新掛載 [root@cdcjtx-centos-001 ~]# ls -l /users/ //數據查看 總用量 20 drwx------ 2 root root 16384 5月 13 16:27 lost+found drwxr-xr-x 2 root root 4096 5月 13 16:29 pam.d
刪除LVM:
[root@cdcjtx-centos-001 ~]# umount /users/ [root@cdcjtx-centos-001 ~]# lvremove /dev/TESTvg/TESTlv Do you really want to remove active logical volume TESTvg/TESTlv? [y/n]: y Logical volume "TESTlv" successfully removed [root@cdcjtx-centos-001 ~]# vgremove TESTvg Volume group "TESTvg" successfully removed [root@cdcjtx-centos-001 ~]# pvremove /dev/sdb1 Labels on physical volume "/dev/sdb1" successfully wiped. [root@cdcjtx-centos-001 ~]# pvremove /dev/sdb2 Labels on physical volume "/dev/sdb2" successfully wiped. [root@cdcjtx-centos-001 ~]# pvremove /dev/sdb3 Labels on physical volume "/dev/sdb3" successfully wiped. [root@cdcjtx-centos-001 ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <19.00g 0 [root@cdcjtx-centos-001 ~]# vgs VG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- <19.00g 0 [root@cdcjtx-centos-001 ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao---- <17.00g swap centos -wi-ao---- 2.00g