您的位置:首页 > 运维架构 > Shell

第五周作业 磁盘分区、shell脚本、lvm逻辑卷

2018-12-17 14:14 344 查看

一、什么是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文件系统。要求

  1. 块大小为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
  2. 挂载至/mydata,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳。
    mkdir /mydata
    mount /dev/sda3 /mydata/ -o noexec,noatime
  3. 可开机自动挂载
    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
[root@localhost 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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shell lvm 磁盘管理