从零开始:Linux系统安装与分区最佳实践
运维老司机的肺腑之言:系统分区就像房屋装修的水电布局,一旦做错,后期改动成本巨大!本文将分享我10年运维经验中总结的分区策略和安装技巧。
开篇:为什么分区策略如此重要?
还记得第一次装Linux系统时的忐忑吗?面对fdisk命令行界面,不知道该如何下手。经历过无数次系统重装、数据丢失的痛苦后,我总结出了这套"零事故"的分区方案。
真实案例:某公司数据库服务器因为分区不当,日志文件撑爆了根分区,导致系统无法启动,最终损失200万。这样的悲剧,完全可以通过合理分区避免!
分区策略全景图
生产环境推荐分区方案
# 标准服务器分区布局(以500GB硬盘为例) /boot - 1GB (启动分区,独立确保系统可启动) / - 50GB (根分区,系统核心文件) /home - 100GB (用户数据,方便迁移和备份) /var - 150GB (日志和缓存,避免撑爆系统) /tmp - 20GB (临时文件,定期清理) /opt - 100GB (第三方软件安装目录) swap - 16GB (虚拟内存,建议为物理内存1-2倍) /data - 剩余 (业务数据专用分区)
不同场景的分区策略
桌面用户方案
/ - 100GB (系统+软件) /home - 剩余 (个人文件) swap - 8GB (内存<16GB时设置)
开发环境方案
/ - 80GB (系统核心) /home - 200GB (开发项目) /var - 50GB (构建缓存) /opt - 100GB (开发工具) swap - 16GB /workspace - 剩余 (项目代码专用)
云服务器方案
/ - 40GB (精简系统) /var - 60GB (日志监控) /data - 剩余 (应用数据) swap - 文件形式(灵活调整)
安装前的硬件检查清单
BIOS/UEFI 配置要点
# 检查启动模式 [ -d /sys/firmware/efi ] && echo "UEFI模式" || echo "Legacy模式" # 关键BIOS设置: Secure Boot: 建议关闭(避免驱动问题) SATA Mode: AHCI模式(性能最佳) Virtualization: 开启(支持容器和虚拟化) UEFI Boot: 推荐开启(支持大硬盘)
硬盘健康检查
# 安装前必做的硬盘检测 smartctl -a /dev/sda # 查看硬盘健康状态 badblocks -v /dev/sda # 坏道检测 hdparm -tT /dev/sda # 性能测试 # 关键指标解读: # Reallocated_Sector_Ct: >0 需警惕 # Current_Pending_Sector: >0 立即更换 # UDMA_CRC_Error_Count: >1000 检查数据线
分区实战演练
方案一:命令行专业分区(推荐)
# 1. 查看磁盘信息 lsblk fdisk -l # 2. 进入分区工具 fdisk /dev/sda # 3. 创建GPT分区表(支持大硬盘) g # 创建GPT分区表 # 4. 创建EFI分区(UEFI必需) n # 新建分区 1 # 分区号 # 起始扇区(默认) +512M # 大小 t # 更改分区类型 1 # EFI System # 5. 创建boot分区 n 2 +1G t 2 20 # Linux filesystem # 6. 创建LVM分区(灵活管理) n 3 # 使用剩余空间 t 3 30 # Linux LVM w # 写入分区表
方案二:LVM动态分区(企业首选)
# 1. 创建物理卷 pvcreate /dev/sda3 # 2. 创建卷组 vgcreate vg_system /dev/sda3 # 3. 创建逻辑卷 lvcreate -L 50G -n lv_root vg_system # 根分区 lvcreate -L 150G -n lv_var vg_system # var分区 lvcreate -L 100G -n lv_home vg_system # home分区 lvcreate -L 20G -n lv_tmp vg_system # tmp分区 lvcreate -L 16G -n lv_swap vg_system # swap分区 # 4. LVM的最大优势:后期可调整! lvextend -L +50G /dev/vg_system/lv_var # 扩容var分区 resize2fs /dev/vg_system/lv_var # 扩展文件系统
文件系统选择策略
主流文件系统对比
| 文件系统 | 适用场景 | 优势 | 劣势 |
| ext4 | 通用场景 | 稳定、兼容性好 | 性能一般 |
| xfs | 大文件、高IO | 高性能、支持大文件 | 不支持缩容 |
| btrfs | 现代化需求 | 快照、压缩、校验 | 相对较新 |
| zfs | 企业存储 | 数据完整性、压缩 | 内存消耗大 |
实战文件系统创建
# ext4 - 通用推荐 mkfs.ext4 -L "root" /dev/vg_system/lv_root mkfs.ext4 -L "home" /dev/vg_system/lv_home # xfs - 高性能场景 mkfs.xfs -L "var" /dev/vg_system/lv_var mkfs.xfs -L "data" /dev/vg_system/lv_data # 设置swap mkswap /dev/vg_system/lv_swap # 优化挂载参数 mount -o defaults,noatime,discard /dev/vg_system/lv_root /mnt
系统安装核心技巧
网络安装配置(推荐)
# 1. 配置网络源(提升安装速度) # CentOS/RHEL 清华源 sed -i 's|^#baseurl=http://mirror.centos.org|baseurl=https://mirrors.tuna.tsinghua.edu.cn|g' /etc/yum.repos.d/CentOS-Base.repo # Ubuntu 阿里源 cat > /etc/apt/sources.list << 'EOF' deb https://mirrors.aliyun.com/ubuntu/ focal main restricted deb https://mirrors.aliyun.com/ubuntu/ focal-updates main restricted deb https://mirrors.aliyun.com/ubuntu/ focal universe deb https://mirrors.aliyun.com/ubuntu/ focal-updates universe EOF # 2. 最小化安装 + 后期定制 # 只安装Base System,避免无用软件包
自动化安装脚本
#!/bin/bash
# auto_install.sh - 自动化分区脚本
DISK="/dev/sda"
VG_NAME="vg_system"
# 分区自动化
parted -s $DISK mklabel gpt
parted -s $DISK mkpart ESP fat32 1MiB 513MiB
parted -s $DISKset 1 esp on
parted -s $DISK mkpart primary 513MiB 1537MiB
parted -s $DISK mkpart primary 1537MiB 100%
parted -s $DISKset 3 lvm on
# LVM自动化
pvcreate ${DISK}3
vgcreate $VG_NAME${DISK}3
lvcreate -L 50G -n lv_root $VG_NAME
lvcreate -L 16G -n lv_swap $VG_NAME
lvcreate -l 100%FREE -n lv_home $VG_NAME
# 文件系统创建
mkfs.fat -F32 ${DISK}1
mkfs.ext4 ${DISK}2
mkfs.ext4 /dev/$VG_NAME/lv_root
mkfs.ext4 /dev/$VG_NAME/lv_home
mkswap /dev/$VG_NAME/lv_swap
echo "分区完成!准备安装系统..."
性能优化黄金配置
fstab优化配置
# /etc/fstab 优化示例 UUID=xxx / ext4 defaults,noatime,discard 0 1 UUID=xxx /boot ext4 defaults,noatime 0 2 UUID=xxx /home ext4 defaults,noatime,discard 0 2 UUID=xxx /var xfs defaults,noatime,discard 0 2 UUID=xxx /tmp ext4 defaults,noatime,discard,nodev,nosuid,noexec 0 2 UUID=xxx none swap defaults 0 0 # 关键参数解释: # noatime: 不更新访问时间,提升性能 # discard: 支持SSD TRIM,延长寿命 # nodev,nosuid,noexec: /tmp安全加固
内核参数调优
# /etc/sysctl.conf 生产环境优化 vm.swappiness = 10 # 降低换页频率 vm.dirty_ratio = 15 # 脏页刷新比例 vm.dirty_background_ratio = 5 # 后台刷新比例 fs.file-max = 2097152 # 最大文件句柄数 net.core.rmem_max = 16777216 # 网络缓冲区优化 net.core.wmem_max = 16777216
安全加固策略
分区安全设置
# 1. /tmp 安全挂载 mount -o remount,nodev,nosuid,noexec /tmp # 2. /var/tmp 链接到 /tmp rm -rf /var/tmp ln -s /tmp /var/tmp # 3. 禁用不必要的文件系统 echo "install cramfs /bin/true" >> /etc/modprobe.d/blacklist.conf echo "install freevxfs /bin/true" >> /etc/modprobe.d/blacklist.conf echo "install jffs2 /bin/true" >> /etc/modprobe.d/blacklist.conf
磁盘加密方案
# LUKS全盘加密(高安全需求) cryptsetup luksFormat /dev/sda3 cryptsetup luksOpen /dev/sda3 encrypted_lvm pvcreate /dev/mapper/encrypted_lvm # 后续LVM操作与常规相同 # 生产环境建议:敏感数据分区加密,系统分区不加密
常见问题解决方案
安装过程问题排查
# 1. 启动失败排查 # 检查grub配置 grub2-mkconfig -o /boot/grub2/grub.cfg # 重新安装grub grub2-install /dev/sda # 2. 分区识别问题 # 更新分区表 partprobe /dev/sda # 检查UUID blkid /dev/sda1 # 3. LVM激活问题 vgchange -ay # 激活所有卷组 vgscan # 扫描卷组 pvscan # 扫描物理卷
救援模式操作
# 系统无法启动时的救援步骤 # 1. 启动救援模式 # 2. 激活LVM vgchange -ay # 3. 挂载根分区 mount /dev/vg_system/lv_root /mnt/sysimage # 4. 进入chroot环境 chroot /mnt/sysimage # 5. 修复问题后重启
监控与维护
分区使用率监控
#!/bin/bash
# disk_monitor.sh - 磁盘监控脚本
THRESHOLD=80
df -h | awk 'NR>1 {
usage = $5
gsub(/%/, "", usage)
if (usage > THRESHOLD) {
print "警告: " $6 " 分区使用率达到 " $5
print "可用空间: " $4
}
}' | mail -s "磁盘空间警告" admin@company.com
LVM扩容操作
# 在线扩容步骤(生产环境验证) # 1. 添加新硬盘 pvcreate /dev/sdb vgextend vg_system /dev/sdb # 2. 扩展逻辑卷 lvextend -L +100G /dev/vg_system/lv_var # 3. 扩展文件系统 # ext4 resize2fs /dev/vg_system/lv_var # xfs xfs_growfs /var
高级技巧分享
自动化部署集成
# kickstart 配置示例(CentOS/RHEL) cat > /var/www/html/ks.cfg << 'EOF' #version=RHEL8 ignoredisk --only-use=sda autopart --type=lvm clearpart --all --initlabel --drives=sda # 分区自定义 part /boot --fstype="xfs" --ondisk=sda --size=1024 part pv.01 --fstype="lvmpv" --ondisk=sda --grow volgroup vg_system --pesize=4096 pv.01 logvol / --fstype="xfs" --size=51200 --name=lv_root --vgname=vg_system logvol /var --fstype="xfs" --size=153600 --name=lv_var --vgname=vg_system logvol swap --fstype="swap" --size=16384 --name=lv_swap --vgname=vg_system EOF
容器化环境分区
# Docker/Kubernetes 节点分区建议 / - 50GB (系统核心) /var/lib/docker - 200GB (容器存储) /var/lib/kubelet - 100GB (Pod存储) /data - 剩余 (持久化存储) # 使用专用文件系统 mkfs.xfs -n ftype=1 /dev/vg_system/lv_docker # Docker需要
安装后检查清单
系统健康检查
# 完整的系统检查脚本 #!/bin/bash echo"=== 系统安装验证报告 ===" echo"安装时间: $(date)" echo"" echo"1. 分区信息:" df -h echo"" echo"2. LVM状态:" vgs lvs echo"" echo"3. 挂载点检查:" mount | column -t echo"" echo"4. 系统负载:" uptime free -h echo"" echo"5. 磁盘IO性能:" ddif=/dev/zero of=/tmp/testfile bs=1G count=1 oflag=direct rm -f /tmp/testfile echo"" echo"6. 网络连通性:" ping -c 3 8.8.8.8 echo"" echo "=== 验证完成 ==="
总结与最佳实践
黄金法则
1. 规划先行:永远不要急着分区,先画出分区图
2. 预留空间:LVM至少保留20%空间用于扩容
3. 分离关键目录:/var、/tmp、/home独立分区
4. 备份重要数据:分区前务必备份重要文件
5. 测试验证:生产环境方案先在测试机验证
运维老司机的忠告
• 选择合适的方案:没有最好的分区方案,只有最适合的
• 自动化是趋势:手工分区效率低,拥抱自动化工具
• 监控不能少:分区不是一劳永逸,需要持续监控
• 保持学习:技术在发展,分区策略也要与时俱进
进阶学习路径
1. 容器化存储:学习Docker、Kubernetes的存储方案
2. 软件定义存储:Ceph、GlusterFS等分布式存储
3. 云原生存储:CSI、StorageClass等Kubernetes存储概念
4. 存储性能优化:NVMe、存储分层等前沿技术
全部0条评论
快来发表一下你的评论吧 !