GPT、LVM概念介绍及shell脚本

1、描述GPT是什么,应该怎么使用。

GPT的全称是Globally Unique Identifier Partition Table,意即GUID分区表,GUID 分区表 (GPT) 是作为 Extensible Firmware Interface (EFI) 计划的一部分引入的。相对于以往 PC 普遍使用的主引导记录 (MBR) 分区方案,GPT 提供了更加灵活的磁盘分区机制。分区指物理或逻辑磁盘上彼此连接的存储空间,但提供功能时就像物理上分隔的磁盘一样。对于系统固件和已安装的操作系统来说,分区是可见的。操作系统启动之前,对分区的访问由系统固件控制,操作系统启动后则由操作系统控制。
它具有如下优点:

  • 1、支持2TB以上的大硬盘。

  • 2、每个磁盘的分区个数几乎没有限制(Windows系统最多只允许划分128个分区)。

  • 3、分区大小几乎没有限制。又是一个“几乎”。因为它用64位的整数表示扇区号,即 = 18,446,744,073,709,551,616。

  • 4、分区表自带备份。在磁盘的首尾部分分别保存了一份相同的分区表,其中一份被破坏后,可以通过另一份恢复;

  • 5、循环冗余检验值针对关键数据结构而计算,提高了数据崩溃的检测几率;

  • 6、 虽然MBR提供1字节分区类型代码,但GPT使用一个16字节的全局唯一标识符(GUID)值来标识分区类型,这使分区类型更不容易冲突;

  • 7、每个分区可以有一个名称(不同于卷标)。

要想使用GPT分区表必须是UEFI BIOS环境,UEFI和GPT相辅相成的,二者缺一不可,现在的服务器主板基本采用UEFI+BIOS共存模式,并且BIOS中集成UEFI启动项,如果我们的系统盘大小超过了2T我们需要使用UEFI模式进行系统安装并进行系统启动,在对大于2T的非系统盘进行分区时我们需要选择GPT分区格式。

2、创建一个10G的分区,并格式化为ext4文件系统。要求:

(1)block大小为2048,预留空间20%,卷标为MYDATA,
(2) 挂载至/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳。
(3)可开机自动挂载。

fdisk创建一个10G的分区
[root@node01 ~]# fdisk /dev/sdd
[root@node01 ~]# mkfs.ext4  -b 2048 -m 20 -L MYDATA /dev/sdd1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=MYDATA
OS type: Linux
块大小=2048 (log=1)
分块大小=2048 (log=1)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 5242880 blocks
1048576 blocks (20.00%) reserved for the super user
第一个数据块=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: 完成                            
正在写入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成   
[root@node01 ~]# mkdir -p /mydata
[root@node01 ~]# vim /etc/fstab
/dev/sdd1  /mydata  ext4  defaults,noatime,noexec  0 0
[root@node01 ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   50G  2.6G   48G    6% /
devtmpfs                 1.9G     0  1.9G    0% /dev
tmpfs                    1.9G     0  1.9G    0% /dev/shm
tmpfs                    1.9G   17M  1.9G    1% /run
tmpfs                    1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1               1014M  143M  872M   15% /boot
/dev/mapper/centos-home   46G   33M   46G    1% /home
tmpfs                    380M     0  380M    0% /run/user/0
/dev/sdd1                9.8G   13M  7.8G    1% /mydata
[root@node01 ~]# 

3、创建一个大小为1G的swap分区,并启用。

  • 使用分区创建
命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+1G
分区 1 已设置为 Linux 类型,大小设为 1 GiB

命令(输入 m 获取帮助):t 1
已选择分区 1
Hex 代码(输入 L 列出所有代码):82
已将分区“Linux”的类型更改为“Linux swap / Solaris”

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x3b4aa74b

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   82  Linux swap / Solaris

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@node01 ~]# mkswap /dev/sdb1
正在设置交换空间版本 1,大小 = 1048572 KiB
无标签,UUID=f0700ccb-5dae-4ded-a515-4f31d1cb5317
[root@node01 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           3791         144        2673          16         972        3352
Swap:          3967           0        3967
[root@node01 ~]# swapon /dev/sdb1
[root@node01 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           3791         145        2673          16         972        3352
Swap:          4991           0        4991
[root@node01 ~]# vim /etc/fstab
/dev/sdb1               swap                    swap    defaults        0 0
  • 使用文件创建
[root@node01 tmp]# dd if=/dev/zero of=/tmp/swap.img bs=1M count=1024
[root@node01 tmp]# mkswap /tmp/swap.img
[root@node01 tmp]# free -m
              total        used        free      shared  buff/cache   available
Mem:           3791         144        1620          16        2025        3338
Swap:          4991           0        4991
[root@node01 tmp]# swapon /tmp/swap.img 
[root@node01 tmp]# free -m
              total        used        free      shared  buff/cache   available
Mem:           3791         145        1620          16        2025        3337
Swap:          6015           0        6015
[root@node01 tmp]# 

4、编写脚本计算/etc/passwd文件中第10个用户和第20个用户id号之和。

#!/bin/bash
#
#判断系统是否存在20个用户
ID_num=$(cat /etc/passwd|wc -l)

[ $ID_num -lt 20 ] && echo "用户个数小于20" && exit 2

#获取指定用户ID号

ID1=$(cat /etc/passwd |head -10 |tail -1 |cut -d: -f3)
ID2=$(cat /etc/passwd |head -20 |tail -1 |cut -d: -f3)

echo "第10个用户ID为:$ID1"
echo "第20个用户ID为:$ID2"
SUM_ID=$[$ID1+$ID2]

echo "第10个和第20个的用户ID之和是:$SUM_ID"
运行脚本如下:
[root@node01 ~]# sh idsum.sh 
第10个用户ID为:11
第20个用户ID为:4002
第10个和第20个的用户ID之和是:4013

5、将当前主机名保存至hostName变量中,主机名如果为空,或者为localhost.localdomain则将设置为www.magedu.com

#!/bin/bash
#
hostName=$(hostname)

[ -z "$hostName" -o "$hostName" == "localhost.localdomain" -o "$hostName" == "localhost" ] && hostnamectl set-hostname www.magedu.com || echo "主机名:$hostName 符合要求没有修改"

6、编写脚本,通过命令行参数传入一个用户名,判断id号是偶数还是奇数。

#!/bin/bash
#该脚本判断参数用户ID奇偶类型

[ $# -lt 1 ] && echo "At least a username" && exit 1

! id $1 && echo "No such user" && exit 2

userid=$(id -u $1)

userjo=$[${userid}%2]
if [ $userjo -eq 0 ];then
    echo "$1 ID是偶数"
else
    echo "$1 ID是奇数"
fi

7、lvm基本应用以及扩展缩减实现

  • LVM原理描述
    LVM是(Logical Volume Manager) 逻辑卷管理的简写,它是Linux环境下对磁盘分区进行管理的一种机制。LVM是建立在硬盘和分区之上的一个逻辑层,屏蔽了底层磁盘布局,便于动态调整磁盘容量来提高磁盘分区管理的灵活性。它可以将一个或多个底层块设备组织成一个逻辑设备的卷组,管理员可以在卷组上随意创建逻辑卷组(logical volumes),并进一步在逻辑卷组上创建文件系统,管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配 。


    LVM模型图
  • LVM 基本术语

    • 物理存储介质(PhysicalStorageMedia):
      指系统上最底层的物理存储设备:磁盘,例如:/dev/sda、/dev/sdb等
    • 物理卷(Physical Volume, PV):
      指磁盘、磁盘分区或RAID设备,使用LVM前需要先将之制作成便于识别的物理卷PV
    • 卷组(Volume Group, VG):
      卷组由一个或多个物理卷PV组成,在卷组之上可创建一个或多个逻辑卷LV。卷组VG类似于非LVM系统的 物理磁盘
    • 逻辑卷(Logical Volume, LV):
      建立在卷组VG之上,相当于逻辑分区,可在逻辑卷LV上进行一系列操作(例如:格式化、挂载等)。 逻辑卷LV类似于非LVM系统的磁盘分区
    • 物理扩展块(Physical Extent, PE):
      当物理卷PV加入某一卷组VG后即被划分为基本单元PE,PE是LVM寻址的最小单元。PE的大小是可配置的,默认为4M。
    • 逻辑扩展块(Logical Extent, LE):
      卷组VG将PE划分给逻辑卷LV,在逻辑卷LV中的PE称为LE。在同一卷组VG中,PE和LE大小相同,且相互对应。LE也是LVM的最小寻址单位。
  • LVM基本操作

    • 对指定磁盘进行分区
    [root@node01 home]# fdisk /dev/sdc
    
    欢迎使用 fdisk (util-linux 2.23.2)。
    更改将停留在内存中,直到您决定将更改写入磁盘。
    使用写入命令前请三思。
    
    Device does not contain a recognized partition table
    使用磁盘标识符 0xcbb3bd7d 创建新的 DOS 磁盘标签。
    命令(输入 m 获取帮助):n
    Partition type:
     p   primary (0 primary, 0 extended, 4 free)
     e   extended
    Select (default p): p
    分区号 (1-4,默认 1):
    起始 扇区 (2048-41943039,默认为 2048):
    将使用默认值 2048
    Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):
    将使用默认值 41943039
    分区 1 已设置为 Linux 类型,大小设为 20 GiB
    
    命令(输入 m 获取帮助):t 1
    已选择分区 1
    Hex 代码(输入 L 列出所有代码):8e
    已将分区“Linux”的类型更改为“Linux LVM”
    
    命令(输入 m 获取帮助):p
    
    磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0xcbb3bd7d
    
     设备 Boot      Start         End      Blocks   Id  System
    /dev/sdc1            2048    41943039    20970496   8e  Linux LVM
    
    命令(输入 m 获取帮助):w
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    正在同步磁盘。
     
     [root@node01 home]# fdisk -l /dev/sdc
    
    磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0xcbb3bd7d
    
     设备 Boot      Start         End      Blocks   Id  System
    /dev/sdc1            2048    41943039    20970496   8e  Linux LVM
    [root@node01 home]#
    
    • 制作物理卷
    [root@node01 ~]# pvcreate /dev/sdc1
    Physical volume "/dev/sdc1" successfully created.
    [root@node01 ~]# pvs
    PV         VG     Fmt  Attr PSize   PFree  
    /dev/sda2  centos lvm2 a--  <99.00g      0 
    /dev/sdc1         lvm2 ---  <20.00g <20.00g
    
    • 创建卷组
     [root@node01 ~]# vgcreate mytestvg /dev/sdc1
     Volume group "mytestvg" successfully created
     [root@node01 ~]# vgs
     VG       #PV #LV #SN Attr   VSize   VFree  
     centos     1   3   0 wz--n- <99.00g      0 
     mytestvg   1   0   0 wz--n- <20.00g <20.00g
    
    • 创建逻辑卷
    [root@node01 ~]# lvcreate -L 5G -n mylv mytestvg
    Logical volume "mylv" created.
    [root@node01 ~]# lvs
    LV   VG       Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
    home centos   -wi-ao---- 45.12g                                                    
    root centos   -wi-ao---- 50.00g                                                    
    swap centos   -wi-ao---- <3.88g                                                    
    mylv mytestvg -wi-a-----  5.00g                                                    
    [root@node01 ~]# 
    
    • 创建文件系统
    [root@node01 ~]# mkfs.ext4 /dev/mytestvg/mylv 
    mke2fs 1.42.9 (28-Dec-2013)
    文件系统标签=
    OS type: Linux
    块大小=4096 (log=2)
    分块大小=4096 (log=2)
    Stride=0 blocks, Stripe width=0 blocks
    327680 inodes, 1310720 blocks
    65536 blocks (5.00%) reserved for the super user
    第一个数据块=0
    Maximum filesystem blocks=1342177280
    40 block groups
    32768 blocks per group, 32768 fragments per group
    8192 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@node01 ~]# mkdir -p /lvdata
    [root@node01 ~]# mount /dev/mytestvg/mylv /lvdata
    [root@node01 ~]# df -h
    文件系统                   容量  已用  可用 已用% 挂载点
    /dev/mapper/centos-root     50G  2.6G   48G    6% /
    devtmpfs                   1.9G     0  1.9G    0% /dev
    tmpfs                      1.9G     0  1.9G    0% /dev/shm
    tmpfs                      1.9G   17M  1.9G    1% /run
    tmpfs                      1.9G     0  1.9G    0% /sys/fs/cgroup
    /dev/sda1                 1014M  143M  872M   15% /boot
    /dev/sdd1                  9.8G   13M  7.8G    1% /mydata
    /dev/mapper/centos-home     46G   33M   46G    1% /home
    tmpfs                      380M     0  380M    0% /run/user/0
    /dev/mapper/mytestvg-mylv  4.8G   20M  4.6G    1% /lvdata
    [root@node01 ~]# 
    
    • 扩展文件系统大小
    [root@node01 ~]# lvextend -L +2G /dev/mytestvg/mylv 
    Size of logical volume mytestvg/mylv changed from 5.00 GiB (1280 extents) to 7.00 GiB (1792 extents).
    Logical volume mytestvg/mylv successfully resized.
    [root@node01 ~]# resize2fs -p /dev/mytestvg/mylv 
    resize2fs 1.42.9 (28-Dec-2013)
    Filesystem at /dev/mytestvg/mylv is mounted on /lvdata; on-line resizing required
    old_desc_blocks = 1, new_desc_blocks = 1
    The filesystem on /dev/mytestvg/mylv is now 1835008 blocks long.
    
    [root@node01 ~]# df -h
    文件系统                   容量  已用  可用 已用% 挂载点
    /dev/mapper/centos-root     50G  2.6G   48G    6% /
    devtmpfs                   1.9G     0  1.9G    0% /dev
    tmpfs                      1.9G     0  1.9G    0% /dev/shm
    tmpfs                      1.9G   17M  1.9G    1% /run
    tmpfs                      1.9G     0  1.9G    0% /sys/fs/cgroup
    /dev/sda1                 1014M  143M  872M   15% /boot
    /dev/sdd1                  9.8G   13M  7.8G    1% /mydata
    /dev/mapper/centos-home     46G   33M   46G    1% /home
    tmpfs                      380M     0  380M    0% /run/user/0
    /dev/mapper/mytestvg-mylv  6.8G   23M  6.4G    1% /lvdata
    
    
    • 缩减文件系统大小
    [root@node01 ~]# umount /lvdata
    [root@node01 /]# lvs
    LV   VG       Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
    home centos   -wi-ao---- 45.12g                                                    
    root centos   -wi-ao---- 50.00g                                                    
    swap centos   -wi-ao---- <3.88g                                                    
    mylv mytestvg -wi-a-----  7.00g                                                    
    [root@node01 /]# e2fsck -f /dev/mytestvg/mylv 
    e2fsck 1.42.9 (28-Dec-2013)
    第一步: 检查inode,块,和大小
    第二步: 检查目录结构
    第3步: 检查目录连接性
    Pass 4: Checking reference counts
    第5步: 检查簇概要信息
    /dev/mytestvg/mylv: 12/458752 files (0.0% non-contiguous), 66175/1835008 blocks
    [root@node01 /]# resize2fs -p /dev/mytestvg/mylv 4G
    resize2fs 1.42.9 (28-Dec-2013)
    Resizing the filesystem on /dev/mytestvg/mylv to 1048576 (4k) blocks.
    Begin pass 3 (max = 56)
    正在扫描inode表          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    The filesystem on /dev/mytestvg/mylv is now 1048576 blocks long.
    
    [root@node01 /]# lvreduce -L 4G /dev/mytestvg/mylv 
    WARNING: Reducing active logical volume to 4.00 GiB.
    THIS MAY DESTROY YOUR DATA (filesystem etc.)
    Do you really want to reduce mytestvg/mylv? [y/n]: y
    Size of logical volume mytestvg/mylv changed from 7.00 GiB (1792 extents) to 4.00 GiB (1024 extents).
    Logical volume mytestvg/mylv successfully resized.
    [root@node01 /]# mount /dev/mytestvg/mylv /lvdata
    [root@node01 /]# df -h
    文件系统                   容量  已用  可用 已用% 挂载点
    /dev/mapper/centos-root     50G  2.6G   48G    6% /
    devtmpfs                   1.9G     0  1.9G    0% /dev
    tmpfs                      1.9G     0  1.9G    0% /dev/shm
    tmpfs                      1.9G   17M  1.9G    1% /run
    tmpfs                      1.9G     0  1.9G    0% /sys/fs/cgroup
    /dev/sda1                 1014M  143M  872M   15% /boot
    /dev/sdd1                  9.8G   13M  7.8G    1% /mydata
    /dev/mapper/centos-home     46G   33M   46G    1% /home
    tmpfs                      380M     0  380M    0% /run/user/0
    /dev/mapper/mytestvg-mylv  3.9G   16M  3.6G    1% /lvdata
    
    • 注意针对xfs文件系统只能扩容,不能进行缩容操作,扩容时先对LV进行扩容,接着对文件系统进行扩容,扩容命令:xfs_growfs
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容