Linux基础(网络)

磁盘存储、文件系统与网络管理指南

一、磁盘扫描与管理

1. 添加磁盘后立即生效方法

# 扫描新添加的磁盘
echo '- - -' > /sys/class/scsi_host/host0/scan  # 根据实际情况调整host0/1/2

# Ubuntu多host处理
for i in {0..2}; do
  echo '- - -' > /sys/class/scsi_host/host$i/scan
done

2. 磁盘使用流程

  1. 设备分区 – 划分磁盘空间
  2. 创建文件系统 – 格式化分区
  3. 挂载新文件系统 – 使分区可用

3. 核心磁盘命令

命令 功能描述 常用选项
dd 读取、转换并输出数据 if=输入文件, of=输出文件, ibs=输入块大小, obs=输出块大小, count=块数, skip=跳过输入块, seek=跳过输出块
df 显示磁盘空间使用 -h人类可读格式, -T文件系统类型, -iinode使用, --total总计信息
du 显示文件/目录磁盘使用 -h人类可读格式, -s仅显示总计, -c最后显示总计, -d指定深度, --max-depth最大深度

二、磁盘分区管理

1. 分区方案对比

特性 MBR GPT
最大磁盘容量 2TB 8ZB
最大分区数 4主分区或3主+1扩展(N逻辑) 128主分区
分区标识 /dev/sda1-4(主), /dev/sda5+(逻辑) /dev/sda1-/dev/sda128
技术背景 512字节MBR(446引导+64分区表) 主+备份分区表
启动兼容性 BIOS UEFI

2. MBR分区表操作

备份与恢复:

# 备份MBR分区表
mkdir /data
dd if=/dev/sda of=/data/dpt.img bs=1 count=64 skip=446

# 光盘救援恢复步骤:
1. 开机按Esc或调整BIOS为CD-ROM启动
2. 选择"Rescue a Rocky Linux system"
3. 选择"Skip to shell"
4. 获取备份:scp root@10.0.0.157:~/dpt.img ./
5. 恢复:dd if=dpt.img of=/dev/sda bs=1 seek=446
6. 重启:reboot

fdisk交互命令:

fdisk /dev/sda
  • a 切换启动标志
  • d 删除分区
  • F 列出空闲空间
  • l 列出已知分区类型
  • n 添加新分区
  • p 打印分区表
  • t 更改分区类型
  • v 验证分区表
  • w 写入并退出
  • q 不保存退出
  • g 创建新GPT分区表
  • o 创建新DOS分区表

3. GPT分区管理

gdisk操作:

gdisk /dev/nvme0n1

交互命令与fdisk类似

4. 分区查看命令

fdisk -l      # 查看分区表(dos表示MBR)
lsblk         # 树状显示块设备
hexdump -C -n 512 /dev/sda -v  # 查看前512字节

三、文件系统管理

1. Linux文件系统类型

类型 特点 创建命令
ext2 早期Linux文件系统 mkfs.ext2
ext3 带日志的ext2 mkfs.ext3
ext4 乌班图推崇 mkfs.ext4
xfs rocky推崇 mkfs.xfs
swap 虚拟内存 mkswap
iso9660 光盘文件系统
btrfs 高级文件系统 mkfs.btrfs
reiserfs 高效小文件存储 mkfs.reiserfs

2. 文件系统操作

# 查看分区文件系统
lsblk -f

# 创建文件系统
mkfs.ext4 /dev/sdb1
mkfs.xfs /dev/sdc1

3. 挂载管理

临时挂载:

mount /dev/sdb1 /mnt/data
umount /mnt/data   # 或 umount /dev/sdb1

持久挂载(/etc/fstab):

# 格式:<设备> <挂载点> <类型> <选项> <备份> <检查>

# 根分区示例
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / ext4 defaults 0 1

# 数据分区示例
UUID=1234-5678 /home/data ext4 defaults,noatime 0 2

# 设备名挂载示例
/dev/sdb1 /mnt/backup xfs defaults 0 0

# 虚拟文件系统
proc /proc proc defaults 0 0

# 生效命令
mount -a
mount -o remount /mountpoint  # 重新挂载

查看挂载信息:

cat /etc/fstab
blkid        # 查看UUID

四、文件系统异常修复

1. 修复流程

1. 卸载文件系统:umount /dev/sdX
2. 执行修复工具:fsck/xfs_repair
3. 重新挂载验证:mount /dev/sdX /mountpoint

