GPT,LVM概念以及shell脚本基础

GPT,LVM概念以及shell脚本基础

  • 描述GPT是什么,应该怎么使用
    1.GPT的全称是Globally Unique Identifier Partition Table,意即GUID分区表,GUID 分区表 (GPT) 是作为 Extensible Firmware Interface (EFI) 计划的一部分引入的。相对于以往 PC 普遍使用的主引导记录 (MBR) 分区方案,GPT 提供了更加灵活的磁盘分区机制。分区指物理或逻辑磁盘上彼此连接的存储空间,但提供功能时就像物理上分隔的磁盘一样。对于系统固件和已安装的操作系统来说,分区是可见的。操作系统启动之前,对分区的访问由系统固件控制,操作系统启动后则由操作系统控制。
    2.具有以下优点:
    (1)支持2TB以上的大硬盘;
    (2)每个磁盘的分区个数几乎没有限制(Windows系统最多只允许划分128个分区);
    (3)分区大小几乎没有限制。又是一个“几乎”。因为它用64位的整数表示扇区号,即 = 18,446,744,073,709,551,616;
    (4)分区表自带备份。在磁盘的首尾部分分别保存了一份相同的分区表,其中一份被破坏后,可以通过另一份恢复;
    (5)循环冗余检验值针对关键数据结构而计算,提高了数据崩溃的检测几率;
    (6)虽然MBR提供1字节分区类型代码,但GPT使用一个16字节的全局唯一标识符(GUID)值来标识分区类型,这使分区类型更不容易冲突;
    (7)每个分区可以有一个名称(不同于卷标)。
    3.要想使用GPT分区表必须是UEFI BIOS环境,UEFI和GPT相辅相成的,二者缺一不可,现在的服务器主板基本采用UEFI+BIOS共存模式,并且BIOS中集成UEFI启动项,如果我们的系统盘大小超过了2T我们需要使用UEFI模式进行系统安装并进行系统启动,在对大于2T的非系统盘进行分区时我们需要选择GPT分区格式。
  • 创建一个10G的分区,并格式化为ext4文件系统:
    要求:(1)block大小为2048,预留空间20%,卷标为MYDATA,
    (2)挂载至/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳。
    (3)可开机自动挂载。
    (1)fdisk创建10G分区
    [[email protected] ~]# fdisk /dev/sda
    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
    All primary partitions are in use
    Adding logical partition 6
    First sector (141940736-419430399, default 141940736):
    Using default value 141940736
    Last sector, +sectors or +size{K,M,G} (141940736-419430399, default 419430399): +10G
    Partition 6 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.
    WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
    The kernel still uses the old table. The new table will be used at
    the next reboot or after you run partprobe(8) or kpartx(8)
    Syncing disks.

    (2)mkfs创建文件系统:

    [[email protected] ~]# mkfs.ext4 -b 2048 -m 20 -L MYDATA /dev/sda6/
    mke2fs 1.42.9 (28-Dec-2013)
    Could not stat /dev/sda6/ --- Not a directory
    [[email protected] ~]# mkfs.ext4 -b 2048 -m 20 -L MYDATA /dev/sda6
    mke2fs 1.42.9 (28-Dec-2013)
    Filesystem label=MYDATA
    OS type: Linux
    Block size=2048 (log=1)
    Fragment size=2048 (log=1)
    Stride=0 blocks, Stripe width=0 blocks
    655360 inodes, 5242880 blocks
    1048576 blocks (20.00%) reserved for the super user
    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   

    (3)挂载至/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳。并设置开机自动挂载

    [[email protected] ~]# mkdir -p /mydata
    [[email protected] ~]# vim /etc/fstab
    /dev/sda6                        /mydata                 ext4    defaults,noatime,noexec 0 0
    [[email protected] ~]# mount -a
    [[email protected] ~]# df -h
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda2        47G  5.2G   42G  12% /
    devtmpfs        523M     0  523M   0% /dev
    tmpfs           538M     0  538M   0% /dev/shm
    tmpfs           538M  7.8M  530M   2% /run
    tmpfs           538M     0  538M   0% /sys/fs/cgroup
    /dev/sda1       497M  151M  346M  31% /boot
    /dev/sda3        19G   39M   19G   1% /data
    tmpfs           108M  4.0K  108M   1% /run/user/42
    tmpfs           108M   32K  108M   1% /run/user/1000
    /dev/sr0        8.1G  8.1G     0 100% /run/media/wl/CentOS 7 x86_64
    tmpfs           108M     0  108M   0% /run/user/0
    /dev/sda6       9.8G   13M  7.8G   1% /mydata
  • 创建一个大小为1G的swap分区,并启用:
    [[email protected] ~]# fdisk /dev/sda
    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
    All primary partitions are in use
    Adding logical partition 7
    First sector (162914304-419430399, default 162914304):
    Using default value 162914304
    Last sector, +sectors or +size{K,M,G} (162914304-419430399, default 419430399): +1G
    Partition 7 of type Linux and of size 1 GiB is set
    Command (m for help): t
    Partition number (1-7, default 7): 7
    Hex code (type L to list all codes): 82
    Changed type of partition ‘Linux‘ to ‘Linux swap / Solaris‘
    Command (m for help): w
    The partition table has been altered!
    Calling ioctl() to re-read partition table.
    WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
    The kernel still uses the old table. The new table will be used at
    the next reboot or after you run partprobe(8) or kpartx(8)
    Syncing disks.
    [[email protected] ~]# mkswap /dev/sda7
    Setting up swapspace version 1, size = 1048572 KiB
    no label, UUID=ba42d9ae-41a0-4829-bd14-a32834cf6ec9
    [[email protected] ~]# swapon /dev/sda7
    [[email protected] ~]# vim /etc/fstab
    /dev/sda7                                 swap                    swap    defaults      0  0 
  • 编写脚本计算/etc/passwd文件中第10个用户和第20个用户id号之和
    #!/bin/bash
    #判断系统是否存在20个用户
    id_sum=$( cat /etc/passwd | wc -l )
    [ ${id_sum} -lt 20 ] && echo "用户个数小于20" && exit 2
    id1=$(head -10 /etc/passwd | tail -1 | cut  -d: -f3)
    id2=$(head -20 /etc/passwd | tail -1 | cut -d: -f3)
    idsum=$[${id1}+${id2}]
    echo "Ths sum is $idsum"
    [[email protected] scripts]# bash -x  idsum2.sh
    ++ cat /etc/passwd
    ++ wc -l
    + id_sum=58
    + ‘[‘ 58 -lt 20 ‘]‘
    ++ head -10 /etc/passwd
    ++ tail -1
    ++ cut -d: -f3
    + id1=11
    ++ head -20 /etc/passwd
    ++ tail -1
    ++ cut -d: -f3
    + id2=997
    + idsum=1008
    + echo ‘Ths sum is 1008‘
    Ths sum is 1008
  • 将当前主机名保存至hostName变量中,主机名如果为空,或者为
    localhost.localdomain则将设置为www.magedu.com
    #!/bin/bash
    hostName=$(hostname)
    [ -z "${hostName}" -o "${hostName}" == "localhost.localdomain" -o "${hostName}" == "locahost" ] && hostnamectl set-hostname www.magedu.com || echo "主机名:${hostName},不要修改"
    [[email protected] scripts]# bash -x hostname.sh
    ++ hostname
    + hostName=localhost.localdomain
    + ‘[‘ -z localhost.localdomain -o localhost.localdomain == localhost.localdomain -o   localhost.localdomain == locahost ‘]‘
    + hostnamectl set-hostname www.magedu.com
  • 编写脚本,通过命令行参数传入一个用户名,判断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)
    useri=$[${userid}%2]
    if [ ${useri} -eq 0 ];then
    echo "$1 ID 是偶数"
    else
    echo "$1 ID 是奇数"
    fi
    [email protected] scripts]# bash -xv   id.sh  user3
    #!/bin/bash
    #脚本判断参数用户ID奇偶类型
    [ $# -lt 1 ] && echo "At least a username " && exit 1
    + ‘[‘ 1 -lt 1 ‘]‘
    ! id $1 && echo "No such user" && exit 2
    + id user3
    uid=1003(user3) gid=1003(user3) groups=1003(user3)
    userid=$(id -u $1)
    ++ id -u user3
    + userid=1003
    useri=$[${userid}%2]
    + useri=1
    if [ ${useri} -eq 0 ];then
     echo "$1 ID 是偶数"
    else
     echo "$1 ID 是奇数"
    fi
    + ‘[‘ 1 -eq 0 ‘]‘
    + echo ‘user3 ID 是奇数‘
    user3 ID 是奇数
  • lvm基本应用以及扩展缩减实现
    (1) LVM原理描述
    LVM是(Logical Volume Manager) 逻辑卷管理的简写,它是Linux环境下对磁盘分区进行管理的一种机制。LVM是建立在硬盘和分区之上的一个逻辑层,屏蔽了底层磁盘布局,便于动态调整磁盘容量来提高磁盘分区管理的灵活性。它可以将一个或多个底层块设备组织成一个逻辑设备的卷组,管理员可以在卷组上随意创建逻辑卷组(logical volumes),并进一步在逻辑卷组上创建文件系统,管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配

(2)LVM 基本术语:

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

(3)LVM基本操作:
(a)pv管理工具:

pvs:简要pv信息显示
pvdisplay:显示pv的详细信息
pvcreate /dev/DEVICE: 创建pv

(b)vg管理工具:

vgs
vgdisplay
vgcreate  [-s #[kKmMgGtTpPeE]] VolumeGroupName  PhysicalDevicePath [PhysicalDevicePath...]
vgextend  VolumeGroupName  PhysicalDevicePath [PhysicalDevicePath...]
vgreduce  VolumeGroupName  PhysicalDevicePath [PhysicalDevicePath...]
先做pvmove
vgremove

(c)lv管理工具:

lvs
lvdisplay
lvcreate -L #[mMgGtT] -n NAME VolumeGroup
vremove /dev/VG_NAME/LV_NAME

(d)扩展逻辑卷:

    # lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME
    # resize2fs /dev/VG_NAME/LV_NAME(e)缩减逻辑卷:
    # 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
    # mount

原文地址:https://blog.51cto.com/14418331/2434553

时间: 2024-11-12 15:29:10

GPT,LVM概念以及shell脚本基础的相关文章

Linux shell脚本基础学习详细介绍(完整版)一

Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Linux 脚本编写基础◆1.1 语法基本介绍 1.1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在这个例子中我们使用/bin/sh来执行程序. 当编辑好脚本时,如果要执行该脚本,还必须使其可执行. 要使脚本可执

续写vim,shell脚本基础编辑,read命令,if与case判断语句,文件查找方式,压缩与解压,

一. Vim续写 ?1.命令扩展模式的位置定界 ??起始位置 cmd 终止位置???Cmd:????y复制????d删除????Gu变大写????gu变小写??例如:0y$命令意味着:????0 先到行头????Y 从这里开始拷贝????$ 拷贝到本行行尾最后一个字符????Ye 从当前位置拷贝到本单词的最后一个字符 ?2.扩展命令模式:地址定界 ? ?# 具体第#行,? ?#1,#2 从开头数第#1行到第#2行? ?#1,+#2 从开头数的第#1行到从第#1行开始数的第#2行? ? ?例:2,

关于shell脚本基础编程第四篇

shell脚本基础编程第四篇本章主要内容:函数 函数 function:             function 名称 { 命令 ; } 或 name () { 命令 ; }           定义 shell 函数.               创建一个以 NAME 为名的 shell 函数.当作为一个简单的命令启用时,           NAME 函数执行调用 shell 的上下文中的 COMMANDs 命令.当 NAME           被启用时,参数作为 $1...$n 被传递

Linux shell脚本基础学习详细介绍(完整版)二

详细介绍Linux shell脚本基础学习(五) Linux shell脚本基础前面我们在介绍Linux shell脚本的控制流程时,还有一部分内容没讲就是有关here document的内容这里继续. Linux shell脚本基础已经被分成好几个部分了,这里对控制流程的内容也就马上讲完了,这是最后一部分关于here document,这里举例稍微有点复杂,我们慢慢来分析这个复杂Linux shell脚本. 6. Here documents 当要将几行文字传递给一个命令时,here docu

shell脚本基础学习(转)

看到别人的学习总结,觉得不错转了过来(转自TryFly) 一.shell脚本基础 ? ?shell脚本是利用shell的功能所写的一个程序,这个程序是使用纯文本文件,将一些shell的语法与指令写在里面,然后用正则表达式,管道命令以及重定向向等功能,以达到我们所想要的处理目的.它的基本用途有: 1.自动化常用命令 2.执行系统管理和故障排除 3.创建简单的应用程序 4.处理文本或文件 ... 二.创建shell脚本 第一步.使用文本编辑器来创建文本文件 第一行必须包括shell 声明序列:#!

shell脚本基础进阶(四)----作业

20150913-15作业 1.描述shell程序的运行原理(可附带必要的图形说明) shell脚本基础进阶(一)----shell介绍 2.总结shell编程中所涉及到的所有知识点(如:变量.语法.命令状态等等等,要带图的哟) shell脚本基础进阶(二)----变量及运算符 3.总结课程所讲的所有循环语句.条件判断的使用方法及其相关示例:(if (jpg|png is not exist):echo "You say a XX") shell脚本基础进阶(三)----流程控制语句

Linux运维之道之ENGINEER1.4(shell脚本基础)

ENGINEER1.4 SHELL脚本基础 认识shell环境 bash shell的使用方式 交互式: --人工干预,智能化程度高 --逐条解释执行,效率低 非交互式: --需要提前设计,智能化难度大: --批量执行,效率高: --方便在后台及悄悄地执行: 什么是shell脚本:提前设计可执行语句,用来完成特定任务的文件 --解释型程序 --顺序,批量执行 规范shell脚本的一般组成: #!环境声明 #注释文本 可执行代码 ----------------------------------

Shell脚本基础(一)

前言:随着Linux系统在企业中的应用越来越多,服务器的自动化管理也越来越变得重要,在一些复杂的Linux维护工作中,大量的重复性的输出和交互式操作不但费时费力,而且容易出错,所以Shell脚本,可以批量处理,自动化完成一系列维护工作,大大减轻管理员的负担. 一,Shell脚本基础知识1,编写第一个shell脚本1),vim first.sh[[email protected] ~]# mkdir /shell //创建一个shell目录[[email protected] ~]# vim fi

linux——Shell 脚本基础篇(变量类型,变量操作,定义,运算与逻辑关系)

Shell 脚本基础 1.变量 什么是变量 #a=1 # echo $a 1 变量:可以变化的量 1.2变量名称注意事项 变量名不能以数字开头 不能与系统中已有的环境变量重名,尽量不要全部使用大写,尽量不要使用"_"下划线开头 最好做到见名知意 不能使用程序中的保留字,列如if,for等 1.3变量类型 字符型 数值型 整型浮点型 布尔型 条件是和否 #$echo $a 引用 abc 撤销 unset +(变量名)a 1.4变量操作 * 设置变量 * 引用变量 * 撤销变量 单引号和双