- 描述GPT是什么,应该怎么使用。
- 创建一个10G的分区,并格式化为ext4文件系统。要求:2、创建一个10G的分区,并格式化为ext4文件系统。要求:
(1)block大小为2048,预留空间20%,卷标为MYDATA, (2)挂载至/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳。 (3)可开机自动挂载。 - 创建一个大小为1G的swap分区,并启用。
- 编写脚本计算/etc/passwd文件中第10个用户和第20个用户id号之和。
- 将当前主机名保存至hostName变量中,主机名如果为空,或者为localhost.localdomain则将设置为www.magedu.com
- 编写脚本,通过命令行参数传入一个用户名,判断id号是偶数还是奇数。
- lvm基本应用以及扩展缩减实现。
描述GPT
GPT:GUID(Globals Unique ldentifiers)partition table 支持128个分区,使用64位,支持8Z(512Byte/block)64Z(4096Byte/block)
使用128位UUID(Universally Unique ldentifier)表示磁盘和分区 GPT分区表自动备份在头和尾两份,并有CRC校验位
UEFI(统一扩展固件接口)硬件支持GPT,使操作系统启动
globals 全局变量
如果一块大小512字节 支持8Z 如果一块大小4096字节,就支持64Z
GUID (globals unique identifiers全球唯一的标识符) 的分区表 Partition table
8z(亿)
UUID (universally unique ldentifier 通用唯一的标识符)
一个16位进制数相当于4个2进制位 占4位bit 总共32
32*4=128位
保护性的MBR,是为了一些旧软件识别不出新的GPT分区,就会认为是一个无用硬盘,操作时可能会造成数据的破坏
可以分128的分区表
第二部分就是分区的位置
不用刻意备份,背后有一个备份分区表
它具有如下优点:
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分区格式。
创建一个10G的分区,并格式化为ext4文件系统,要求:
(1)block大小为2048,预留空间20%,卷标为MYDATA,
(2)挂载至/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳。
(3)可开机自动挂载。
1、分出一块10G的磁盘空间出来
fdisk -n 1 -p 1 10G
2、创建文件系统
mkfs.ext4 -b 2048 -m 20 -L MYDATA
3、挂载/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳。
mkidrr /mydata
mount -o noexec noatime /mydata /dev/sdb1
4、设置开机自动挂载
vim /etc/fstab
UUID=5a64692e-8e10-4a1f-a32d-0bddf8c4fcb8 /mydata ext4 defaults,acl,noexec,noatime 0 0
创建一个大小为1G的swap分区,并启用
1、创建一个大小为1G的swap分区,
[root@CA ~]#fdisk /dev/sda3
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.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xd41f82e8.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-62914559, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-62914559, default 62914559): +1G
Partition 1 of type Linux and of size 1 GiB is set
Command (m for help): p
Disk /dev/sda3: 32.2 GB, 32212254720 bytes, 62914560 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xd41f82e8
Device Boot Start End Blocks Id System
/dev/sda3p1 2048 2099199 1048576 83 Linux
Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): l
Hex code (type L to list all codes): 82
Changed type of partition 'Linux' to 'Linux swap / Solaris'
Command (m for help): p
Disk /dev/sda3: 32.2 GB, 32212254720 bytes, 62914560 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xd41f82e8
Device Boot Start End Blocks Id System
/dev/sda3p1 2048 2099199 1048576 82 Linux swap / Solaris
2.第二步创建swap 分区
mkswap /dev/sdb1 -L swap_sdb1
3.启用分区
#echo “UUID=7e1b513d-d3bb-4d64-aee0-56ac3417a5fe” swap swap defaults 0 0 >>/etc/fstab
4.挂载生效
swapon -a
5.swapon -s查看生效
编写脚本计算/etc/passwd文件中第10个用户和第20个用户id号之和
#!/bin/bash
#
#===============================================
#Author: MMMMM
#QQ: xxxxxxx
#Date: 2019-03-04
#Filename: 10+20id.sh
#URL: xxxxxxxxxx
#Description: The test script
#Copyright(c): 2019ALL rights reserved
#================================================
nums=`awk '{print NR}' /etc/passwd |tail -n1`
while [ -z $user3 ] ;do
read -p "Please input id: " num1
if [ -z $num1 ] ;then
echo "please not empty"
echo "总id数是 $nums"
elif [ "$num1" -gt "$nums" ] ;then
echo "num1 is too big"
else
echo "输入的是第 $num1 个用户"
user1=`grep -n ".*" /etc/passwd |sed -r "s/([0-9]+):.*:.*:([0-9]+):.*/\1,\2/" |grep
^$num1, |cut -d, -f2`
if [ -n $num1 ] ;then
read -p "Please input idi2: " num2
if [ -z $num2 ] ;then
echo "please not empty"
echo "总共$nums 个用户"
elif [ "$num2" -gt "$nums" ] ;then
echo num2 is too big
else
echo "输入的是第$num2 个用户"
user2=`grep -n ".*" /etc/passwd |sed -r "s/([0-9]+):.*:.*:([0-9]+):.*/\1,\2/" |grep
^$num2, |cut -d, -f2`
fi
fi
if [ -n $user1 -a -n $user2 ];then
user3=`echo $user1+$user2|bc`
fi
fi
user3=`echo $user1+$user2|bc`
done
echo count is $user3
执行效果
[root@centos7 ~]#./10+20id.sh
Please input id: 10
输入的是第 10 个用户
Please input idi2: 29
输入的是第29 个用户
count is 107
将当前主机名保存至hostName变量中,主机名如果为空,或者为localhost.localdomain则将设置为www.magedu.com
name=`hostname`
echo "current hostname is $name"
if [ -z $name -o $name == "localhost.localdomain" ];then
`hostname magedu.com;exit`
fi
exit
编写脚本,通过命令行参数传入一个用户名,判断id号是偶数还是奇数
[root@CA ~]#vim testid.sh
#!/bin/bash
#
#===============================================
#Author: MMMMM
#QQ: xxxxxxx
#Date: 2019-03-08
#Filename: testid.sh
#URL: xxxxxxxxxx
#Description: The test script
#Copyright(c): 2019ALL rights reserved
#================================================
read -p "Please input the idname: " id
if [ -z $id ];then
echo 'please not empty'
elif [ `id $id &>/dev/null ; echo $?` -eq 1 ] ;then
echo " $id is not exist"
else
name= grep $id /etc/passwd
nameid=`grep -E "^$id\>" /etc/passwd|cut -d: -f3`
echo $name,$nameid
if [ `echo $nameid%2 |bc ` -eq 0 ];then
echo 'oushu'
else
echo jishu
fi
fi
lvm基本应用以及扩展缩减实现
逻辑卷管理器(LVM)
允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小
允许在多个物理设备间重新组织文件系统
将设备指定为物理卷
用一个或者多个物理卷来创建一个卷组
物理卷是用固定大小的物理区域(Physical Extent,PE)来定义的
在物理卷上创建的逻辑卷,是由物理区域(PE)组成
可以在逻辑卷上创建文件系统
LVM介绍
LVM:logical volume manger,version:2
dm:device mapper:将一个或多个底层块设备组织成一个逻辑块设备的模块
设备名:/dev/dm-#
软链接:
/dev/mapper/VG_NAME-LV_Name
/dev/mapper/vol0-root
/dev/VG_NAME/LV_NAME
/dev/vol0/root
vg管理工具
显示卷组
vgs
vgdisplay
创建卷组
vgcreate [-s #【kKmMgGtTpPeE】]VolumeGroupName PhysicalDevicePath
[PhysicalDevicePath…]
管理卷组
vgextend VolumeGroupName PhysicalDevicePath[PhysicalDevicePath…]
vgreduce VolumeGroupName PhysicalDevicePath[PhysicalDevicePath…]
删除卷组
先做pvmove,再做vgremove
lvm逻辑卷相当于普通分区来讲,优势是方便扩展空间
我们创建文件系统,分区分完了,是无法修改分区大小的
pvcreate
先把普通的硬盘或者分区变成物理卷,physical volumes 物理卷
相当于给硬盘或者分区贴个标签,表明将来不是分区用了,是当逻辑卷用
有4个硬盘或者分区就会形成4个物理卷,
vgcreate
volume group 卷组
把四个物理卷的分区逻辑的组合成一个大的单位=一个大硬盘
lvcreate
创建逻辑卷,等于吧之前卷组的空间拿出一部分作为逻辑卷分区
PE physical extent 物理的扩展盘区 ~= raid chunk
1.先把普通的分区和硬盘变成物理卷 pvcreate
2.通过vgcreate 把已经有的物理卷加入到卷组
3.再从卷组中分出一部分作为逻辑卷
创建逻辑卷
1、先把普通的分区和硬盘变成物理卷 pvcreate
[root@telnet-server ~]#pvcreate /dev/sdb{2,3}
Physical volume "/dev/sdb2" successfully created.
Physical volume "/dev/sdb3" successfully created.
root@telnet-server ~]#pvdisplay
--- Physical volume ---
PV Name /dev/sdb2
VG Name vg1
PV Size 1.00 GiB / not usable 16.00 MiB
Allocatable yes
PE Size 16.00 MiB
Total PE 63
Free PE 63
Allocated PE 0
PV UUID nXGojh-PqDe-m530-uRz5-WxCy-mnDg-q5sekn
--- Physical volume ---
PV Name /dev/sdb3
VG Name vg1
PV Size 1.00 GiB / not usable 16.00 MiB
Allocatable yes
PE Size 16.00 MiB
Total PE 63
Free PE 63
Allocated PE 0
PV UUID bSXF7F-wx7I-Biu4-GUTM-lldZ-YcJ2-kBRfjt
2、通过vgcreate 把已经有的物理卷加入到卷组,再从卷组中分出一部分作为逻辑卷
vgs查看现有的卷组 vgcreate创建卷组,把单个独立的分区硬盘组合到一块
指定卷组名 vg1 指定哪些成员分区 /dev/sdb{2,3} -s指定PE的大小
[root@telnet-server ~]#vgcreate -s 16M /dev/sdb{2,3}
/dev/sdb2: already exists in filesystem
Run `vgcreate --help' for more information.
[root@telnet-server ~]#vgcreate -s 16M vg1 /dev/sdb{2,3}
WARNING: Device for PV rjfqwl-m8BK-Yhu5-LB06-BOZ1-J0cI-L1gT6h not found or rejected by a filter.
Couldn't find device with uuid rjfqwl-m8BK-Yhu5-LB06-BOZ1-J0cI-L1gT6h.
Volume group "vg1" successfully created
[root@telnet-server ~]#vgs
WARNING: Device for PV rjfqwl-m8BK-Yhu5-LB06-BOZ1-J0cI-L1gT6h not found or rejected by a filter.
Couldn't find device with uuid rjfqwl-m8BK-Yhu5-LB06-BOZ1-J0cI-L1gT6h.
VG #PV #LV #SN Attr VSize VFree
centos7vg0 2 1 0 wz-pn- 2.99g 1.99g
vg0 3 1 0 wz--n- 20.98g 10.98g
vg1 2 0 0 wz--n- <1.97g <1.97g
[root@telnet-server ~]#vgdisplay
--- Volume group ---
VG Name vg1
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size <1.97 GiB
PE Size 16.00 MiB
Total PE 126
Alloc PE / Size 0 / 0
Free PE / Size 126 / <1.97 GiB
VG UUID 2PfeLx-nYZK-jEXP-XtkH-0jKQ-1XNc-Py08Kf
--- Volume group ---
VG Name vg0
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 11
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 0
Max PV 0
Cur PV 3
Act PV 3
VG Size 20.98 GiB
PE Size 16.00 MiB
Total PE 1343
Alloc PE / Size 640 / 10.00 GiB
Free PE / Size 703 / 10.98 GiB
VG UUID f9eFqr-xkcT-Yzpx-rNZs-1Y3O-DtNh-fpHLsX
WARNING: Device for PV rjfqwl-m8BK-Yhu5-LB06-BOZ1-J0cI-L1gT6h not found or rejected by a filter.
Couldn't find device with uuid rjfqwl-m8BK-Yhu5-LB06-BOZ1-J0cI-L1gT6h.
--- Volume group ---
VG Name centos7vg0
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 17
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 0
Max PV 0
Cur PV 2
Act PV 1
VG Size 2.99 GiB
PE Size 4.00 MiB
Total PE 766
Alloc PE / Size 256 / 1.00 GiB
Free PE / Size 510 / 1.99 GiB
VG UUID Jn0uMM-24t0-J41A-0Ny3-tnzJ-s2xA-2MjX0P
3、创建逻辑卷 lvcreate -n 卷名 lv1 , -L是以容量为单位 -l是以PE个数为单位 (写小l更精确)
[root@telnet-server ~]#lvcreate -n lv1 -l 100 vg1
WARNING: xfs_external_log signature detected on /dev/vg1/lv1 at offset 12288. Wipe it? [y/n]: y
Wiping xfs_external_log signature on /dev/vg1/lv1.
Logical volume "lv1" created.
[root@telnet-server ~]#lvs
WARNING: Device for PV rjfqwl-m8BK-Yhu5-LB06-BOZ1-J0cI-L1gT6h not found or rejected by a filter.
Couldn't find device with uuid rjfqwl-m8BK-Yhu5-LB06-BOZ1-J0cI-L1gT6h.
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
centos7lv0 centos7vg0 -wi-a----- 1.00g
lv0 vg0 -wi-a----- 10.00g
lv1 vg1 -wi-a----- 1.56g
[root@telnet-server ~]#lvdisplay
--- Logical volume ---
LV Path /dev/vg1/lv1
LV Name lv1
VG Name vg1
LV UUID nvFDSx-Zfn4-iICF-Ibly-ufDh-yGcQ-RzXtSD
LV Write Access read/write
LV Creation host, time telnet-server, 2019-03-11 00:37:01 +1200
LV Status available
# open 0
LV Size 1.56 GiB
Current LE 100
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
--- Logical volume ---
LV Path /dev/vg0/lv0
LV Name lv0
VG Name vg0
LV UUID YnW5f3-LspP-2egr-j09s-kAXK-UNIe-spTVO7
LV Write Access read/write
LV Creation host, time centos6.lmhc, 2019-01-25 04:24:27 +1200
LV Status available
# open 0
LV Size 10.00 GiB
Current LE 640
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
WARNING: Device for PV rjfqwl-m8BK-Yhu5-LB06-BOZ1-J0cI-L1gT6h not found or rejected by a filter.
Couldn't find device with uuid rjfqwl-m8BK-Yhu5-LB06-BOZ1-J0cI-L1gT6h.
--- Logical volume ---
LV Path /dev/centos7vg0/centos7lv0
LV Name centos7lv0
VG Name centos7vg0
LV UUID 6C3dEz-Xdfa-yI61-wmG2-ykxD-Bgoe-5KxUk0
LV Write Access read/write
LV Creation host, time centos7.lmhc, 2019-01-29 09:31:29 +1200
LV Status available
# open 0
LV Size 1.00 GiB
Current LE 256
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1
4、创建完逻辑卷需要创建文件系统,blkid查看是否有文件系统
[root@telnet-server ~]#blkid /dev/vg1/lv1 #无文件系统
[root@telnet-server ~]#mkfs.ext4 /dev/vg1/lv1 创建文件系统
[root@telnet-server ~]#blkid /dev/vg1/lv1 #可以使用文件系统
/dev/vg1/lv1: UUID="575a996f-4e4b-4c52-aff5-cc0e32406129" TYPE="ext4"
扩展逻辑卷
1、给逻辑卷扩展,需要先扩展卷组,加一块硬盘
[root@telnet-server ~]#echo ‘- - -’ >/sys/class/scsi_host/host2/scan
2、先将新加的硬盘变成物理卷
[root@telnet-server ~]#pvcreate /dev/sdd
3、扩展卷组,把新的物理卷加入卷组 vgextend
[root@telnet-server ~]#vgextend vg1 /dev/sdd
4、扩展逻辑卷,把卷宗里的空间分配到逻辑卷 lvextend 逻辑卷的PE叫LE
[root@telnet-server ~]#lvextend -L +5G /dev/vg1/lv1
5、df挂载还是没有增加空间是因为原来的逻辑卷加进去没有文件系统无法存数据
所以需要同步文件系统 resize2fs
[root@telnet-server ~]#lresize2fs /dev/vg1/lv1
注意:lvextend -r -l -r扩容的时候顺便把文件系统也同步了
缩减逻辑卷
缩小空间是危险的,很容易丢失数据, 如果要压缩,一定要先备份再压缩 centos xfs系统只能扩,不能缩;
缩减必须是离线缩减,所以必须取消挂载
1.取消挂载 umount
[root@telnet-server ~]#umount /dev/vg1/lv1
2.缩减文件系统(先做文件系统检查 e2fsck -f /dev/vg0/lv0)
[root@telnet-server ~]#fsck -f /dev/vg1/lv1
[root@telnet-server ~]#resize2fs /dev/vg1/lv1 10G #缩减文件系统到10g
3.缩减逻辑卷 缩减的空间必须跟之前的文件系统缩减一致
[root@telnet-server ~]#lvreduce -L 10G /dev/vg1/lv1
删除卷宗
删除vg 卷宗 中pv 物理卷
pvmove /dev/sdd
vgreduce vg0 /dev/sdd 从vg0卷宗中删除dev/sdd
pvremove /dev/sdd
**pvcreate 创建物理卷
vgcreate 创建卷组
lvcreate创建逻辑卷
lvdisplay查看逻辑卷
mkfs.xfs /dev/vg0/lv0 创建xfs文件系统
mkdir /mnt/lv0 创建文件夹
mount /dev/vg0/lv0 /mnt/lv0挂载
**
vgrename 修改卷组名称