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分区
    [root@localhost ~]# 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创建文件系统:

    [root@localhost ~]# 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
    [root@localhost ~]# 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目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳。并设置开机自动挂载

    [root@localhost ~]# mkdir -p /mydata
    [root@localhost ~]# vim /etc/fstab
    /dev/sda6                        /mydata                 ext4    defaults,noatime,noexec 0 0
    [root@localhost ~]# mount -a
    [root@localhost ~]# 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分区,并启用:
    [root@localhost ~]# 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.
    [root@localhost ~]# mkswap /dev/sda7 
    Setting up swapspace version 1, size = 1048572 KiB
    no label, UUID=ba42d9ae-41a0-4829-bd14-a32834cf6ec9
    [root@localhost ~]# swapon /dev/sda7
    [root@localhost ~]# 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"
    [root@localhost 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},不要修改"
    [root@localhost 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
    root@localhost 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可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配
    GPT,LVM概念以及shell脚本基础

(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

猜你喜欢

转载自blog.51cto.com/14418331/2434553