2. 修复工具

ext系列修复(e2fsck):

e2fsck /dev/sdb1
  • -y 自动回答yes
  • -f 强制修复
  • -p 自动安全修复

xfs修复(xfs_repair):

xfs_repair /dev/sdb1
  • -f 修复文件而非设备
  • -n 只检查不修复
  • -d 允许修复只读挂载设备

3. 修复案例

场景:文件系统损坏

# 准备环境
rm -rf /mount ; mkdir /mount/ext -p
mkfs.ext4 /dev/sdb1
mount /dev/sdb1 /mount/ext/
cp /etc/fstab /mount/ext/f{1,2}

# 人为破坏
dd if=/dev/zero of=/dev/sdb1 bs=1M count=1

# 修复过程
umount /dev/sdb1
e2fsck /dev/sdb1

# 验证修复
mount /dev/sdb1 /mount/ext/
ls /mount/ext/

fstab错误处理:

# 注释错误条目
sed -i '/mount\/xfs/s@^@#@' /etc/fstab

# 检查修改
grep 'mount/xfs' /etc/fstab

# 重新挂载
systemctl daemon-reload
mount -a
mount | grep /mount

# 重启验证
reboot

五、SWAP管理

# 禁用SWAP
1. sed -i '/swap/s/^/#/' /etc/fstab  # 注释配置
2. swapoff -a                        # 禁用所有swap

# 启用SWAP
1. sed -i '/swap/s/^#//' /etc/fstab  # 取消注释
2. swapon -a                         # 启用所有swap

六、RAID技术

1. RAID级别对比

类型 最少磁盘 容错能力 特点 利用率
RAID0 2 数据分块存储,提升性能 100%
RAID1 2 1盘 完全镜像 50%
RAID4 3 1盘 专用校验盘 (n-1)/n
RAID5 3 1盘 分布式校验 (n-1)/n
RAID6 4 2盘 双分布式校验 (n-2)/n
RAID10 4 1组 先镜像后分条 50%
RAID01 4 1组 先分条后镜像 50%

2. RAID创建示例

# 创建RAID5
mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sd{b,c,d}1

七、LVM逻辑卷管理

1. LVM结构

  • PV(物理卷) – 物理磁盘/分区
  • VG(卷组) – PV的集合(相当于大硬盘)
  • LV(逻辑卷) – 从VG划分的逻辑分区
  • PE(物理块) – 默认4M
  • LE(逻辑块) – 默认4M

2. LVM操作命令

对象 命令 功能
PV pvcreate /dev/sdXn 创建物理卷
pvdisplay 显示物理卷信息
pvremove 移除物理卷
VG vgcreate vg00 /dev/sdXn 创建卷组
vgextend vg00 /dev/sdYn 扩展卷组
vgreduce vg00 /dev/sdXn 缩小卷组
LV lvcreate -L 10G -n lvdata vg00 创建逻辑卷
lvextend -L +5G /dev/vg00/lvdata 扩展逻辑卷
lvreduce -L 5G /dev/vg00/lvdata 缩小逻辑卷

3. LVM创建流程

# 1. 准备磁盘(分区ID改为8e)
# 2. 创建物理卷
pvcreate /dev/sdb

# 3. 创建卷组
vgcreate vg_data /dev/sdb

# 4. 创建逻辑卷
lvcreate -L 20G -n lv_www vg_data

# 5. 创建文件系统
mkfs.xfs /dev/vg_data/lv_www

# 6. 挂载使用
mkdir /www
mount /dev/vg_data/lv_www /www

4. LVM扩容与缩减

EXT4扩容:

lvextend -L +5G /dev/vg_data/lv_db
resize2fs /dev/vg_data/lv_db

EXT4缩减:

umount /db
fsck -f /dev/vg_data/lv_db
resize2fs /dev/vg_data/lv_db 15G
lvreduce -L 15G /dev/vg_data/lv_db
mount -a

XFS扩容:

lvextend -L +5G -r /dev/vg_data/lv_www  # -r自动调整文件系统

八、软件包管理

1. RPM/YUM (RedHat系)

RPM命令:

rpm -ivh package.rpm  # 安装
rpm -e package        # 卸载
rpm -qi package       # 查询信息
rpm -ql package       # 查询文件列表
rpm -qf /path/file    # 查询文件所属包

