1. 描述GPT是什么,应该怎么使用。
GPT中文名称叫做全局唯一标识分区表。与目前普遍使用的主引导记录(MBR)分区方案相比,GPT提供了更加灵活的磁盘分区机制。它具有如下优点:
1、支持2TB以上的大硬盘。
2、它允许每个磁盘有多达 128 个分区(MBR磁盘最多只能有4个主分区,或者3个主分区加一个扩展分区和无限制的逻辑驱动器)。
3、支持高达 18 千兆兆字节(EB,exabytes)的卷大小(MBR磁盘支持的最大卷为2TB) 。
4、分区表自带备份。在磁盘的首尾部分分别保存了一份相同的分区表,其中一份被破坏后,可以通过另一份恢复;
5、循环冗余检验值针对关键数据结构而计算,提高了数据崩溃的检测几率;
6、 虽然MBR提供1字节分区类型代码,但GPT使用一个16字节的全局唯一标识符(GUID)值来标识分区类型,这使分区类型更不容易冲突;
创建gpt分区:
1. parted /dev/sdb (sdb为需要划分的磁盘)
2. mklabel gpt (将磁盘转化为gpt格式)
3. print (查看是否成功)
4. mkpart primary 0 1TB (分一个1TB主分区)
5. i (输入i,选择忽略)
6. mkpart primary 1TB 3TB (分一个2TB主分区)
7. i (输入i,选择忽略)
8. print (查看分区信息)
9. quit
然后就可以格式化为需要的文件格式,再进行挂载,最后修改/etc/fstab/文件,使其开机自动挂载。
2. 创建一个10G的分区,并格式化为ext4文件系统。要求:
(1)block大小为2048,预留空间20%,卷标为MYDATA。
(2)挂载至/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳。
(3)可开机自动挂载。
fdisk /dev/sdb #创建10G的分区
n #输入n创建分区
p #输入p创建主分区
1 #输入1
#输入回车
+10G #指定大小为10G
w #输入w保存退出
partx -a /dev/sdb #重读分区信息
mke2fs -t ext4 -b 2048 -L MYDATA -m 20 /dev/sdb1 #将创建的10G分区格式化为ext4,block大小为2048,预留空间20%,卷标为MYDATA
mkdir /mydata #创建mydata目录
mount -o noatime -o noexec /dev/sdb1 /mydata #挂载至/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳
blkid #查找新增加的分区对应的UUID
#在/etc/fstab文件最后一行添加:
UUID=03819a3f-201b-4bac-bcf6-42d458364880 /mydata ext4 defaults 0 0
3. 创建一个大小为1G的swap分区,并启用。
fdisk /dev/sdb #创建1G的分区
n #输入n创建分区
p #输入p创建主分区
1 #输入1
#输入回车
+1G #指定大小为1G
w #输入w保存退出
partx -a /dev/sdb #重读分区信息
mkswap /dev/sdb #将创建的分区格式化为swap分区
swapon /dev/sdb #激活swap分区
4. 编写脚本计算/etc/passwd文件中第10个用户和第20个用户id号之和。
脚本内容:
#!/bin/bash
#name=idadd.sh
id1=$(head -10 /etc/passwd | tail -1 | cut -d: -f 3)
echo "10th is $id1"
id2=$(head -20 /etc/passwd | tail -1 | cut -d: -f 3)
echo "20th is $id2"
echo "the 10th add 20th is $(($id1 + $id2))"
测试:
[root@localhost ~]# ./idadd.sh
10th is 11
20th is 996
the 10th add 20th is 1007
5. 将当前主机名保存至hostName变量中,主机名如果为空,或者为localhost.localdomain则将设置为www.magedu.com
初始变量:
[root@localhost ~]# hostname
localhost.localdomain
操作:
hostName=$(hostname)
[ -z "$hostName" -o "$hostName"=="localhost.localdomain" -o "$hostName"=="localhost" ] && hostname www.magedu.com
测试:
[root@localhost ~]# hostname
www.magedu.com
6. 编写脚本,通过命令行参数传入一个用户名,判断id号是偶数还是奇数。
脚本内容:
#!/bin/bash
#name=odd-even
if [ $# -lt 1 ];then
echo "please input one username."
exit 2
fi
if grep "^$1\>" /etc/passwd &> /dev/null;then
echo &> /dev/null
else
useradd $1
echo $1 &> /dev/null
fi
uid=$(id -u $1)
id=$(($uid % 2))
echo "id is $uid"
if [ $id -eq 0 ] ;then
echo "this is oushu"
else
echo "this is jishu"
fi
运行测试:
[root@localhost ~]# ./odd-even.sh admin
id is 5012
this is oushu
7. lvm基本应用以及扩展缩减实现。
LVM基本应用:
[root@localhost ~]# fdisk /dev/sdb #将磁盘分区并转换为LVM格式
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x3a827510 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n #创建分区
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): e
分区号 (1-4,默认 1):
起始 扇区 (2048-6291455,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-6291455,默认为 6291455):
将使用默认值 6291455
分区 1 已设置为 Extended 类型,大小设为 3 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 1 extended, 3 free)
l logical (numbered from 5)
Select (default p): l
添加逻辑分区 5
起始 扇区 (4096-6291455,默认为 4096):
将使用默认值 4096
Last 扇区, +扇区 or +size{K,M,G} (4096-6291455,默认为 6291455):+2G
分区 5 已设置为 Linux 类型,大小设为 2 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 1 extended, 3 free)
l logical (numbered from 5)
Select (default p): l
添加逻辑分区 6
起始 扇区 (4200448-6291455,默认为 4200448):
将使用默认值 4200448
Last 扇区, +扇区 or +size{K,M,G} (4200448-6291455,默认为 6291455):
将使用默认值 6291455
分区 6 已设置为 Linux 类型,大小设为 1021 MiB
命令(输入 m 获取帮助):t #将分区转换为LVM格式
分区号 (1,5,6,默认 6):5
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):t
分区号 (1,5,6,默认 6):6
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):w #保存退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# partx -a /dev/sdb #重读分区信息
partx: /dev/sdb: error adding partition 1
partx: /dev/sdb: error adding partitions 5-6
[root@localhost ~]# pvcreate /dev/sdb5 #创建物理卷PV
Physical volume "/dev/sdb5" successfully created.
[root@localhost ~]# vgcreate vg1 /dev/sdb5 #创建名为vg1的逻辑卷组
Volume group "vg1" successfully created
[root@localhost ~]# vgdisplay vg1 #查看vg1的详细信息
--- Volume group ---
VG Name vg1
System ID
Format lvm2
Metadata Areas 1
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 1
Act PV 1
VG Size <2.00 GiB
PE Size 4.00 MiB
Total PE 511
Alloc PE / Size 0 / 0
Free PE / Size 511 / <2.00 GiB
VG UUID Sn7u0Z-jND9-UOBu-yPjQ-4dce-qlnd-OzJC7U
[root@localhost ~]# pvdisplay /dev/sdb5 #查看物理卷pv的详细信息
--- Physical volume ---
PV Name /dev/sdb5
VG Name vg1
PV Size 2.00 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 511
Free PE 511
Allocated PE 0
PV UUID uGFuFB-O9X6-GNAR-Tb1P-DJlF-6kkr-OGUeK8
[root@localhost ~]# lvcreate -l 100%VG -n lv1 vg1 #在vg1上创建名为lv1的逻辑卷
[root@localhost ~]# mke2fs -t ext4 -b 1024 -L LV1 /dev/vg1/lv1 #将lv1格式化为ext4,卷标名为LV1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=LV1
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 2093056 blocks
104652 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=35651584
256 block groups
8192 blocks per group, 8192 fragments per group
512 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409, 663553,
1024001, 1990657
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
[root@localhost ~]# mkdir /LVM #创建LVM目录
[root@localhost ~]# mount /dev/vg1/lv1 /LVM #挂载到LVM目录
LVM扩展:
[root@localhost ~]# pvcreate /dev/sdb6 #增加物理卷pv
Physical volume "/dev/sdb6" successfully created.
[root@localhost ~]# vgextend vg1 /dev/sdb6 #增加逻辑卷组vg1的容量
Volume group "vg1" successfully extended
[root@localhost ~]# lvextend -l 100%VG /dev/vg1/lv1 #将新增的全部逻辑卷组的容量分给逻辑卷lv1
Size of logical volume vg1/lv1 changed from <2.00 GiB (511 extents) to 2.99 GiB (766 extents).
Logical volume vg1/lv1 successfully resized.
[root@localhost ~]# resize2fs /dev/vg1/lv1 #将文件系统扩容
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vg1/lv1 is mounted on /LVM; on-line resizing required
old_desc_blocks = 16, new_desc_blocks = 24
The filesystem on /dev/vg1/lv1 is now 3137536 blocks long.
[root@localhost ~]# df -h #查看磁盘使用情况,是否扩容成功
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 42G 4.6G 37G 11% /
devtmpfs 975M 0 975M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 11M 980M 2% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sda1 797M 164M 634M 21% /boot
tmpfs 199M 8.0K 199M 1% /run/user/42
tmpfs 199M 24K 199M 1% /run/user/1000
/dev/sr0 4.3G 4.3G 0 100% /run/media/ouyang/CentOS 7 x86_64
/dev/mapper/vg1-lv1 3.0G 3.2M 2.8G 1% /LVM
tmpfs 199M 0 199M 0% /run/user/0
LVM缩减:
[root@localhost ~]# umount /dev/vg1/lv1 #将分区卸载
[root@localhost ~]# e2fsck -f /dev/vg1/lv1 #强制检查文件系统的完整性
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
LV1: 11/196096 files (0.0% non-contiguous), 86122/3137536 blocks
[root@localhost ~]# resize2fs /dev/vg1/lv1 2G #缩减文件系统大小为2G
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vg1/lv1 to 2097152 (1k) blocks.
The filesystem on /dev/vg1/lv1 is now 2097152 blocks long.
[root@localhost ~]# lvreduce -L 2G /dev/vg1/lv1 #将逻辑卷的大小缩减至2G
WARNING: Reducing active logical volume to 2.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg1/lv1? [y/n]: y #确定
Size of logical volume vg1/lv1 changed from 2.99 GiB (766 extents) to 2.00 GiB (512 extents).
Logical volume vg1/lv1 successfully resized.
[root@localhost ~]# mount /dev/vg1/lv1 /LVM #重新挂载至LVM目录
LVM删除
[root@localhost ~]# vgreduce vg1 /dev/sdb6 #将sdb6从逻辑卷组中移除
Removed "/dev/sdb6" from volume group "vg1"
[root@localhost ~]# pvremove /dev/sdb6 #将sdb6从物理卷移除
Labels on physical volume "/dev/sdb6" successfully wiped.