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
小恐龙
花!
上一篇
下一篇