一、设备文件
1、基础知识
设备文件是 Linux 系统中的一种特殊文件类型,通常位于 /dev 目录下。它代表了设备接口,使得用户空间的程序可以通过标准的文件操作来访问和控制硬件设备。设备文件为周边设备提供了简单的接口,如打印机、硬盘等,也可以访问没有连接到任何真实设备的系统资源,如随机数生成器等。
2、设备文件分类
在Linux系统中,设备文件主要可以分为以下三种类型:
- 字符设备文件:一种按字节流进行操作的设备,如串口、键盘、鼠标等。它们提供的是一种基于字符的输入输出接口,可以使用标准的文件操作函数(如read、write、open和close)对其进行操作。
- 块设备文件:一种按块进行操作的设备,如硬盘、U盘等。它们提供的是一种基于块的输入输出接口,通常使用特定的块设备操作函数(如request_queue、submit_bio等)进行操作。
- 网络设备文件:一种用于网络通信的设备,如网卡等。它们提供的是一种基于数据包的输入输出接口,可以使用特定的网络操作函数(如sendmsg、recvmsg等)进行操作。


设备类型 | 英文 | 标识符 | 存取单位 | 典型设备 |
---|---|---|---|---|
块设备 | block | b | 块 | 磁盘 |
字符设备 | char | c | 字符 | 键盘 |
设备类型 | 设备文件命名 |
---|---|
SAS,SATA,SCSI,IDE,USB等 | /dev/sda,/dev/sdb,/dev/sdc等 |
虚拟磁盘 | /dev/vda,/dev/vdb,/dev/xvda,/dev/xvdb等 |
二、文件系统查看命令 df
1、常见命令
命令格式:
df [option] file
常用选项:
- -l: 只显示本机的文件系统
- -a : 显示所有
- -B : 显示时指定块大小
- --direct : 将挂载点那一列标题显示为文件
- -h : 以方便阅读的方式显示
- -H : 以 1000为单位,而不是1024
- -i : 显示inode 信息而非块使用量
- -k : 同--block-size=1K
- --output[=FIELD_LIST] : 只显示指定字段
- -P : 以Posix兼容的格式输出
- --total : 最后加一行汇总数据
- -t : 根据文件系统类型过滤
- -T : 显示文件系统类型
- -x : 根据文件系统类型反向过滤
2、常用命令示例
#查看磁盘的文件系统信息
df -Th
#指定磁盘查看文件系统信息
df /dev/sda
#指定文件系统类型查看
df -t xfs
三、文件系统目录信息统计命令 du
1、常见命令
命令格式:
du [option] file
常用选项:
- -s : 只显示外层目录
- -h : 以方便阅读的格式显示
- -0 : 输出时以NULL分割,而不是换行
- -a : 显示所有文件和目录大小
- -B : 指定块大小
- -b : 同 --apparent-size --block-size=1
- -c : 汇总
- -d : 指定最大目录层级
- -k : 同 --block-size=1K
- -m : 同 --block-size=1M
- --si : 友好显示,以 1000 为单位,而不是 1024
- -X : 根据文件名忽略
- --exclude=PATTERN : 根据正则表达式忽略
- -x : 忽略不在同一个文件系统的目录
2、常用命令示例
#查看指定目录空间大小信息
du -sh /home
#查看目录下所有文件目录的大小信息
du -h /etc
四、文件系统文件定制命令 dd
1、常见命令
命令格式:
dd [operand]
dd [option]
常用格式:
dd if=/PATH/FROM/SRC of=/PATH/TO/DEST bs=N count=N
常用选项:
- if=file : 从所命名文件读取而不是从标准输入
- of=file : 写到所命名的文件而不是到标准输出
- bs=size : 指定块大小(既是是ibs也是obs)
- count=n : 复制n个bs
- ibs=size : 一次读size个byte
- obs=size : 一次写size个byte
- cbs=size : 一次转化size个byte
- skip=blocks : 读取文件时跳过开头blocks个ibs大小的块
- seek=blocks : 输出到文件时跳过开头blocks个obs大小的块
- conv=conversion[,conversion...] : 用指定的参数转换文件
conversion 转换参数:
- ascii : 转换 EBCDIC 为 ASCII
- ebcdic : 转换 ASCII 为 EBCDIC
- lcase : 把大写字符转换为小写字符
- ucase : 把小写字符转换为大写字符
- nocreat : 不创建输出文件
- noerror : 出错时不停止
- notrunc : 不截断输出文件,不截断的意思就是 -- 覆盖
- sync : 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐
- fdatasync : 写完成前,物理写入输出文件
2、常用命令示例
#将本地的/dev/sdx整盘备份到/dev/sdy
dd if=/dev/sdx of=/dev/sdy
#将/dev/sdx全盘数据备份到指定路径的image文件
dd if=/dev/sdx of=/tmp/image
#将备份文件恢复到指定盘
dd if=/tmp/image of=/dev/sdx
#备份/dev/sdc全盘数据,并利用gzip压缩,保存到指定路径
dd if=/dev/sdc | gzip > /tmp/image.gz
#将压缩的备份文件恢复到指定盘
gzip -dc /tmp/image.gz | dd of=/dev/sdd
#将内存里的数据拷贝到root目录下的mem.bin文件
dd if=/dev/mem of=/root/mem.bin bs=1024
#拷贝光盘数据到root文件夹下,并保存为cdrom.iso文件
dd if=/dev/cdrom of=/root/cdrom.iso
#销毁磁盘数据
dd if=/dev/urandom of=/dev/sda1
五、磁盘分区基础知识
1、磁盘应用逻辑
当一块新磁盘接入,我们可以按照如下步骤,实现在服务器中使用磁盘存储空间的效果:
- 设备分区
- 创建新的文件系统
- 挂载新的文件系统
2、基础知识
磁盘分区是指将一个硬盘划分为多个独立的存储区域,每个区域都拥有自己的文件系统和卷标。通过分区,用户可以将不同类型的文件存放在不同的分区中,便于分类管理和查找。将操作系统和用户数据分别存放在不同的分区中,可以在系统崩溃或需要重装时保护用户数据不受影响。同时合理的分区策略可以减少磁盘碎片,提高磁盘的访问速度和效率。
3、磁盘分区分类
类型 | 定义 | 特点 |
---|---|---|
主分区 | 硬盘上第一个创建的分区,也是唯一一个具有引导功能的分区。 | 它可以安装操作系统,并用于启动电脑。对于小于等于2TB的硬盘,最大可以创建4个主分区;对于大于2TB的硬盘,主分区的数量不受限制。 |
扩展分区 | 将硬盘的一部分划分为一个或多个逻辑分区的集合。扩展分区本身不能直接使用,需要将其划分为逻辑分区后才能使用。 | 扩展分区的最大数量不受限制,但一个物理硬盘上最多只能有3个主分区和1个扩展分区。 |
逻辑分区 | 扩展分区的一部分,可以单独进行格式化和使用。它们没有独立的引导块,因此不能作为启动分区。 | 逻辑分区用于存储数据和应用程序,逻辑分区的数量不受限制,方便用户根据需要对硬盘空间进行划分和管理。 |
非引导分区 | 非引导分区是指不具有引导功能的分区。它可以是主分区、扩展分区中的逻辑分区或GPT分区表中的任何非系统分区,通常用于存储大量数据。 | 非引导分区的数量不受特定限制,主要取决于硬盘的大小和操作系统的支持。它们可以是数据分区、备份分区、恢复分区等,用于满足用户的不同需求。 |
4、磁盘容量单位
- 位(bit):最基本的单位,表示二进制中的0或1。
- 字节(Byte):通常由8个位组成,是数据存储和传输的基本单位。
- 千字节(KB, Kilobyte):1 KB = 1024 Bytes。
- 兆字节(MB, Megabyte):1 MB = 1024 KB。通常用于衡量文件大小和小型存储设备的容量。
- 吉字节(GB, Gigabyte):1 GB = 1024 MB。广泛用于衡量现代硬盘、U盘和大多数文件的容量。
- 太字节(TB, Terabyte):1 TB = 1024 GB。常用于衡量大型硬盘、服务器存储和云存储的容量。
- 拍字节(PB, Petabyte):1 PB = 1024 TB。用于衡量大型数据中心和超级计算机的存储能力。
- 艾字节(EB, Exabyte):1 EB = 1024 PB。用于衡量极其庞大的数据存储,如大型互联网公司的数据存储量。
- 泽字节(ZB, Zettabyte):1 ZB = 1024 EB。
- 尧字节(YB, Yottabyte):1 YB = 1024 ZB。
六、查看块设备信息命令 lsblk
1、常用命令
命令格式:
lsblk [options] [<device> ...]
常用选项:
- -l :以列表显示
- -a : 输出所有设备信息
- -b : 以字节为单位显示设备大小
- -d : 不显示分区信息
- -e : 以主设备号排除设备
- -f : 显示文件系统
- -i : 只使用 ascii 字符输出
- -I : 仅显示指定的设备
- -J : 以json格式显示输出
- -T : 以树状结构显示,默认项
- -m : 显示属主属组及权限
- -n : 不显示表头
- -o : 只显示指定列
- -O : 显示所有列
- -p : 显示设备全路径
- -P : 以 k=>v 的格式显示输出
- -r : 原样输出
- -s : 反向显示关联信息
- -S : 显示scsi设备
- -t : 显示拓扑信息
2、常用命令示例
#查看所有块设备信息
lsblk -a
#显示文件系统信息(UUID、类型等)
lsblk -f
#以列表形式输出
lsblk -l
#显示指定设备
lsblk /dev/sda
七、磁盘分区管理工具 fdisk
1、基础知识
fdisk是一个创建和维护分区表的程序,它兼容DOS类型的分区表、BSD或者SUN类型的磁盘列表。它常被用于创建、删除、调整磁盘分区,以及更改分区类型等操作。
fdisk主要使用传统的MBR(主引导记录)分区表格式。MBR分区表有一些限制,例如最多支持4个主分区或3个主分区和1个扩展分区。
2、常用命令
命令格式:
fdisk [options] <disk>
常用选项:
- -l : 显示
- -b : 指定扇区大小,默认512字节
- -L : 显示时是否添加颜色(auto|always|never)默认启用颜色
- -o : 只显示指定列
- -u : 设置显示单位 cylinders|sectors,默认sectors
- -s : 显示设备有多少个扇区
- -b : 以指定的字节大小来计算扇区数量
- -t : 只显示指定类型的分区表
- -C : 指定柱面数
- -H : 指定磁头数
- -S : 指定每条磁道的扇区数
3、常用子命令
- p : 输出分区列表
- n : 创建新分区
- w : 保存并退出
- t : 更改分区类型
- d : 删除分区
- v : 校验分区
- u : 转换单位
- q : 不保存并退出
- x : 高级功能(专家模式)
4、其他选项
- fdisk : 管理MBR分区
- gdisk : 管理GPT分区
- parted : 高级分区操作,可以是交互或非交互方式
- partprobe : 同步信息到内存,重新设置内存中的内核分区表版本
5、常用命令示例
#查看所有分区列表
fdisk -l
#查看指定磁盘分区信息
fdisk -l /dev/sda
#显示指定列信息
fdisk -lo id,size,type /dev/loop0