Q:
1、描述GPT是什么,应该怎么使用。
2、创建一个10G的分区,并格式化为ext4文件系统。要求:
(1)block大小为2048,预留空间2%,卷标为MYDATA,
(2) 挂载至/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳。
(3)可开机自动挂载。
3、创建一个大小为1G的swap分区,并启用。
4、编写脚本计算/etc/passwd文件中第10个用户和第20个用户id号之和。
5、将当前主机名保存至hostName变量中,主机名如果为空,或者为localhost.localdomain则将设置为magedu.com
6、编写脚本,通过命令行参数传入一个用户名,判断id号是偶数还是奇数。
7、lvm基本应用以及扩展缩减实现。
A:
1、GPT
GUID磁盘分区表(GUID Partition Table,缩写:GPT)其含义为“全局唯一标识磁盘分区表”,是一个实体硬盘的分区表的结构布局的标准。它是可扩展固件接口标准(用于替代BIOS系统中的一64bits来存储逻辑块地址和大小信息的主开机纪录(MBR)分区表。
扇区0 | 1 | 2 | 3~33 | 34~ | ... | ~-34 | -33~-3 | -2 | -1 |
---|---|---|---|---|---|---|---|---|---|
PMBR | GPT表头 | 分区表项1~4 | 分区表项5~128 | 分区1 | 分区... | 最后一个分区 | 备份分区表项5~128 | 备份分区表项1~4 | 备份GPT表头 |
- LBA0
- 在GPT分区表的最开头,处于兼容性考虑仍然存储了一份传统的MBR,用来防止不支持GPT的硬盘管理工具错误识别并破坏硬盘中的数据,这个MBR也叫做保护MBR。在支持从GPT启动的操作系统中,这里也用于存储第一阶段的启动代码。在这个MBR中,只有一个标识为0xEE的分区,以此来表示这块硬盘使用GPT分区表。不能识别GPT硬盘的操作系统通常会识别出一个未知类型的分区,并且拒绝对硬盘进行操作,除非用户特别要求删除这个分区。这就避免了意外删除分区的危险。另外,能够识别GPT分区表的操作系统会检查保护MBR中的分区表,如果分区类型不是0xEE或者MBR分区表中有多个项,也会拒绝对硬盘进行操作。
- 在使用MBR/GPT混合分区表的硬盘中,这部分存储了GPT分区表的一部分分区(通常是前四个分区),可以使不支持从GPT启动的操作系统从这个MBR启动,启动后只能操作MBR分区表中的分区。如Boot Camp就是使用这种方式启动Windows。
- LBA1
- 分区表头定义了硬盘的可用空间以及组成分区表的项的大小和数量。在使用64位Windows Server 2003的机器上,最多可以创建128个分区,即分区表中保留了128个项,其中每个都是128字节。(EFI标准要求分区表最小要有16,384字节,即128个分区项的大小)
- 分区表头还记录了这块硬盘的GUID,记录了分区表头本身的位置和大小(位置总是在LBA 1)以及备份分区表头和分区表的位置和大小(在硬盘的最后)。它还储存着它本身和分区表的CRC32校验。固件、引导程序和操作系统在启动时可以根据这个校验值来判断分区表是否出错,如果出错了,可以使用软件从硬盘最后的备份GPT中恢复整个分区表,如果备份GPT也校验错误,硬盘将不可使用。所以GPT硬盘的分区表不可以直接使用16进制编辑器修改。
- 主分区表和备份分区表的头分别位于硬盘的第二个扇区(LBA 1)以及硬盘的最后一个扇区。备份分区表头中的信息是关于备份分区表的。
- LBA2-33
- GPT分区表使用简单而直接的方式表示分区。一个分区表项的前16字节是分区类型GUID。例如,EFI系统分区的GUID类型是{C12A7328-F81F-11D2-BA4B-00A0C93EC93B}。接下来的16字节是该分区唯一的GUID(这个GUID指的是该分区本身,而之前的GUID指的是该分区的类型)。再接下来是分区起始和末尾的64位LBA编号,以及分区的名字和属性。
2、
创建10G分区
[root@localhost ~]# 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.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x13ceef16.
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-41943039, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +10G
Partition 1 of type Linux and of size 10 GiB is set
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
重读磁盘分区表
[root@localhost ~]# partx -a /dev/sdb1
partx: /dev/sdb: error adding partition 1
[root@localhost ~]# cat /proc/partitions
major minor #blocks name
2 0 4 fd0
8 16 20971520 sdb
8 17 10485760 sdb1
8 0 125829120 sda
8 1 1048576 sda1
8 2 124779520 sda2
11 0 4481024 sr0
253 0 52428800 dm-0
253 1 2097152 dm-1
253 2 70246400 dm-2
[root@localhost ~]#
格式化磁盘分区
[root@localhost ~]# mke2fs.ext4 -b 2048 -m 2 -L MYDATA /dev/sdb1
-bash: mke2fs.ext4: command not found
[root@localhost ~]# mke2fs -t ext4 -b 2048 -m 2 -L MYDATA /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
655360 inodes, 5242880 blocks
104857 blocks (2.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=273678336
320 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, 3981312
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
挂载
[root@localhost ~]# mkdir /mydata
[root@localhost ~]# ls /
bin boot dev etc home lib lib64 media mnt mydata opt proc root run sbin srv sys tmp usr var
[root@localhost ~]# mount -o noexec,noatime -L MYDATA /mydata
设置开机自动挂载
[root@localhost ~]# vim /etc/fstab
[root@localhost ~]# tail -1 /etc/fstab
/dev/sdb1 /mydata ext4 defaults,noatime,noexec 0 0
[root@localhost ~]# ls /mydata/
lost+found
3、
创建swap分区
[root@localhost ~]# 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): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): e
Partition number (2-4, default 2):
First sector (20973568-41943039, default 20973568):
Using default value 20973568
Last sector, +sectors or +size{K,M,G} (20973568-41943039, default 41943039):
Using default value 41943039
Partition 2 of type Extended and of size 10 GiB is set
Command (m for help): n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
Adding logical partition 5
First sector (20975616-41943039, default 20975616):
Using default value 20975616
Last sector, +sectors or +size{K,M,G} (20975616-41943039, default 41943039): +1G
Partition 5 of type Linux and of size 1 GiB is set
Command (m for help): t
Partition number (1,2,5, default 5):
Hex code (type L to list all codes): 82
Changed type of partition 'Linux' to 'Linux swap / Solaris'
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
重读磁盘分区表
[root@localhost ~]# partx -a /dev/sdb
partx: /dev/sdb: error adding partition 1
[root@localhost ~]# partx -a /dev/sdb
partx: /dev/sdb: error adding partitions 1-2
partx: /dev/sdb: error adding partition 5
[root@localhost ~]# cat /proc/partitions
major minor #blocks name
2 0 4 fd0
8 16 20971520 sdb
8 17 10485760 sdb1
8 18 1 sdb2
8 21 1048576 sdb5
8 0 125829120 sda
8 1 1048576 sda1
8 2 124779520 sda2
11 0 4481024 sr0
253 0 52428800 dm-0
253 1 2097152 dm-1
253 2 70246400 dm-2
启动swap分区
[root@localhost ~]# mkswap /dev/sdb5
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=245eb860-e845-47f2-9d2e-9c444a7589f5
[root@localhost ~]# free
total used free shared buff/cache available
Mem: 1005656 140556 703660 7644 161440 690796
Swap: 2097148 0 2097148
[root@localhost ~]# swapon /dev/sdb5
[root@localhost ~]# free
total used free shared buff/cache available
Mem: 1005656 140660 703552 7644 161444 690692
Swap: 3145720 0 3145720
4、编写脚本计算/etc/passwd文件中第10个用户和第20个用户id号之和。
[root@localhost ~]# cat /tmp/myadd.sh
#!/bin/bash
id1=$(head -10 /etc/passwd|tail -1 |cut -d: -f3)
id2=$(head -20 /etc/passwd|tail -1 |cut -d: -f3)
id_sum=$[$id1+$id2]
echo $id_sum
5、hostname
[root@localhost ~]# cat /scripts/judge.sh
hostName=`hostname`
[ -z "$hostName" -o "$hostName" == "localhost.localdomain" ] && hostname -b magedu.com
6、编写脚本,通过命令行参数传入一个用户名,判断id号是偶数还是奇数。
[root@niroo ~]# cat /etc/passwd
...
gentoo:x:4003:4003::/users/gentoo:/bin/bash
fedora:x:4004:4004::/users/fedora:/bin/bash
...
[root@localhost ~]# bash /scripts/exer9_2_2.sh gentoo
gentoo\'s id is odd number
[root@localhost ~]# bash /scripts/exer9_2_2.sh fedora
fedora\'s id is even number
[root@localhost ~]# cat /scripts/exer9_2_2.sh
#!/bin/bash
usrId=$(id -u $1)
if [ $[$usrId % 2 ] -eq 0 ];then
echo "$1\'s id is even number"
else
echo "$1\'s id is odd number"
fi
7、LVM
LVM: Logical Volume Manager, 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
-
pv管理工具:
pvs:简要pv信息显示
pvdisplay:显示pv的详细信息
pvcreate /dev/DEVICE: 创建pv
pvmove:移动pv上的pe至其他pv上
-
vg管理工具:
vgs
vgdisplay
vgcreate [-s #[kKmMgGtTpPeE]] VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...] 先做pvmove
vgremove
-
lv管理工具:
lvs
lvdisplay
lvcreate -L #[mMgGtT] -n NAME VolumeGroup
lvremove /dev/VG_NAME/LV_NAME
-
扩展逻辑卷:
- 扩展lv
lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME
- 扩展后resize
resize2fs /dev/VG_NAME/LV_NAME
- 扩展lv
-
缩减逻辑卷:
- 先卸载文件系统
umount /dev/VG_NAME/LV_NAME
- 文件系统强制检测
e2fsck -f /dev/VG_NAME/LV_NAME
- resize
resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT]
- 缩减lv
lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME
- 重新挂载
mount
- 先卸载文件系统
-
-
快照:snapshot
lvcreate -L #[mMgGtT] -p r -s -n snapshot_lv_name original_lv_name
网友评论