一、磁盘存储术语总结和理解。
1、磁盘基本术语
术语 | 含义 |
---|---|
扇区 | 磁盘最小物理存储单位,通常为512字节或4096字节 |
柱面 | 由多个磁盘同一半径的磁道组成,逻辑概念 |
磁头 | 用于读写磁道上数据,通常一个盘面一个磁头 |
磁道 | 磁盘表面的同心圆路径,多个磁道组成柱面 |
2、分区术语
术语 | 含义 |
---|---|
MBR | 旧式分区结构,限制为2TB磁盘,最多4个主分区 |
GPT | 新式分区结构,支持容量>2TB(2^64*512b) |
主分区 | 可引导系统的分区,MBR最多支持4个,GPT支持128个(默认) |
扩展分区 | MBT为突破4个分区限制设计,不能存储数据 |
逻辑分区 | 扩展分区中划分的实际可存放数据分区 |
UUID/GUID | 用于唯一标识区分或设备 |
3、 文件系统术语
术语 | 含义 |
---|---|
文件系统 | 管理文件与目录,如:ext4、xfs、ntfs |
inode | 索引节点 |
块大小 | 文件系统的基础单位 |
超级块 | 存储整个文件系统的元信息 |
4、性能术语
术语 | 含义 |
---|---|
I/O | 输入输出操作,磁盘读写活动总称 |
吞吐量 | 单位时间内磁盘读写的数据量 |
IOPS | 每秒输入输出次数 |
延迟 | 从请求发出到响应完成的时间 |
RAID | 多磁盘冗余阵列 |
缓存 | 磁盘或控制器内的高速缓冲区,加速读写性能 |
二、总结MBR,GPT结构区别。
比较项目 | MBR(传统分区表) | GPT(GUID 分区表) |
---|---|---|
最大支持磁盘容量 | 最多 2 TB(使用 512B 扇区) | 理论支持 9.4 ZB(远大于 MBR) |
最大主分区数量 | 最多 4 个主分区,或 3 主 + 1 扩展 | 最多 128 个主分区(Windows 默认) |
启动方式支持 | 支持传统 BIOS(Legacy BIOS) | 支持 UEFI 启动 |
数据冗余 | 无冗余,MBR 一旦损坏则难以恢复 | 有主/备 GPT 表,支持冗余备份,可靠性更高 |
校验机制 | 无,容易损坏 | 使用 CRC32 校验,确保分区表完整性 |
与操作系统兼容性 | 所有旧版系统兼容,如 DOS/Win XP | Vista 以后的系统原生支持(如 Win10、Linux) |
安全性与扩展性 | 差,无法满足现代磁盘需求 | 高,适合大容量磁盘与现代硬件 |
三、总结学过的分区,文件系统管理。
1、分区管理
内容 | 说明 |
---|---|
分区工具 | fdisk(MBR)、gdisk(GPT)、parted |
分区类型 | 主分区、扩展分区、逻辑分区、LVM分区 |
查看分区信息 | lsblk、fdisk -l、parted -l |
分区类型 | MBR(最大2T,4主分区)、GPT(默认最多128分区) |
2、文件系统管理
内容 | 说明 |
---|---|
常见文件系统 | 如:ext4、xfs、btrfs、ntfs |
创建文件系统 | 如:mkfs.ext4 /dev/sdx 、 |
格式化磁盘 | 创建文件系统=格式化磁盘 |
查看挂载信息 | df -h 、查看/etc/fstab、lsblk |
开机自动挂载 | 将挂在信息写入/etc/fstab |
查看磁盘使用 | du -sh(查看文件大小)、df -h(查看分区使用情况) |
3、逻辑卷
概念 | 说明 |
---|---|
PV(物理卷) | 使用 pvcreate /dev/sdb1 创建 |
VG(卷组) | 使用 vgcreate myvg /dev/sdb1 创建 |
LV(逻辑卷) | 使用 lvcreate -L 10G -n mylv myvg 创建 |
扩容 | lvextend + resize2fs (ext4)或 xfs_growfs (xfs) |
四、总结raid 0, 1, 5, 10, 01的工作原理。总结各自的利用率,冗余性,性能,至少几个硬盘实现。
RAID级别 | 工作原理 | 利用率 | 冗余性 | 性能 | 最少磁盘数 |
---|---|---|---|---|---|
RAID 0 | 数据分布在多磁盘上 | 100% | 无 | 读写性能最高 | 2 |
RAID 1 | 数据完全复制到每个硬盘上 | 50% | 高冗余 | 一般 | 2 |
RAID 5 | 分布式奇偶校验 | (N-1)/N | 允许坏一块 | 写慢 | 3 |
RAID 10 | RAID 1+0 | 50% | 允许坏一块/组 | 读写优先 | 4 |
五、总结LVM的基本原理,完成实验对LVM的创建和磁盘扩容。
1、基本原理
组件 | 功能说明 |
---|---|
PV | 将实际磁盘和分区初始化为PV是LVM的起点 |
VG | 由一个或多个PV组成的存储池 |
LV | 从PV中划分出来的LV,用于挂载使用 |
PE | VG中的最小分配单位 |
2、LVM的创建
# 创建PV
pvcreate /dev/vdb1
# 创建VG
vgcreate myvg /dev/vdb1
# 创建LV
lvcreate -L 5G -n mylv myvg
# 格式化
mkfs.ext4 /dev/myvg/mylv
# 创建挂载目录
mkdir /mnt/mydata
# 挂载
mount /dev/myvg/mylv /mnt/mydata
3、LVM新增磁盘扩容
# 创建新的PV
pvcreate /dev/vdb2
# 加入VG
vgextend myvg /dev/vdb2
# 扩容逻辑卷
lvextend -l 100%FREE /dev/myvg/mylv
# 扩展文件系统
# ext4
resize2fs /dev/myvg/mylv
#xfs
xfs_growfs /mnt/mydata
4、LVM 原有磁盘扩容
# 重新读取vdb1
parted /dev/vdb
(part)resizepart 1
# 重新读取PV
pvresize /dev/vdb1
# LVM扩容
lvextend -l +100%FREE /dev/myvg/mylv
六、总结变量命名规则,不同类型变量(环境变量,位置变量,只读变量,局部变量,状态变量)如何使用。
1、变量命名规则
(1)、字母数字下划线组成
(2)、开头必须是字母或者下划线
(3)、区分大小写
(4)、一般采用大写表示环境变量
2、常见变量类型
类型 | 说明 | 示例 |
---|---|---|
环境变量 | 对当前shell及其子进程可见 | export PATH=/usr/local/bin:$PATH |
位置变量 | 脚本执行时传入的位置参数 | $0 $1 .... $* |
只读变量 | 定义后不能修改 | readonly MYVAR=abc |
局部变量 | 只在函数内部使用 | local VAR=123 |
2.1、环境变量
# 定义
export MYENV="test"
# 查看
echo $MYENV
#查看所有环境变量
env
2.2、位置变量
#!/bin/bash
echo "脚本名:$0" # $0表示文件名
echo "第一个参数:$1"
echo "参数个数:$#"
echo "所有参数(\$*):$*"
echo "所有参数(\$@):$@"
2.3、只读参数
readonly APP_ENV="test"
APP_ENV="dev" # 报错:只读变量不能修改
2.4、局部变量
my_func() {
local name="admin"
echo "局部变量:$name"
}
my_func
echo $name # 无输出,因为 name 是局部变量
七、编写一个脚本猜数字,使用判断提示用户比目标数字是大还是小
#!/bin/bash
tg=$(( RANDOM % 100+1 ))
echo "猜数字0-99"
while true; do
read -p "请输入数字:" gs
if ! [[ "$gs" =~ ^[0-9]+$ ]]; then
echo "无效"
continue
fi
if [ "$gs" -lt "$tg" ]; then
echo "太小了"
elif [ "$gs" -gt "$tg" ]; then
echo "太大了"
else
echo "答对了,数字为: $tg"
break
fi
done
八、总结TCP包头结构,TCP三次握手,4次挥手。
TCP包头:源/目的端口、序列号、确认号、标志位(SYN/ACK/FIN等)、窗口大小、校验和。
-
三次握手:
1、客户端发送SYN=1, seq=x;2、服务端回复SYN=1, ACK=1, seq=y, ack=x+1;3、客户端发送ACK=1, ack=y+1。 -
四次挥手:
1、客户端发送FIN=1;2、服务端回复ACK;3、服务端发送FIN;4、客户端回复ACK。
九、总结源主机到目的主机的包传递过程。
-
应用层生成数据;
-
传输层封装(TCP/UDP头部);
-
网络层封装(IP头部,路由选择);
-
数据链路层封装(MAC地址,帧传输);
-
物理层转换为比特流发送;
-
目标主机逆向解封装。
十、201.222.200.111/18计算主机数?子网掩码?说明计算方法。
-
子网掩码:
255.255.192.0
(前16位为1故表示为255.255,1100 0000为192.0合起来为255.255.192.0); -
主机数:2^(32-18) - 2 = 16382;
-
计算:网络位占18位,主机位14位,主机数=2^14-2(去除表示广播和网段的地址)。
十一、当A(10.0.1.1/16)与B(10.0.2.2/24)通信,A如何判断是否在同一个网段?A和B能否通信?
A判断同网段:比较A的IP(10.0.1.1)与B的IP(10.0.2.2)前16位(10.0),相同则同网段。
能否通信:A认为B同网段(10.0.0.0/16),直接ARP请求;B认为A不同网段(10.0.2.0/24),需走网关。
实际不通:因B会丢弃A的直连请求。
十二、如何将10.0.0.0/8划分32个子网?求每个子网的掩码,主机数。
子网掩码:255.255.224.0
(8+5=13位网络位);
主机数:2^(32-13) - 2 = 8190;
划分方法:借用5位(2^5=32),网络号递增8(256-224)。