YUM仓库配置:

# /etc/yum.repos.d/rocky.repo
[baseos]
name=Rocky Linux $releasever BaseOS
baseurl=https://mirrors.aliyun.com/rockylinux/$releasever/BaseOS/$basearch/os/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial

YUM命令:

yum repolist          # 查看仓库列表
yum search keyword    # 搜索包
yum list available    # 查看可用包
yum install package   # 安装包
yum provides */cmd    # 查找命令所属包
yum --downloadonly --downloaddir=/path/ install package  # 只下载不安装
yum clean all         # 清除缓存
yum makecache         # 重建缓存

2. DPKG/APT (Debian系)

DPKG命令:

dpkg -i package.deb   # 安装
dpkg -r package       # 移除
dpkg -p package       # 完全移除(含配置)
dpkg -l               # 列出已安装包
dpkg -l | grep nginx  # 查找特定包

APT操作:

# 源配置:/etc/apt/sources.list
apt update              # 更新缓存
apt install package     # 安装
apt purge package       # 完全移除
apt autoremove          # 自动移除不需要的包
apt-cache madison nginx # 查看可用版本

# 彻底清理
apt purge ufw lxd lxd-client lxcfs liblxc-common
apt purge $(dpkg -l | grep '^rc' | awk '{print $2}')

九、网络诊断工具

tcpdump高级用法

基本选项:

  • -i 指定接口
  • -D 列出可用接口
  • -c 捕获包数量
  • -w 写入文件
  • -r 读取文件
  • -s 设置包长度

过滤选项:

  • host 指定主机
  • port 指定端口
  • net 指定网络
  • src/dst 源/目标地址
  • and/or/not 逻辑组合

输出选项:

  • -n 不解析地址
  • -v 详细输出
  • -X 十六进制+ASCII输出
  • -t 不显示时间戳

示例:

tcpdump -i eth0 host 192.168.1.100
tcpdump tcp port 22
tcpdump -c 5 -w capture.pcap
tcpdump -r capture.pcap

十、系统管理技巧

1. Ubuntu桌面安装

apt install ubuntu-desktop -y

2. 搭建YUM仓库

yum -y install httpd
systemctl enable --now httpd
# 将仓库文件放入/var/www/html

3. 更改Ubuntu源

1. vim /etc/apt/sources.list
2. 替换为阿里云镜像
3. apt update
4. apt-cache policy package

4. 包管理器对比

操作 RPM YUM DPKG APT
安装 rpm -ivh yum install dpkg -i apt install
移除 rpm -e yum remove dpkg -r apt remove
查询 rpm -qa yum list dpkg -l apt list
清缓存 yum clean all apt clean

十一、光盘自动挂载

# 1. 安装autofs
yum install -y autofs

# 2. 启动服务
systemctl start autofs
systemctl enable --now autofs

# 3. 配置autofs
# /etc/auto.master 添加:
/misc /etc/auto.misc

# /etc/auto.misc 添加:
cdrom -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom

# 4. 创建挂载点
mkdir -p /misc/cdrom

十二、源码编译安装

1. 编译流程

./configure --prefix=/custom/path
make -j $(nproc)  # 并行编译
make install

2. Nginx编译示例

# 1. 下载解压
tar xf nginx-1.25.3.tar.gz
cd nginx-1.25.3

# 2. 配置选项
./configure --prefix=/opt/nginx --with-http_ssl_module

# 3. 解决依赖
yum install -y gcc pcre-devel openssl-devel zlib-devel

# 4. 编译安装
make -j $(nproc)
make install

3. 创建systemd服务

# /etc/systemd/system/nginx.service
[Unit]
Description=NGINX Web Server
After=network.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/opt/nginx/sbin/nginx -t
ExecStart=/opt/nginx/sbin/nginx
ExecReload=/opt/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target
# 生效命令
systemctl daemon-reload
systemctl start nginx
systemctl enable nginx

十三、网络配置

1. Rocky网卡配置

# /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
NAME=eth0
IPADDR=192.168.1.100
PREFIX=24
GATEWAY=192.168.1.1
DNS1=8.8.8.8
BOOTPROTO=static
ONBOOT=yes

生效命令:

nmcli connection reload
nmcli connection up eth0

2. Ubuntu网卡配置

