1、描述GPT是什么,应该怎么使用。
定义:
GPT(GUID Partition Table)中文名称叫做全局唯一标识分区表。它和MBR分区的区别就是引导方式和分区结构的不同;支持硬盘分区的容量不同,MBR分区结构最高支持到2T硬盘,2T及以上分区就需要GPT分区结构;MBR分区直接存储数据和引导记录,GPT分区的数据和引导记录是分开存储的,并且理论上支持无限量的分区;GPT在win10系统中可以支持128个分区,最高可以管理18EB的磁盘。win10操作系统可以UEFI启动,也可以MBR启动;
使用:
1. gdisk 创建GPT分区
2.partprobe 重新设置内存中的内核分区表版本
3.gdisk 管理GPT分区
4.cat /proc/partations 查看内核是否已经识别新的分区
2、创建一个10G的分区,并格式化为ext4文件系统。要求:(1) block大小为2048,预留空间20%,卷标为 MYDATA,(2)挂载至/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳。(3)可开机自动挂载。
(1)创建一个10G的分区
[root@localhost centos]# fdisk /dev/sdb
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): p
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 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: 0x9cb989a7
Device Boot Start End Blocks Id System
/dev/sdb1 2048 10000000 4998976+ 83 Linux
(2)创建文件系统
[root@localhost centos]# mke2fs -t ext4 -L 'MYDATA' -b 2048 -m 20 /dev/sdb1
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
313344 inodes, 2499488 blocks
499897 blocks (20.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=271056896
153 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
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
(3)创建目录,设置相关权限并挂载
[root@localhost centos]# mkdir /mydata
[root@localhost centos]# mount -o noatime,nodiratime,noexec /dev/sdb1 /mydata/
[root@localhost centos]# cat /proc/mounts
/dev/sdb1 /mydata ext4 rw,seclabel,noexec,noatime,nodiratime,data=ordered 0 0
(4)设置开机自动挂载
[root@localhost centos]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Tue Feb 25 16:44:28 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=4c3372aa-71ea-4cce-b00b-898e57ba3576 /boot xfs defaults 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/dev/sdb1 /mydate ext4 defaults,noatime,nodiratime,noexec 0 0
~
~
3、创建一个大小为1G的swap分区,并启用。
[root@localhost centos]# fdisk /dev/sdb
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): p
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 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: 0x9cb989a7
Device Boot Start End Blocks Id System
/dev/sdb1 2048 4196351 2097152 83 Linux
/dev/sdb2 4196352 8390655 2097152 82 Linux swap / Solaris
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@localhost centos]# mkswap /dev/sdb2 #创建1G的swap分区
Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=0f51f14e-0126-4b4c-a9e4-673c6b8f8e48
[root@localhost centos]# swapon /dev/sdb2 #启用swap分区
4、编写脚本计算/etc/passwd文件中第10个用户和第20个用户id号之和
#!/bin/bash
[ "$#" -ne 2 ] && echo "the arg number is not 2" && exit 判断参数是否是两个
[[ ! "$1" =~ ^[[:digit:]]+$ ]] && echo "$1 is not number" && exit 判断两个参数是否是数字
[[ ! "$2" =~ ^[[:digit:]]+$ ]] && echo "$2 is not number" && exit
uid1=`head -n $1 /etc/passwd |cut -d: -f3 |tail -n 1` 获取两个参数
uid2=`head -n $2 /etc/passwd |cut -d: -f3 |tail -n 1`
let sum=uid1+uid2
echo $sum
5、将当前主机名保存至hostName变量中,主机名如果为空,或者为 1ocalhost. localdomain则将设置为 www. magedu. com
#!/bin/bash
hostName=$hostname
[ -z "$hostName" -o "$hostName" == "localhost.localdomain" ] && hostName="www. magedu. com"
6、编写脚本,通过命令行参数传入一个用户名,判断id号是偶数还是奇数。
#!/bin/bash
#
[ $# -lt 1 ] && echo "at leaset one args" && exit
! id $1 &> /dev/null && echo "no users" && exit
userid=$(id -u $1)
if [ $[$userid%2] -eq 0 ]; then
echo "the user id is even number!"
else
echo "the user id is odd number!"
fi
7、LVM基本应用以及扩展缩减实现。
基本应用:
(1)允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小
(2)允许在多个物理设备间重新组织文件系统 :
将设备指定为物理卷
用一个或者多个物理卷来创建一个卷组
物理卷是用固定大小的物理区域(Physical Extent,PE)来定义的
在物理卷上创建的逻辑卷 是由物理区域(PE)组成
可以在逻辑卷上创建文件系统
扩展缩减实现:
(1)创建PV,VG,LV
[root@localhost centos]# fdisk /dev/sdb #创建分区,并改为lvm类型
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): p
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 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: 0x9cb989a7
Device Boot Start End Blocks Id System
/dev/sdb1 2048 4196351 2097152 83 Linux
/dev/sdb2 4196352 20971519 8387584 5 Extended
/dev/sdb5 4198400 6295551 1048576 8e Linux LVM
/dev/sdb6 6297600 8394751 1048576 8e Linux LVM
/dev/sdb7 8396800 10493951 1048576 8e Linux LVM
/dev/sdb8 10496000 12593151 1048576 8e Linux LVM
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@localhost centos]# partprobe
Warning: Unable to open /dev/sr0 read-write (Read-only file system). /dev/sr0 has been opened read-only.
[root@localhost centos]# ls /dev/sdb*
/dev/sdb /dev/sdb1 /dev/sdb2 /dev/sdb5 /dev/sdb6 /dev/sdb7 /dev/sdb8
[root@localhost centos]# pvcreate /dev/sdb{5,6} #以sdb5,6创建为PV物理卷
Physical volume "/dev/sdb5" successfully created.
Physical volume "/dev/sdb6" successfully created.
[root@localhost centos]# vgcreate -s 16M myvg /dev/sdb{5,6} #创建myvg卷组
Volume group "myvg" successfully created
[root@localhost centos]# lvcreate -n mylv -L 1.5G myvg #创建1.5G的逻辑卷mylv
Logical volume "mylv" created.
[root@localhost centos]# lvs #查看确认创建成功
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home centos -wi-ao---- 7.80g
root centos -wi-ao---- 10.00g
swap centos -wi-ao---- 2.00g
mylv myvg -wi-a----- 1.50g
[root@localhost centos]# mke2fs /dev/myvg/mylv #在创建的逻辑卷上创建ext2文件系统
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
98304 inodes, 393216 blocks
19660 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=402653184
12 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Allocating group tables: done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
[root@localhost lvm]# mount /dev/myvg/mylv /mnt/lvm #将创建好的文件系统挂载到 /mnt/lvm目录下
[root@localhost lvm]# cp /etc/fstab ./ #复制/etc/fstab 文件到该逻辑卷上,看能否正常打开
[root@localhost lvm]# ls
fstab
[root@localhost lvm]# cat fstab #文件正常打开,说明创建成功
#
# /etc/fstab
# Created by anaconda on Tue Feb 25 16:44:28 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=4c3372aa-71ea-4cce-b00b-898e57ba3576 /boot xfs defaults 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
(2)lvm的扩展
[root@localhost lvm]# pvcreate /dev/sdb7 #创建PV物理块sdb7
Physical volume "/dev/sdb7" successfully created.
[root@localhost lvm]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- 19.80g 0
/dev/sdb5 myvg lvm2 a-- 1008.00m 0
/dev/sdb6 myvg lvm2 a-- 1008.00m 480.00m
/dev/sdb7 lvm2 --- 1.00g 1.00g
[root@localhost lvm]# vgextend myvg /dev/sdb7 #扩展myvg
Volume group "myvg" successfully extended
[root@localhost lvm]# vgs #发现pv由原来的两个分区变成了3个分区
VG #PV #LV #SN Attr VSize VFree
centos 1 3 0 wz--n- 19.80g 0
myvg 3 1 0 wz--n- 2.95g 1.45g
[root@localhost lvm]# lvextend -r -L +1G /dev/myvg/mylv #将mylv扩展增加1G,由原来的1.5G增加至2.5G
Size of logical volume myvg/mylv changed from 1.50 GiB (96 extents) to 2.50 GiB (160 extents).
Logical volume myvg/mylv successfully resized.
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mapper/myvg-mylv is mounted on /mnt/lvm; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/mapper/myvg-mylv is now 655360 blocks long.
[root@localhost lvm]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home centos -wi-ao---- 7.80g
root centos -wi-ao---- 10.00g
swap centos -wi-ao---- 2.00g
mylv myvg -wi-ao---- 2.50g
(3)lvm的缩减
[root@localhost lvm]# umount /dev/myvg/mylv #先卸载lvm
[root@localhost lvm]# fsck -f /dev/myvg/mylv #检测文件系统
fsck from util-linux 2.23.2
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/mapper/myvg-mylv: 11/163840 files (0.0% non-contiguous), 10868/655360 blocks
[root@localhost lvm]# resize2fs /dev/myvg/mylv 1.5G #缩减文件系统至1.5G
resize2fs 1.42.9 (28-Dec-2013)
resize2fs: Invalid new size: 1.5G
[root@localhost lvm]# lvreduce -L 1.5G /dev/myvg/mylv #缩减lv至1.5G
WARNING: Reducing active logical volume to 1.50 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce myvg/mylv? [y/n]: y
Size of logical volume myvg/mylv changed from 2.50 GiB (160 extents) to 1.50 GiB (96 extents).
Logical volume myvg/mylv successfully resized.
[root@localhost lvm]# mount /dev/myvg/mylv /mnt/lvm #此时重新挂载有可能会出现文件系统格式错误的情况
mount: wrong fs type, bad option, bad superblock on /dev/mapper/myvg-mylv,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so.
[root@localhost lvm]# mke2fs /dev/myvg/mylv #我们需要重新对文件系统进行格式化
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
98304 inodes, 393216 blocks
19660 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=402653184
12 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Allocating group tables: done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
[root@localhost lvm]# mount /dev/myvg/mylv /mnt/lvm #格式化后重新挂载,没有问题
[root@localhost lvm]# ls
fstab
[root@localhost lvm]# cat fstab #查看里面的文件也没有问题
#
# /etc/fstab
# Created by anaconda on Tue Feb 25 16:44:28 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=4c3372aa-71ea-4cce-b00b-898e57ba3576 /boot xfs defaults 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
[root@localhost lvm]# lvs #myvg已缩减至1.5G
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home centos -wi-ao---- 7.80g
root centos -wi-ao---- 10.00g
swap centos -wi-ao---- 2.00g
mylv myvg -wi-ao---- 1.50g
[root@localhost lvm]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 197M 157M 41M 80% /boot
tmpfs 182M 12K 182M 1% /run/user/42
tmpfs 182M 0 182M 0% /run/user/1000
/dev/mapper/myvg-mylv 1.5G 2.3M 1.4G 1% /mnt/lvm