1、描述GPT是什么,该怎么使用
(转载)GPT是GUID Partition Table,GUID分区表。GUID(Globals Unique Identifiers)全局唯一识别。GPT支持128个分区,使用64位,支持8ZB(512Byte/block) 以及64ZB(4096Byte/block)大小的磁盘。
使用128位UUID表示磁盘和分区,GPT分区表自动备份在头和尾两份,并有CRC校验位。具体分为4个区域:
EFI信息区(含保护性MRB区和GPT头)、分区表、GPT分区(最大可有128个分区)、备份分区表信息
UEFI(统一扩展固件接口)硬件支持GPT,它的开机过程是:开机-->UEFI初始化-->引导操作系统-->进入系统
相关的使用命令:
1.gdisk创建GPT分区(交互式创建)与fdisk相似
-l /dev/sdx 查看分区信息
以下为交互菜单的信息
(?|m) 显示交互菜单与帮助
n 建立分区
d 删除分区
c 更改分区名字
I 显示分区的详细信息
p 显示分区信息
t 转换分区类型
a 将指定分区设置/取消 活动分区
l 查看分区类型
o 重建分区表
v 验证分区表,显示剩余没有被分区划分的扇区数量
q 退出不保存,不保存,所有的修改都不生效
w 退出并保存
2.parted命令(交互式或命令式,一旦操作即时生效,使用时请注意)
parted /dev/sdb mklabel gpt 给指定的磁盘指定GPT的分区方式
parted /dev/sdb mkpart primary 1 200(单位默认为M)创建新分区
parted /dev/sdb print 显示分区信息
parted /dev/sdb rm 1 删除分区
parted -l /dev/sdb 查看分区
3.partprobe同步硬盘上分区表到内存中。当两者不同步时使用。
2、创建一个10G的分区,并格式化为ext4文件系统
(1)block大小为2048,预留20%,卷标为MYDATA
(2)挂载至/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳
(3)可开机挂载
创建分区:使用fdisk命令指定要分区的磁盘
查看分区:cat /proc/partitions
创建文件系统:
挂载分区,并指定属性:
挂载查看是否成功:
设置开机自动挂载:
除根文件系统以外的其它文件系统,能够开机时自动挂载需要配置:/etc/fstab
mount -a :可自动挂载定义在此文件中的所支持自动挂载的设备
每行定义一个要挂载的文件系统相关属性,一共有6个字段分别对应的意义:
(1)要挂载的设备:
/dev/DEVICE
LABEL
UUID
伪文件系统:如sysfs,proc,tmpfs
(2)挂载点:
swap类型的设备的挂载点为swap
(3)文件系统类型:
ext4
ext3
ext2
xfs
(4)挂载选项:
defaults:使用默认挂载选项
常用选项:defaults,acl,noatime,noexec
(5)转储频率:
0:从不备份
1:每天备份
2:每隔一天备份
(6)自检次序:
0:不自检
1:首先自检,通常只能是根文件系统可用1
2:次级自检
3、创建一个大小为1G的swap分区, 并启用
首先创建一个1G的分区,指定磁盘ID号为82
使用mkswap命令,设置为swap分区:
查看是否成功:
swapon命令:启动swap分区
swapoff命令:关闭swap分区
4、编写脚本计算/etc/passwd 文件中第10个用户和第20个用户的id之和
第一版:
#!/bin/bash
#计算/etc/passwd文件中第10个用户和第二十个用户
user10=$( cat /etc/passwd |head -10 |tail -1 |cut -d: -f3 )
echo "user10:$user10"
user20=$( cat /etc/passwd |head -20 |tail -1 |cut -d: -f3 )
echo "user20:$user20"
echo "sum ID:$(($user10+$user20))"
执行脚本测试:
第二版:
#awk -F: 'BEGIN{sum=0}{if(NR==10 || NR==20)sum=sum+$3}END{print sum}' /etc/passwd
命令解释:
-F: 指定分隔符为:
BEGIN{sum=0}:首先申明变量sum值为0
{if(NR==10 || NR==20)sum=sum+$3}:NR是awk命令的内置变量,表示为第10行或者20行时,把$3的值,加入到sum当中。($3就为/etc/passwd文件的第三字段,ID号)
END{print sum}:最后打印sum的值,这里的变量不用加$号。
5、将当前主机名保存至hostName变量中,主机名如果为空,或为localhost.localdomain则将设置为 www.magedu.com
hostName=$(hostname)
[ -z "$hostName" -o "$hostName"=="localhost.localdomain" ] && hostname www.magedu.com
6、编写脚本,通过命令行 参数传入一个用户名,判断id号是偶数还是奇数;
#!/bin/bash
#通过命令行参数给定一个用户名,判断其ID是偶数还是奇数
if [ $# -lt 1 ] ;then
echo "please enter one parameter"
exit 1
fi
num1=$(id -u $1)
let ID=$num1%2
if [ $ID -eq 0 ] ;then
echo "$1:ID even number"
else
echo "$1:ID odd number"
fi
执行脚本测试:
7、lvm基本应用以及扩展缩减实现
pv管理工具:
pvs命令:简要pv信息显示
pvdisplay命令:显示pv的详细信息
pvcreate命令: pvcreate /dev/device :创建pv
pvremove命令:pvremove /dev/device :移除pv
pvmove命令:pvmove /dev/device :移动pv
vg管理工具:
vgs命令;简要vg信息显示
vgdispaly命令:显示vg的详细信息
vgcreate命令:vgcreate vg_name /dev/device :创建vg:先指定vg_name,在指定要创建设备
-s#:指定pe大小
vgextend命令:vgextend VG_NAME /dev/device :添加/dev/device 到VG_NAME
vgreduce命令:vgreduce VG_NAME /dev/device:缩减vg,需要先做pvmove
vgremove命令:vgmove /dev/device
lv管理管理工具:
lvs命令:简要lvs信息显示
lvdispaly命令:显示lv详细信息
lvcreate命令:创建lv:lvcreate -L #[mMgGtT] -n lv_name vg_name
lvremove命令:移除lv
列如:
创建:lvcreate -L 3G -n LV_NAME VG_NAME :指定大小为3G,指定lv,在vg中创建。
格式化:mke2fs -t ext4 -b 1024 -L HELLO /dev/VG_NAME/LV_NAME
挂载:mount /dev/VG_NAME/LV_NAME /media
扩展逻辑卷:(支持在线扩展)
lvextend命令: lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME
创建:lvextend -L 5G /dev/VG_NAME/LV_NAME :扩展为5G
创建:lvextend -L +5G /dev/VG_NAME/LV_NAME :在原来的大小上再加5G
resize2fs命令:扩展逻辑卷
resize2fs /dev/VG_NAME/LV_NAME
注意:上面的扩展方法只适合ext系列,如果是xfs文件系统的话,需要按如下方法扩容:
xfs_growfs /dev/VG_NAME/LV_NAME
缩减逻辑卷:
卸载:umount /dev/VG_NAME/LV_NAME
强制检测:e2fsck -f /dev/VG_NAME/LV_NAME
缩减逻辑边界:resize2fs /dev/VG_NAME/LV_NAME 5G :缩减至5G
修改物理边界:lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME
重新挂载:mount /dev/VG_NAME/LV_NAME /test
快照:快照就是某一时刻立即创建一个对原卷文件元数据的监视器,当原卷上文件元数据要变化的时候,先把原文件复制一份到快照卷上,而没有变化的就指向原卷上的文件数据。
快照的相关命令:
创建快照:lvcreate -s -L 1G -p r -n LV_NAME_snapshoot /dev/VG_NAME/LV_NAME
练习:
1: 创建一个至少有两个pv组成的大小为20G的名为testvg的VG,要求PE大小为16MB,而后在卷组中创建大小为5G的逻辑卷testlv,挂载至/users目录
创建pv:[root@bogon ~]# pvcreate /dev/sdb{1,2}
创建vg:[root@bogon ~]# vgcreate -s 16m testvg /dev/sdb{1,2} -s :指定PE大小
创建lv:[root@bogon ~]# lvcreate -L 5G -n testlv testvg -L:指定大小 -n:指定名字
格式化:[root@bogon ~]# mke2fs -t ext4 /dev/testvg/testlv
挂载:[root@bogon~]# mount /dev/testvg/testlv /users
2:新建用户archlinux,要求其家目录为/users/archlinux,而后su切换至archlinux用户,复制、etc/pam.d目录至自己的家目录
创建用户: [root@bogon users]# useradd -d /users/archlinux archlinux
复制:[archlinux@bogon ~]$ cp -r /etc/pam.d/ ./
3:扩展testlv至7G,要求archlinux用户的文件不能丢失
扩展物理边界:[root@bogon ~]# lvextend -L 7G /dev/testvg/testlv
扩展逻辑边界:resize2fs /dev/testvf/testlv
注意:resize2fs 至合适etx文件系统,如果是xfs文件系统需要使用 xfs_growfs /dev/VG_NAME/LV_NAME
查看用户是否丢失资料:
4:收缩testlv至3G,要求archlinux用户的文件不能丢失
首先卸载:umount /dev/testvg/testlv
强制文件检测:e2fsck -f /dev/testvg/testlv
缩减逻辑边界: resize2fs /dev/testvg/testlv 3G
缩减物理边界:lvreduce -L 3G /dev/testvg/testlv
重新挂载:mount /dev/testvg/testlv /users/
查看文件:
5.对testlv创建快照,并尝试基于快照备份数据,验证快照的功能
创建快照:lvcreate -s -p r -L 1G -n testlv_snap /dev/testvg/testlv
挂载,查看是否成功: