第四周

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.

你可能感兴趣的:(第四周)