# /etc/netplan/01-netcfg.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: no
      addresses: [192.168.1.100/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 1.1.1.1]

生效命令:

netplan apply

3. 多网卡绑定

bonding模式:

# 创建bond0
nmcli connection add type bond con-name bond0 ifname bond0 mode active-backup

# 添加从属网卡
nmcli connection add type bond-slave ifname eth0 master bond0
nmcli connection add type bond-slave ifname eth1 master bond0

# 配置IP
nmcli connection modify bond0 ipv4.addresses 192.168.1.200/24 ipv4.gateway 192.168.1.1
nmcli connection up bond0

网络组模式:

# 创建team0
nmcli connection add type team con-name team0 ifname team0 config '{"runner":{"name":"activebackup"}}'

# 添加从属网卡
nmcli connection add type team-slave con-name team0-eth0 ifname eth0 master team0
nmcli connection add type team-slave con-name team0-eth1 ifname eth1 master team0

# 配置IP
nmcli connection modify team0 ipv4.method manual ipv4.addresses 192.168.1.200/24
nmcli connection up team0

十四、网络协议

1. TCP三次握手

2. TCP四次挥手

TCP滑动窗口

TCP滑动窗口是TCP协议中的一种重要机制,用于控制、管理发送方和接收方之间的数据传输,是实现流量控制和拥塞控制的基础。

一、定义与结构

TCP滑动窗口是发送方和接收方之间的一种协议约定,由两个部分组成:

1. 发送窗口

表示可以连续发送的数据段范围,大小取决于网络状况和接收方能力:

  • 已发送且已收到ACK确认的数据
    (我已发我已收)
  • 已发送但未收到ACK确认的数据
    (我已发我未收)
  • 📤 未发送但可以发送的数据
    (我未发你能收)
  • 未发送也不可以发送的数据
    (我未发你不收)

2. 接收窗口

表示可以接收的数据段范围,大小取决于接收方缓冲区大小和处理能力:

  • 已成功接收并确认的数据
    (等待应用进程读取,你已发我已收)
  • 📥 未收到数据但可以接收的数据
    (你未发我能收)
  • 未收到数据并不可以接收的数据
    (你未发我不收)

二、工作原理

  1. 窗口滑动

    • 接收方成功接收数据后窗口前移,通知发送方可发送更多数据
    • 发送方收到ACK确认后发送窗口前移
  2. 流量控制

    • 接收方通过调整窗口大小控制发送速率
    • 缓冲区满时减小窗口 → 降低发送速率
    • 缓冲区空时增大窗口 → 提高发送速率
  3. 提高传输效率

    • 允许连续发送多个数据段(无需等待单个ACK确认)

三、关键参数与计算

1. 窗口大小

属性 说明
TCP头部字段 Window (16位)
默认最大值 65,535字节
窗口缩放因子 最大14 (RFC 7323)
理论最大尺寸 65,535 × 2<sup>14</sup> = 1,073,725,440字节

2. 关键指针

指针 含义
SND.UNA 已发送未确认的首字节序列号
SND.NXT 待发送数据的首字节序列号
RCV.NXT 期望接收的下个数据字节序列号

四、应用与意义

  • 实现动态流量控制与拥塞控制
  • 确保数据传输可靠性
  • 提高网络利用率(减少空闲等待时间)
  • 降低传输延迟

流量控制实现机制

核心原理

通过控制发送窗口的 ⏳ 已发送但未收到ACK确认的数据 部分实现动态调节:

工作流程

  1. 接收窗口反馈
    接收方通过TCP报文头的 Window 字段通告可用缓冲区大小

  2. 发送窗口调整

    graph LR
    A[接收方减小窗口] --> B[发送方缩减待发数据区]
    B --> C[降低发送速率]
    D[接收方增大窗口] --> E[发送方扩展待发数据区]
    E --> F[提高发送速率]
    
  3. 动态平衡

    • 网络拥塞/接收方处理能力不足 → 窗口缩小 → 发送减速
    • 网络通畅/接收方能力增强 → 窗口扩大 → 发送加速

传输过程类比(卡车运输示例)

批次 发送量 接收能力 结果
第一次 6件 5件 ✅ 成功送达5件,1件滞留
第二次 6件 4件 ✅ 送达4件+滞留1件=5件
第三次 4件 5件 ✅ 成功送达4件
第四次 5件 5件 ✅ 动态调整至最佳传输量
文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