1. linux 磁盘管理常用命令
2. df 命令
1. 概述
df 命令用于显示磁盘分区上的可使用磁盘空间, 默认显示单位为KB, 可以利用该命令来获取磁盘占用了多少空间,目前还剩多少空间信息。
2. 语法
df [OPTIONS] FILE
3. 选项
-a: --all 包含全部的文件系统
--block-size=<区块大小> 以指定的区块大小来显示区块数目
-h: --human0readable 以 易读方式显示文件size
-H: --si 与 -h 参数相同, 但是换算是以 1000Bytes 而非 1024bytes
-i: --inodes 显示 inode 信息
-k: --kilobytes 指定区块大小为 1024 字节
-l: --local 仅显示本地端的文件系统
-m: --megabytes 指定本地区块大小为 1m
--no-sync: 在取得磁盘的使用信息, 不执行 sync指令, 此为预设值
-t <文件系统类型> --type=<文件类型> 不要显示指定文件系统类型的磁盘信息
-T --print-type: 显示文件系统的类型
-x <文件系统类型> --exclude-type=<文件系统类型> 不要显示指定文件系统类型的磁盘信息
--help: 帮助信息
--version: 显示版本信息
4. 示例
- 查看硬盘信息
3. du 命令
1. 概述
du命令也是查看使用空间, 但是df df命令是用来查看du命令是对文件和目录磁盘使用空间的查看.
2. 语法
du [OPTIONS] FILE
3. 选项
-a: -all, 显示目录中个别文件的大小
-b: --bytes 显示目录或文件大小, 以 byte 为单位
-c: --total 除了显示个别目录或文件大小, 同时也显示所有文件或目录的总和.
-k: --kilobytes 以 KB 为单位输出
-m: --megabytes 以 MB 为单位输出
-s: --summarize 仅显示总计,
-h: --human-readable 以K,M,G 为单位输出
-x: --one-file-xystem 以一开始处理时的问价那系统为准, 如果遇到不同的文件系统目前则略过
-L <符号链接>: --derfernce <符号链接> 显示选择中所指定符号链接的源文件大小
-S: --separate-sirs 显示个别目录的大小时, 并不含其子目录的大小
-X <文件>: --exclude-from=<文件> 在文件指定目录或文件
--exclude=<目录或文件>: 略过指定目录或文件
-D: --derfernce-args 显示指定符号链接的源文件
-H: -si 产生书相同, 以K, M, G 换算的单位
-l: --count-links 重复计算硬件链接的文件
4. 示例
- 获取 /tmp 目录大小
- 查看指定文件大小
2. 磁盘分区
2.1 不重启添加硬盘
新添加一块硬盘
查看是否存在硬盘
2.1.1 SCSI 硬盘扫描机制介绍
linux 系统体用了多种机制重新扫描SCSI 总线, 并将SCSI设备添加到系统中, 2.6 内核中, LUN 扫描机制, Linux 目前缺乏 drvconfig 或 ioscan 那样允许动态SCSI 通道重配命令. 磁盘进行重新配置的方式包括:
- 重启系统
- 卸载并重新加载HBA驱动模块
- echo /proc SCSI 设备列表
- 通过 /sys 下属性设置运行 SCSI 扫描
- 通过HBA 厂商脚本运行SCSI 扫描
- 重启系统:
重启主机是检测新添加硬盘设备的可靠方式, 在所有I/O 停止之后重启主机, 同时静态或以模块方式连接磁盘驱动, 系统初始化时会扫描PCI 总线, 因此瓜子啊其上 SCSI host adaper 会被扫描到, 并生成一个 PCI device, 之后扫描软件会为PCI device 加载相应的驱动程序, 加载SCSI host 驱动时, 其探测函数会初始化SCSI host, 注册中断处理函数, 最后调用 scsi_scan_host 函数扫描scsi host adapter 所管理的所有scsi 总线.
- 重新加载HBA 驱动:
通常情况下, HBA 驱动会在系统中以模块形式加载, 从而允许驱动被写在并重新加载, 该过程中 SCSI 扫描函数得以调用, 通常, 在写在HBA 驱动之前, SCSI 设备的所有I/O 都应该停止, 卸载文件系统, 多数路径服务应用也需要停止, 如果有代理或 HBA 应用帮助模块, 也应当中止.
命令示例:
# 卸载驱动
modprobe -r lpfc
# 加载驱动
modprobe lpfc
# /proc 下SCSI 扫描中 /proc系统文件提供了可用 SCSI 设备的列表, 如果系统中SCSI 设备重新配置, 那么 所欲偶浙西改变通过 echo /proc 接口反映SCSI 添加一个设备, 主机, channel, target ID, 以及磁盘设备的LUN 编号会被添加到 /proc/scsi/ 需要指定 scsi编号.
# 示例:
echo "scsi add-single-device 0 1 2 3" > /proc/scsi/scsi
# 0: 主机
# 1: channel ID
# 2: target ID
# 3: LUN 编号
# 添加第一块scsi硬盘
echo "scsi add-single-device 0 0 1 0" > /proc/scsi/scsi
- /sys 下 SCSI 扫描
# 2.6 内核中, HBA 驱动将 SCAN 功能导出值 /sys目录下, 可用来重新扫描该接口下的 SCSI 磁盘设备,
cd /sys/class/scsi_host/host4
ls -an scan
echo '- - -' > scan
# '- - -' 代表 channel, target 和LUN 编号, 以上命令会导致 hba4 下所有 channel, target 以及可见LUN 被扫描.
RHEL5+:
echo '- - -' > /sys/class/scsi_host/host0/scan
2.2 fdisk 硬盘分区
1. 概述
fdisk 命令用于查看硬盘使用情况, 也可以用于对硬盘分区, 采用的是传统的交互式操作页面.
2. 语法
fdisk [OPTIONS] [DEVICE]
3. 选项
-b <分区大小>: 指定每个分区的大小
-l: 列出硬盘设备的分区表状况
-s <分区号>: 将制定的分区大小输出到标准输出, 单位为区块
-u: 搭配 -l 参数使用, 将会使用分区块数目取代柱面数目, 来表示每个分区的起始地址.
-v: 显示版本信息
4. 交互命令
fdisk 命令在对硬盘进行分区操作时, 需要使用交互命令.
a: 设置可引导标记, (活动分区/引导分区 之间的切换)
b: 编辑BSD 磁盘标签
c: 设置DOS 操作系统兼容标记, (兼容/不兼容 之间的切换)
d: 删除一个分区
l: 显示可以使用的分区类型
m: 输出帮助信息
n: 创建一个新的分区
p: 创建一新的主分区,
e: 创建扩展分区
o: 创建一个新的空白 DOS 分区表
p: 显示 当前的分区表
q: 不保存退出
s: 创建一个新的 Sun 硬盘标记
t: 修改分区的 类型ID(可以使用 l查看所有的分区类型)
u: 改变显示输入单位
v: 验证分区表
w: 保存分区信息到硬盘并 退出
x: 额外功能(高级功能)
5. 示例
- 为新添加的硬盘(sdb) 划分分区, 一个8G 主分区, 一个5G 扩展分区, 从扩展分区分出一个5G分区 ,剩余部分划分为 逻辑卷. 创建一个普通分区:
创建一个扩展分区:
创建一个lvm:
保存并退出: 输入 w
命令, 保存并退出, 输入 fdisk -l
命令查看是否成功.
2.3 parted 硬盘分区
1. 概述
很多时候企业内部使用的硬盘(raid) 都比较大, 常常超过2t 需要使用gpt 分区, 这时候fdisk 不能使用了, 就需要使用 parted , parted 命令是由GUN 组织开发的一款强大的磁盘分区和分区调整工具, 与fdisk 不同的是, 它支持 调整分区大小, 他没有构建成向 fdisk 那样的多分区类型, 但是可以处理常见分区, 例如: ext2, ext3, fat16, fat32, NTFS, JFS, XFS, UFS, HFS, 以及 SWAP. parted 有交互是操作 操作方式fdisk 类似, 和非交互式操作.
2. 语法
parted [OPTIONS] DEVICE [COMMAND]
3. 选项
-h: 显示帮助信息
-i: 交互模式
-s: 脚本模式, 不提示用户
-v: 显示版本号
4. 命令
cp <FROM-DEVICE>: 将文件系统复制到另一个分区上
help <COMMAND>: 打印帮助信息, 如果指定命令 则打印对应命令的帮助信息
mklabel <label>: 创建新的磁盘标签(分区表)
mkfs MINOR <FileType>: 在 MINOR 上创建文件类型.
mkpart 分区类型 <文件系统类型> 起点 终点: 创建一个分区, 需要指定分区类型, 可以指定文件系统
move MINOR 名称: 将编号 MINOR 的分区命名为 '新的名称'
print [MINOR]: 显示分区表, 或者分区
quit: 退出交互模式
rescue 起点 终点: 挽救 '起点', '终点' 的遗失的分区
resize MINOR 起点 终点: 改变位于编号诶 MNOR 的分区中文件系统的大小
rm MINOR: 删除编号为 MINOR 的分区
select 设备: 选择需要编辑的设备
set MINOR 标志 状态: 改变 MINOR 的分区标志
5. 示例
创建一个普通的分区:
创建一个LVM 分区:
查看分区:
1. LVM 概念以及使用
1. LVM 是什么
LVM 是动态卷管理, 可以将多个硬盘和硬盘分区做成一个逻辑卷, 并把这个逻辑卷作为一个整体来管理, 动态对分区进行扩缩空间大小.安全方便.
2. LVM 的四个概念
- PE(Physical Extend) 物理拓展
- PV(Physical Volume) 物理卷
- VG(Volume Group) 卷组
- LV(Logical Volume) 逻辑卷
- 不同格式的磁盘系统, 都可以被格式化为PV
- 物理卷磁盘需要被格式化为PV, 空间被划分为一个个PE,
- 不同PV 加入到同一个VG中, 不同PV 的PE 全部进入VG 的PE 池中,
- LV 基于PE 创建, 大小为PE的整数倍, 组成LV 的PE 可能来自于不同的物理磁盘
- LV 可以直接格式化使用
- LV 的扩展就是 增加/减少 LV的PE数量, 其过程不会丢失原始数据
LVM 创建以及管理的顺序: pv -> vg -> lv
如果需要删除操作, 需要反方向按顺序操作.
3. LVM的管理
- 查看:
# 查看pv
pvs
pvdisplay
# 查看vg
vgs
vgdisplay
# 查看lv
lvs
lvdisplay
- 创建/添加操作
# 创建 pv
# 将设备创建为pv, 仅仅是将设备划分出PE块, 所以PV没有扩建
pvcreate DEVICE
# 删除 pv
pvremove DEVICE
# 创建 vg
vgcreate VG_NAME DEVICE
# 扩容 vg
vgextend VG_NAME NEW_PV
# 删除 vg
vgremove VG_NAME
# 创建 lv
lvcreate -n NAME -L SIZE PATH/LV_NAME
# 扩容 lv
lvextend -L +SIZE PATH/LV_NAME
# 缩小 lv
lvreduce -L -SIZE PATH/LV_NAME
# 删除 lv
lvremove VG_NAME
- 格式化和挂载
# 格式化磁盘
mkfs.ext4 PATH/LV_NAME
# 刷新已挂载分区的容量
resize2fs PATH
4. 示例
- 创建 pv
- 创建 vg
- 创建 lv
- 格式化和挂载
- 扩展 vg 先创建pv
扩容 vg
- 扩容lv
- 卸载分区, 删除lv, 删除vg, 删除pv
END