11-Linux操作系统使用
一、磁盘信息查看命令
df - 查看磁盘使用情况
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15# 查看所有磁盘使用(人类可读格式)
df -h
# 查看特定文件系统类型
df -h -t xfs
# 查看inode使用情况
df -i
# 显示完整的文件系统类型
df -Th
# 示例输出:
# Filesystem Type Size Used Avail Use% Mounted on
# /dev/sda1 ext4 50G 30G 20G 60% /du - 查看文件和目录大小
1
2
3
4
5
6
7
8
9
10
11
12
13
14# 查看当前目录总大小
du -sh
# 查看指定目录大小
du -sh /var/log
# 查看目录下各文件/目录大小并排序
du -h /home | sort -rh | head -10
# 只显示一级子目录大小
du -h --max-depth=1 /etc
# 排除某些目录
du -sh --exclude="*.log" /varlsblk - 列出块设备
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17# 列出所有块设备
lsblk
# 显示详细信息(包括文件系统)
lsblk -f
# 显示所有信息(包括主次设备号)
lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT,LABEL,UUID
# 树状显示
lsblk -t
# 示例:
# NAME SIZE TYPE FSTYPE MOUNTPOINT
# sda 100G disk
# ├─sda1 500M part ext4 /boot
# └─sda2 99.5G part LVM2_memberblkid - 查看块设备属性
1
2
3
4
5
6
7
8
9
10
11# 查看所有块设备的UUID和文件系统
blkid
# 查看特定设备
blkid /dev/sda1
# 只显示UUID
blkid -s UUID /dev/sda1
# 示例输出:
# /dev/sda1: UUID="xxxx-xxxx" TYPE="ext4"
二、磁盘分区命令
fdisk - MBR分区工具(<2TB)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15# 查看磁盘分区表
sudo fdisk -l
# 对/dev/sdb进行分区(交互式)
sudo fdisk /dev/sdb
# 常用命令:
# n - 新建分区
# p - 显示分区表
# d - 删除分区
# t - 更改分区类型
# w - 保存并退出
# q - 不保存退出
# 非交互式创建分区示例
echo -e "n\np\n1\n\n+10G\nw" | sudo fdisk /dev/sdbgdisk - GPT分区工具(>2TB)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21# 查看GPT分区
sudo gdisk -l /dev/sdb
# 进入交互模式
sudo gdisk /dev/sdb
# 常用命令:
# n - 新建分区
# p - 打印分区表
# d - 删除分区
# w - 保存并退出
# ? - 查看帮助
# 示例:创建GPT分区表并分区
sudo gdisk /dev/sdb
# 输入: o (创建新的GPT分区表)
# 输入: n (新建分区)
# 输入: 1 (分区号)
# 输入: (起始扇区,回车默认)
# 输入: +20G (分区大小)
# 输入: 8300 (Linux文件系统类型)
# 输入: w (保存)parted - 高级分区工具
1
2
3
4
5
6
7
8
9
10
11
12
13
14# 查看分区信息
sudo parted /dev/sdb print
# 创建GPT分区表
sudo parted /dev/sdb mklabel gpt
# 创建主分区(从0到10G)
sudo parted /dev/sdb mkpart primary 0% 10GB
# 创建第二个分区(从10G到100%)
sudo parted /dev/sdb mkpart primary 10GB 100%
# 设置分区标志
sudo parted /dev/sdb set 1 boot onpartprobe - 刷新分区表
1
2
3
4
5
6
7
8
9
10
11
12
13# 刷新所有磁盘分区表
sudo partprobe
# 刷新指定磁盘
sudo partprobe /dev/sdb
# 强制刷新
sudo partprobe -s
# 示例:分区后立即刷新
sudo fdisk /dev/sdb # 创建分区
sudo partprobe /dev/sdb # 刷新分区表
lsblk # 验证新分区
三、文件系统命令
mkfs - 创建文件系统
1
2
3
4
5
6
7
8
9
10
11
12
13
14# 格式化为ext4
sudo mkfs.ext4 /dev/sdb1
# 格式化为xfs
sudo mkfs.xfs /dev/sdb1
# 格式化为ext4并指定标签
sudo mkfs.ext4 -L DATA_DISK /dev/sdb1
# 快速格式化(跳过坏块检查)
sudo mkfs.ext4 -q /dev/sdb1
# 指定块大小
sudo mkfs.xfs -b size=4096 /dev/sdb1mount/umount - 挂载/卸载
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20# 临时挂载
sudo mount /dev/sdb1 /mnt/data
# 挂载时指定选项
sudo mount -o rw,noatime /dev/sdb1 /mnt/data
# 挂载ISO文件
sudo mount -o loop ubuntu.iso /mnt/iso
# 永久挂载(编辑/etc/fstab)
echo '/dev/sdb1 /data ext4 defaults 0 0' | sudo tee -a /etc/fstab
# 测试fstab配置
sudo mount -a
# 卸载
sudo umount /mnt/data
# 强制卸载(当设备忙时)
sudo umount -l /mnt/data
四、LVM逻辑卷管理
创建流程:PV → VG → LV
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19# 1. 创建物理卷(PV)
sudo pvcreate /dev/sdb1
sudo pvcreate /dev/sdc1
# 2. 创建卷组(VG)
sudo vgcreate vg_data /dev/sdb1
# 3. 扩展卷组
sudo vgextend vg_data /dev/sdc1
# 4. 创建逻辑卷(LV)
sudo lvcreate -L 20G -n lv_www vg_data
# 5. 格式化逻辑卷
sudo mkfs.xfs /dev/vg_data/lv_www
# 6. 挂载使用
sudo mkdir /www
sudo mount /dev/vg_data/lv_www /www查看命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16# 查看物理卷
sudo pvdisplay
sudo pvs
# 查看卷组
sudo vgdisplay
sudo vgs
# 查看逻辑卷
sudo lvdisplay
sudo lvs
# 查看详细信息
sudo pvscan
sudo vgscan
sudo lvscan扩展操作
1
2
3
4
5
6
7
8
9
10
11
12# 1. 扩展逻辑卷(先扩展LV,再扩展文件系统)
sudo lvextend -L +10G /dev/vg_data/lv_www
# 2. 扩展文件系统
# 对于xfs
sudo xfs_growfs /dev/vg_data/lv_www
# 对于ext4
sudo resize2fs /dev/vg_data/lv_www
# 一步完成扩展
sudo lvextend -L +5G -r /dev/vg_data/lv_www删除流程:LV → VG → PV
1
2
3
4
5
6
7
8
9
10
11# 1. 卸载逻辑卷
sudo umount /www
# 2. 删除逻辑卷
sudo lvremove /dev/vg_data/lv_www
# 3. 删除卷组
sudo vgremove vg_data
# 4. 删除物理卷
sudo pvremove /dev/sdb1 /dev/sdc1
五、命令速查表
| 操作 | 命令示例 |
|---|---|
| 查看磁盘 | df -h home |
| 查看目录大小 | du -sh var/log |
| 列出块设备 | lsblk -f |
| 查看UUID | blkid dev/sda1 |
| MBR分区 | fdisk dev/sdb |
| GPT分区 | gdisk dev/sdb |
| 高级分区 | parted dev/sdb print |
| 刷新分区 | partprobe dev/sdb |
| 格式化 | mkfs.xfs dev/sdb1 |
| 挂载 | mount dev/sdb1 /mnt |
| 卸载 | umount mnt |
| 创建PV | pvcreate dev/sdb1 |
| 创建VG | vgcreate vg1 /dev/sdb1 |
| 创建LV | lvcreate -L 10G -n lv1 vg1 |
| 扩展LV | lvextend -L +5G dev/vg1/lv1 |
六、重点提醒
生产环境操作必须遵守:
- 先备份后操作:操作前备份分区表和重要数据
- 双重确认:每个危险操作都要确认两次
- 记录操作:详细记录每个操作步骤
- 逐步执行:不要一次性执行多个危险命令
- 准备回滚:提前准备好回滚方案
- 选择时机:在业务低峰期操作
- 通知相关人员:操作前通知所有相关人员
- 测试环境验证:先在测试环境验证操作流程
RAID 如何解决“磁盘高可用”问题?
核心思想:数据冗余。
通过在多块磁盘上存储额外的校验信息或副本,当其中一块(或多块,取决于RAID级别)磁盘发生物理故障时,数据不会丢失,系统可以继续运行或快速恢复。
典型代表:RAID 1, RAID 5, RAID 6, RAID 10
- RAID 1(镜像): 将相同的数据同时写入两块磁盘。一块坏了,另一块有完整数据,可用性极高。
- RAID 5(分布式奇偶校验): 将数据和奇偶校验信息交错存储在所有磁盘上。允许任意一块磁盘故障而不丢失数据。
- RAID 6(双重分布式奇偶校验): 类似RAID 5,但有两份校验信息,可以容忍任意两块磁盘同时故障。
- RAID 10(先镜像再条带化): 结合了RAID 1的高可靠性和RAID 0的高性能。至少允许每个镜像对中坏一块盘(最坏情况可能只坏一块,最好情况可坏多块)。
注意: RAID 0 没有冗余,它反而降低了可用性(任何一块盘损坏,全部数据丢失)。它只解决容量和性能问题。
RAID 如何解决“单块磁盘容量小”的问题?
核心思想:条带化。
将数据分割成块(条带),然后并发地写入多块磁盘。这样,逻辑上形成了一个容量更大、速度更快的“大磁盘”。
典型代表:RAID 0, RAID 5, RAID 6, RAID 10
- RAID 0(条带化): 纯粹为了扩容和提速。N块盘组成一个逻辑盘,容量是N块盘之和,读写速度接近N倍(理想情况下)。
- 其他级别(RAID 5/6/10): 它们在提供冗余的同时,也通过条带化来利用多块盘的容量和性能。虽然因为存储校验信息或镜像会损失一部分可用容量,但最终逻辑容量仍然远大于单盘。
容量计算示例:
- RAID 0: 总容量 = 单盘容量 × 磁盘数量
- RAID 1: 总容量 = 单盘容量 (镜像对容量减半)
- RAID 5: 总容量 = 单盘容量 × (磁盘数量 - 1) (损失一块盘容量用于校验)
- RAID 6: 总容量 = 单盘容量 × (磁盘数量 - 2) (损失两块盘容量用于双重校验)
- RAID 10: 总容量 = 单盘容量 × (磁盘数量 / 2) (必须由偶数块盘组成)
主要RAID级别对比与选型建议
| RAID级别 | 别名 | 最少磁盘数 | 容量利用率 | 可靠性 | 读性能 | 写性能 | 适用场景 |
|---|---|---|---|---|---|---|---|
| RAID 0 | 条带卷 | 2 | 最高 (100%) | 最低(无冗余) | 极高 | 极高 | 对速度要求极高、可接受数据丢失的场景(如视频缓存、临时渲染) |
| RAID 1 | 镜像卷 | 2 | 低 (50%) | 极高(可坏1块) | 高(可并发读) | 中等(需写两份) | 对可靠性要求极高、容量需求不大的场景(如系统盘、关键小数据库) |
| RAID 5 | 分布式校验 | 3 | 较高 (n-1)/n | 高(可坏1块) | 高 | 中等(需计算校验) | 通用平衡之选。兼顾存储效率、可靠性和性能,适用于文件服务器、中小数据库。注意:重建大容量硬盘压力大。 |
| RAID 6 | 双重校验 | 4 | 中等 (n-2)/n | 很高(可坏2块) | 高 | 较低(需计算双重校验) | 对可靠性要求极高、使用大容量SATA硬盘的场景(如归档存储、视频监控) |
| RAID 10 | 镜像+条带 | 4 | 低 (50%) | 极高(可坏多块,但有限制) | 极高 | 高 | 高性能高可靠之选。对性能和可靠性都有严苛要求的场景(如大型数据库、虚拟化主机、高负载应用服务器) |
重要补充与最佳实践
1. RAID不是备份:
- RAID主要防止硬件故障(磁盘损坏)。
- 它无法防止逻辑错误(如误删除、病毒破坏、软件故障、火灾盗窃)。必须结合定期备份才能构成完整的数据保护策略。
2. 硬件RAID vs 软件RAID:
- 硬件RAID: 使用专用RAID卡(带处理器和缓存),性能好,不消耗主机资源,操作系统识别为单块盘。稳定性高,但成本也高。
- 软件RAID: 由操作系统(如Windows的“磁盘管理”,Linux的mdadm)驱动实现。成本低,配置灵活,但消耗CPU,性能稍差,且与系统耦合。
3. 热备盘:
在阵列中配置一块空闲磁盘。当阵列中某块活动磁盘故障时,系统会自动使用热备盘进行重建,无需人工干预,进一步提高了可用性。
4. 重建与监控:
- 阵列降级(有盘损坏)后,重建过程对剩余磁盘是巨大的I/O压力。RAID 6在此场景下更具优势。
- 必须启用监控(邮件/短信告警),以便在磁盘故障时及时获知并更换。
总结
选择RAID级别,本质是在容量利用率、性能、可靠性和成本之间做权衡。
- 追求极致速度且不怕丢数据: 选RAID 0。
- 追求极高可靠性且不计成本: 选RAID 1或RAID 10。
- 寻求最佳平衡点(通用场景): 选RAID 5(盘数少或盘容量不大时)或RAID 6(盘多容量大时)。
- 既要高性能又要高可靠: 预算充足,首选RAID 10。
最终,RAID是企业存储架构的基石,完美地解决了单盘容量小和缺乏高可用的问题,但它必须与定期备份和有效监控相结合,才能构建健壮的数据存储体系。
