一,磁盘基础知识
- 硬盘设备是由大量的扇区组成,每个扇区的容量为512B。其中第一个扇区里面保存着主引导记录和分区表信息,主引导记录占446B,分区表64B,结束符2B;
- 其中分区表每记录一条信息就使用了16B,所以最多只能4个分区信息可以写入第一个扇区中,着4个分区就是主分区
- 由于第一个扇区最多只能创建4个分区,为了解决分区个数不够的问题,可以将第一个的分区表中的16B(原本要写入主分区信息)的空间(扩展分区)拿出来指向另外一个分区
- 扩展分区不是真实存在的,而更像是一个占用16B分区表空间的指针(指向另一个分区的指针)。
- 如此用户一般使用3个主分区和一个扩展分区的方法,然后在扩展分区中创建数个逻辑分区,由此满足多发区的需求
注意:
- 扩展分区并不是真实分区,只是一个指向下一个分区的指针,这种指针结构形成一个单向链表
- 单向链表是一种数据结构,其中每个节点包含一个数据元素和一个指向下一个节点的指针。这种链表的链接方向是单向的,因此对链表的访问需要通过顺序读取从头部开始。单向链表常用于需要频繁插入和删除操作的场景中
二,磁盘设备及命名
Linux系统中一切皆是文件,硬件设备也不例外。每一个硬件设备都有对应的文件名称,而系统内核中的udev设备管理器会自动将硬件名称规范起来,以便于用户通过设备的文件名称了解设备属性和分区信息。
Linux系统中的磁盘设备通常位于 /dev 目录下,设备名称根据不同的类型和接口有所不同。常见的磁盘设备命名方式如下:
- IDE/SATA 磁盘:/dev/sda, /dev/sdb 等。第一个硬盘通常是 /dev/sda,第二个是 /dev/sdb,以此类推。
- SCSI 磁盘:/dev/sda, /dev/sdb 等,与SATA设备命名规则相同。
- NVMe 磁盘:/dev/nvme0n1, /dev/nvme1n1 等,表示NVMe接口的固态硬盘(SSD)。
- USB 存储设备:通常以 /dev/sdX 或 /dev/sdXY(X是字母,Y是分区号)命名。
常见硬件设备在Linux中的文件名:
硬件设备 | 文件名称 |
IDE硬盘 | /dev/hd[a-d] |
SATA硬盘 | /dev/sd[a-p] |
光驱 | /dev/cdrom 或 /dev/sr0 |
USB存储设备 | /dev/sd[a-p] |
网络接口卡 | /dev/net/tun |
打印机 | /dev/lp[0-9] |
鼠标 | /dev/input/mouse0 |
显卡 | /dev/fb0 |
一台主机上可以有至多16块不同的硬盘,硬盘分区编号规则如下:
- 主分区或扩展分区的编号从1开始,4结束
- 逻辑分区从编号5开始
/dev/sda5设备文件名称包含的信息:
- 设备类型:/dev/目录中保存的是硬件设备文件。
- 存储设备:sd表示这是一个存储设备。
- 设备顺序:a表示这是系统中同类接口中第一个被识别到的设备。
- 分区编号:5表示这是一个逻辑分区。
扩展:udev设备管理器概述
udev是Linux内核2.6系列中的设备管理器。它的主要功能是管理/dev目录下的设备节点。udev在用户空间运行,而不是在内核空间运行,这使得它更加灵活和强大1。
主要功能
- 动态管理设备:当设备添加或删除时,udev会监听内核发出的uevent,相应地添加或删除/dev下的设备文件。
- 自定义命名规则:udev允许用户通过定义规则文件来为设备生成具有标识性的设备文件名。
- 设定设备权限和所有者:udev可以根据设备的属性来设置设备文件的权限和所有者/组1。
工作流程
- 事件触发:当设备状态发生变化时(如添加、删除设备),内核会发出uevent。
- 规则匹配:udev守护进程接收到uevent后,会根据规则文件中的定义来匹配设备属性。
- 执行操作:如果找到匹配的规则,udev会根据规则中的指示来执行相应的操作,如创建设备文件、设置权限等1。
配置与使用
在CentOS中,udev通常是默认安装的,无需手动下载和安装。用户可以通过编辑/etc/udev/udev.conf 文件来覆盖udev的默认值,或通过编写自定义规则文件来实现特定的设备管理需求1。
规则文件
udev的规则文件通常存放在/etc/udev/rules.d/目录下,以*.rules命名。规则文件由多条规则组成,每条规则由多个键值对组成,用于匹配设备属性并执行相应的操作1。
三,磁盘管理工具使用
虚拟机新增硬盘的流程
- 打开虚拟机软件:首先,需要打开你正在使用的虚拟机软件,例如VMware或者VirtualBox。
- 选择目标虚拟机:在虚拟机列表中找到你想要添加硬盘的虚拟机,并选中它。
- 进入设置界面:通常在虚拟机软件的顶部菜单栏中会有“设置”或者“配置”的选项,点击它进入虚拟机的设置界面。
- 添加新硬盘:在设置界面中,找到“硬盘”或者“存储”选项,然后点击“添加硬盘”或者类似的选项。
- 配置新硬盘:在弹出的窗口中,你可以选择硬盘的类型(例如SATA或者SCSI),以及硬盘的大小。你可以根据需要选择合适的配置。
- 确认并保存设置:完成配置后,点击“确定”或者“保存”按钮,确认你的设置。此时,虚拟机软件会创建一个新的虚拟硬盘并将其添加到虚拟机中。
- 启动虚拟机:完成上述步骤后,启动虚拟机。在虚拟机内部,你应该能够看到新增的硬盘。如果需要,你可以对其进行分区、格式化等操作。
常用的磁盘管理工具
- fdisk:这是一个基于菜单的命令行工具,用于对硬盘进行分区。它在DOS、Windows和Linux中都有相应的应用程序1。
- cfdisk:这是一个基于文本用户界面的分区工具,类似于fdisk,但提供了更友好的用户界面1。
- parted:这是一个功能强大的分区工具,支持对大容量磁盘进行分区操作。它可以用来创建、删除、调整分区大小等操作1。
- mkfs:这个命令用于在硬盘分区上建立文件系统。类似于Windows下的格式化硬盘。建立文件系统的命令是mkfs,格式如下:。mkfs[参数]文件系统 -t:指定要创建的文件系统类型。 -c:建立文件系统前首先检查坏块。 -V:输出建立文件系统详细信息1。
- fsck:这个命令主要用于检查文件系统的正确性,并对Linux磁盘进行修复。fsck命令的格式如下:。fsck[参数选项]文件系统 -t:给定文件系统类型,若在/etc/fstab中已有定义或kernel本身已支持的不需添加此 -s:一个一个地执行fsck命令进行检查。 -A:对/etc/fstab中所有列出来的分区进行检查。 -C:显示完整的检查进度。 -d:列出fsck的debug结果。 -a:如果检查中发现错误,则自动修复。 -r:如果检查有错误,询问是否修复1。
- dd:这个命令用于将指定的输入文件拷贝到指定的输出文件上。并且在复制过程中可以进行格式转换。dd命令与cp命令的区别在于:dd命令可以在没有创建文件系统的软盘上进行,拷贝到软盘的数据实际上是镜像文件。类似于DOS中的diskcopy命令的作用。dd命令的格式为:。dd[bs=块字节大小][count=块数] 1。
- du:这个命令用于显示磁盘空间的使用情况。该命令逐级显示指定目录的每一级子目录占用。du[参数选项][name---] du命令的参数选项: -s:对每个name参数只给出占用的数据块总数。 -b:以字节为单位列出磁盘空间使用情况(AS4.0中默认以KB为单位)。 -k:以1024字节为单位列出磁盘空间使用情况。 -l:计算所有文件大小,对硬链接文件重复计算。 -x:跳过在不同文件系统上的目录,不予统计1。
项目一:fdisk工具使用
fdisk 是一个用于管理硬盘分区的命令行工具,常用于 Linux 和类 Unix 操作系统。它提供了对硬盘分区表的创建、删除、修改和查看的功能。通过 fdisk,用户可以在磁盘上创建新的分区、删除旧的分区、调整现有分区的大小或类型,并显示分区的详细信息。
主要功能:
- 查看分区:列出磁盘上的所有分区及其详细信息。
- 创建新分区:在未分配空间的磁盘上创建新分区。
- 删除分区:删除现有的分区。
- 修改分区:调整分区的大小或类型。
- 更改分区类型:修改分区的文件系统类型(如从 Linux 类型更改为 Windows 类型)。
- 写入更改:将所做的更改写入磁盘。
fdisk -l:列出所有磁盘的分区信息。
fdisk /dev/sda:启动 fdisk 对 /dev/sda 磁盘进行操作。
选项 | 功能 |
-u | 与 -l搭配使用,显示分区数目12 |
-s | 指定分区2 |
-v | 显示版本信息2 |
m | 显示菜单和帮助信息13 |
a | 活动分区标记/引导分区13 |
d | 删除分区13 |
l | 显示分区类型13 |
n | 新建分区13 |
p | 显示分区信息13 |
t | 修改分区的类型13 |
w | 保存并写入分区表的更改13 |
q | 退出fdisk而不保存更改13 |
v | 进行分区检查1 |
1,首先通过编辑虚拟机设置增加一块硬盘,格式为SCSI,大小为20G,命名为/dev/sdb
lsblk查看新增的硬盘设备,可以看到命名为/dev/sdb
2,对新增硬盘进行操作,需求是在硬盘上创建大小500MB,文件系统为ext4的/dev/sdb1的主分区
首先打开fdisk操作菜单 fdisk /dev/sdb
输入p,查看当前分区表。可以看到目前是没有任何分区的
根据信息可以看到/dev/sdb硬盘大小为21.5GB,21474836480 字节,41943040 个扇区,每个扇区大小是512字节。分别能从第七行的七个字段读取到起始扇区(Start)、结束扇区(End)、块数(Blocks)、分区ID(Id)以及分区类型(System)
3,输入n,创建一个新分区;输入p,选择创建主分区;输入该分区的其实,结束扇区,以确定分区大小。也可以使用+sizeM或sizeK的方式指定分区大小
4,输入L能够查看已知的分区类型及其id,例如linux的id为83。输入t,指定/dev/sdb1的文件类型为Linux
5,分区操作结束后,输入w,将分区信息写入分区表并退出
6,如果需要删除磁盘分区,则需在fdisk菜单下输入d,并选择需要删除的分区即可,删除操作完成之后输入w,保存退出
7,为了以便于项目二的实施开展,需要重复1-5的步骤以建立磁盘分区/dev/sdb2,/dev/sdb3。fdisk菜单操作完成效果如下
项目二:mkfs工具使用
硬盘分区之后,下一步就需要建立文件系统。类似于windows下的格式化硬盘,在硬盘分区上建立文件系统会冲掉分区上的数据,而且不可恢复。建立文件系统的命令是mkfs
常见文件系统类型
文件系统类型 | 描述 | 适用场景 |
ext4 | 第四代扩展文件系统,是 Linux 的默认文件系统,具有良好的性能和稳定性。 | 适用于大多数 Linux 发行版,适合通用用途。 |
xfs | 高性能的文件系统,特别适合于大型数据集和高并发环境。 | 适用于数据库服务器、文件服务器等高性能需求的场景。 |
btrfs | 提供先进的功能,如快照、压缩和数据校验,但相对复杂。 | 适用于需要高级数据管理功能的场景,如备份和恢复。 |
ntfs | Windows 的默认文件系统,兼容性好。 | 适用于需要与 Windows 系统互操作的场景。 |
vfat | 适用于 FAT32 文件系统,常用于 USB 驱动器和移动设备。 | 适用于需要跨平台兼容的场景,如在 Linux 和 Windows 之间共享数据。 |
项目需求:在/dev/sdb1上建立ext4类型的文件系统,建立时检测磁盘坏块并显示详细信息
1,mkfs -t ext4 -V -c /dev/sdb1
命令解析
- mkfs: 这是“make filesystem”的缩写,用于在指定的设备上创建文件系统。
- -t ext4: 这个选项指定了要创建的文件系统类型为 ext4。ext4 是一种广泛使用的文件系统,适用于大多数 Linux 发行版。
- -V: 这个选项表示详细模式(verbose mode),会在执行命令时显示详细的信息。
- -c: 这个选项用于在创建文件系统之前检查设备上的坏块。
- /dev/sdb1: 这是目标设备或分区,在这个例子中,文件系统将被创建在 /dev/sdb1 分区上。
执行效果
执行这个命令将会:
- 在 /dev/sdb1 分区上创建一个 ext4 文件系统。
- 在创建文件系统之前,检查设备上的坏块。
- 以详细模式显示创建文件系统的过程和相关信息。
2,完成存储设备的分区与格式操作,接下来就需要挂载并使用存储设备。
- 首先创建一个用于挂载设备的挂载点目录;mkdir /newFS
- 然后mount命令将存储设备与挂载点进行关联;mount /dev/sdb1 /newFS
- 查看挂载状态和硬盘使用量信息;df-h
项目三,fsck命令
fsck(文件系统一致性检查)是一个用于检查和修复文件系统错误的命令行工具。它在 Unix 和类 Unix 系统(如 Linux)中非常常见。
基本介绍
fsck 工具可以检查和修复各种类型的文件系统,包括 ext2、ext3、ext4、FAT、NTFS 等。在 Linux 中,fsck 工具的具体实现可能有所不同,不同的发行版可能会使用不同的工具。
基本用法
使用 fsck 命令时需要 root 权限。基本命令格式为:
fsck [选项] 设备名
其中,设备名可以是磁盘分区的设备名(如 /dev/sda1),也可以是磁盘镜像文件的路径。
常用选项
- -a: 自动修复所有错误。
- -y: 自动回答“是”来修复所有错误。
- -n: 不执行实际的文件系统检查和修复操作,仅显示出要执行的操作。
- -v: 显示详细的信息。
- -c: 检查磁盘上的坏道。
- -r: 交互式修复错误。
项目需求:检测分区/dev/sdb1是否有错误,如果有错误则自动修复(必须先把磁盘卸载才能检查分区)
umount /dev/sdb1
fsck -a /dev/sdb1
项目四,dd命令
dd 命令最初是作为 Unix 操作系统的一部分开发的,它的名字来源于早期的 IBM 主机系统中的“数据定义”(Data Definition)概念。dd 命令可以用于多种用途,包括但不限于:
- 制作启动盘
- 备份和恢复磁盘或分区
- 创建和操作文件系统
- 生成随机数据
- 转换文件格式
基本用法
dd 命令的基本语法如下:
dd if=输入文件 of=输出文件 bs=块大小
其中:
- if=输入文件:指定输入文件的路径。可以是普通文件、设备文件或特殊文件。
- of=输出文件:指定输出文件的路径。可以是普通文件、设备文件或特殊文件。
- bs=块大小:设置每个块的大小。可以使用不同的单位(如字节、千字节、兆字节等)来指定大小。
常用选项
除了上述基本参数外,dd 命令还支持许多其他选项,用于更精细地控制其行为。以下是一些常用的选项:
- count=块数:指定要复制的块数。
- skip=块数:跳过输入文件的前几个块。
- seek=块数:跳过输出文件的前几个块。
- conv=转换选项:进行数据转换操作,如大小写转换、字节交换等。
- status=状态:显示复制进度和传输速率信息。
项目需求:当系统的交换分区不能满足系统的要求,而磁盘上又没有可用空间时,可以使用交换文件提供虚拟内存
1, dd if=/dev/zero of=/swap bs=1024 count=10240
参数解释
- if=/dev/zero: 指定输入文件为 /dev/zero,这是一个特殊的文件,它会不断提供空字符(null bytes)。
- of=/swap: 指定输出文件为 /swap,这是你将要创建的交换文件的名称。
- bs=1024: 指定块大小(block size)为 1024 字节。
- count=10240: 指定要复制的块数为 10240。
计算交换文件大小
通过 bs=1024 和 count=10240,可以计算出交换文件的大小: 文件大小=块大小×块数=1024字节/块×10240块=10485760字节=10MB文件大小=块大小×块数=1024字节/块×10240块=10485760字节=10MB
2,mkswap /swap
这个命令用于将一个文件或分区格式化为交换空间。/swap 是交换文件或分区的路径。执行此命令后,系统会将指定的文件或分区初始化为交换空间,以便在内存不足时使用
3,swapon /swap
这个命令用于启用之前创建的交换空间。/swap 是交换文件或分区的路径。执行此命令后,系统会开始使用该交换空间来扩展内存
4,swapoff /swap
这个命令用于禁用之前启用的交换空间。/swap 是交换文件或分区的路径。执行此命令后,系统将不再使用该交换空间
项目五,df命令
df命令是Linux系统中的一个命令,它的作用是列出文件系统的整体磁盘空间使用情况。可以用来查看磁盘已被使用多少空间和还剩余多少空间。
df [选项] [文件名]
- -a 或 --all:显示所有的文件系统,包括虚拟文件系统。
- -B 或 --block-size:指定单位大小。比如1k,1m等。
- -h 或 --human-readable:以人们易读的GB、MB、KB等格式显示。
- -i 或 --inodes:不用硬盘容量,而是以inode的数量来显示。
- -k:以KB的容量显示各文件系统。
- -m:以MB的容量显示各文件系统。
- --no-sync:在统计使用信息之前不调用sync命令(默认)。
- -sync:在统计使用信息之前调用sync命令。
- -P 或 --portability:使用POSIX格式显示。
- -t 或 --type=TYPE:只显示指定类型的文件系统。
- -T 或 --print-type:显示文件系统类型。
- --help:显示帮助信息。
- --version:显示版本信息
1,df 列出各文件系统的磁盘占用情况
2,df -ia 列出各文件系统的i节点的使用情况
3,df -T 列出文件系统类型
项目六,du命令
du命令是Linux系统中的一个命令,它的作用是显示目录或文件所占磁盘空间的大小。可以用来查看磁盘已被使用多少空间和还剩余多少空间。
du [选项] [文件或目录]
- -a 或 --all:为每个指定文件显示磁盘使用情况,或者为目录中每个文件显示各自磁盘使用情况。
- -B 或 --block-size=SIZE:以SIZE为计量单位显示目录或文件大小。
- -b 或 --bytes:以byte为单位显示目录或文件大小。
- -c 或 --total:除了显示目录或文件的大小外,同时显示所有目录或文件的总和。
- -h 或 --human-readable:以K,M,G为单位,提高信息的可读性。
- -H 或 --si:与-h参数相同,但是K,M,G是以1000为换算单位,而不是以1024为换算单位。
- -l 或 --count-links:重复计算硬连接的文件。
- -L 或 --dereference:统计符号连接源文件大小。
- -P 或 --no-dereference:不同符号链接源文件的大小,默认。
- -s 或 --summarize:仅显示总计,即当前目录的大小。
- -S 或 --separate-dirs:显示每个目录的大小时,并不含其子目录的大小。
- -x 或 --one-file-system:忽略位于其他文件系统上的目录。
- --exclude=PATTERN:忽略符合PATTERN规则的目录或文件。
- --max-depth=N:只显示N层内的目录大小。
- --time:显示目录或子目录中文件的最后修改时间。
- --time-style=STYLE:以STYLE指定的格式显示时间。
1,以字节为单位列出所有文件和目录的磁盘空间占用情况 du -ab
项目七,mount/umount
- 在磁盘建立好文件系统后,还需要将新建立的文件系统挂载到操作系统上才能使用,这个过程称为挂载。文件系统所挂载的目录称为挂载点(Mount Point)
- linux提供了/mnt,/media两个挂载点。一般挂载点是一个空目录,否则目录中原来的文件系统将被隐藏
- 通常将光盘和软盘挂载载到/media/cdrom,/mnt/cdrom,/media/floppy/mnt/floppy中,对应的设备文件名正是/dev/cdrom和/dev/fd0
mount命令用于挂载文件系统,而umount命令用于卸载已经挂载的文件系统。这两个命令通常成对使用,以确保文件系统的正确管理和数据的一致性
mount [-afFhnrvVw] [-L标签] [-o选项] [-t文件系统类型] [设备名] [加载点]
常用选项
- -a:加载/etc/fstab中所有的文件系统。
- -f:不实际加载设备,可与-v等参数同时使用以查看mount的执行过程。
- -o:指定加载文件系统时的选项,如async、atime、auto等。
- -t:指定设备的文件系统类型,如hpfs、iso9660等。
- -w:以可读写模式加载设备,默认设置。
umount [选项] [挂载点或设备]
常用选项
- -f:强制卸载(仅用于NFS挂载的文件系统)。
- -l:懒卸载,立即取消挂载点的挂载,但实际上延迟到文件系统不再使用时再完成卸载操作。
- -v:显示详细信息。
- -r:在卸载失败时尝试以只读方式重新挂载文件系统。
1,将 /dev/sdb1 设备上的 ext4 文件系统挂载到 /newFS 目录
mount -t ext4 /dev/sdb1 /newFS
2,卸载/dev/sdb1设备
umount /dev/sdb1 或者 umount /newFS
项目八,文件系统的自动挂载
在Linux系统中,文件系统的自动挂载可以通过两种主要方式实现:使用/etc/fstab文件和使用Autofs服务。
1,使用/etc/fstab文件
/etc/fstab文件包含了系统启动时需要自动挂载的文件系统信息。通过编辑这个文件,你可以指定哪些设备应该在系统启动时挂载到哪些挂载点。
步骤:
- 使用文本编辑器(如vim)打开/etc/fstab文件:
vim /etc/fstab - 在文件中添加一行来指定要自动挂载的文件系统。例如,如果你想将/dev/sdb1挂载到/newFS,可以添加如下行:
/dev/sdb1 /newFS ext4 defaults 0 2
这行的含义如下:- /dev/sdb1: 要挂载的设备或分区。
- /newFS: 挂载点。
- ext4: 文件系统类型。
- defaults: 使用默认挂载选项。
- 0: 表示是否需要备份(0表示不需要)。
- 2: 表示文件系统检查的顺序(2表示在根文件系统之后检查)。
- 保存并退出编辑器。
- 验证实验效果 mount -a
2,使用Autofs服务
Autofs是一种自动挂载服务,它可以在需要时自动挂载文件系统,并在文件系统不再使用时自动卸载。
步骤:
- 安装Autofs服务(如果尚未安装):
apt-get install -y autofs
- 配置/etc/auto.master 文件来指定自动挂载的挂载点和配置文件。例如,你可以添加如下行:
/auto /etc/auto.misc --timeout 60
这行的含义如下:- /auto: 挂载点。
- /etc/auto.misc: 配置文件。
- --timeout 60: 文件系统在空闲60秒后自动卸载。
- 创建或编辑/etc/auto.misc 文件来指定具体的挂载信息。例如:
cd /dev/cdrom
fd /dev/fd0 - 启动Autofs服务:
sudo systemctl start autofs - 设置Autofs服务在系统启动时自动启动:
sudo systemctl enable autofs
一,磁盘基础知识
- 硬盘设备是由大量的扇区组成,每个扇区的容量为512B。其中第一个扇区里面保存着主引导记录和分区表信息,主引导记录占446B,分区表64B,结束符2B;
- 其中分区表每记录一条信息就使用了16B,所以最多只能4个分区信息可以写入第一个扇区中,着4个分区就是主分区
- 由于第一个扇区最多只能创建4个分区,为了解决分区个数不够的问题,可以将第一个的分区表中的16B(原本要写入主分区信息)的空间(扩展分区)拿出来指向另外一个分区
- 扩展分区不是真实存在的,而更像是一个占用16B分区表空间的指针(指向另一个分区的指针)。
- 如此用户一般使用3个主分区和一个扩展分区的方法,然后在扩展分区中创建数个逻辑分区,由此满足多发区的需求
注意:
- 扩展分区并不是真实分区,只是一个指向下一个分区的指针,这种指针结构形成一个单向链表
- 单向链表是一种数据结构,其中每个节点包含一个数据元素和一个指向下一个节点的指针。这种链表的链接方向是单向的,因此对链表的访问需要通过顺序读取从头部开始。单向链表常用于需要频繁插入和删除操作的场景中
二,磁盘设备及命名
Linux系统中一切皆是文件,硬件设备也不例外。每一个硬件设备都有对应的文件名称,而系统内核中的udev设备管理器会自动将硬件名称规范起来,以便于用户通过设备的文件名称了解设备属性和分区信息。
Linux系统中的磁盘设备通常位于 /dev 目录下,设备名称根据不同的类型和接口有所不同。常见的磁盘设备命名方式如下:
- IDE/SATA 磁盘:/dev/sda, /dev/sdb 等。第一个硬盘通常是 /dev/sda,第二个是 /dev/sdb,以此类推。
- SCSI 磁盘:/dev/sda, /dev/sdb 等,与SATA设备命名规则相同。
- NVMe 磁盘:/dev/nvme0n1, /dev/nvme1n1 等,表示NVMe接口的固态硬盘(SSD)。
- USB 存储设备:通常以 /dev/sdX 或 /dev/sdXY(X是字母,Y是分区号)命名。
常见硬件设备在Linux中的文件名:
硬件设备 | 文件名称 |
IDE硬盘 | /dev/hd[a-d] |
SATA硬盘 | /dev/sd[a-p] |
光驱 | /dev/cdrom 或 /dev/sr0 |
USB存储设备 | /dev/sd[a-p] |
网络接口卡 | /dev/net/tun |
打印机 | /dev/lp[0-9] |
鼠标 | /dev/input/mouse0 |
显卡 | /dev/fb0 |
一台主机上可以有至多16块不同的硬盘,硬盘分区编号规则如下:
- 主分区或扩展分区的编号从1开始,4结束
- 逻辑分区从编号5开始
/dev/sda5设备文件名称包含的信息:
- 设备类型:/dev/目录中保存的是硬件设备文件。
- 存储设备:sd表示这是一个存储设备。
- 设备顺序:a表示这是系统中同类接口中第一个被识别到的设备。
- 分区编号:5表示这是一个逻辑分区。
扩展:udev设备管理器概述
udev是Linux内核2.6系列中的设备管理器。它的主要功能是管理/dev目录下的设备节点。udev在用户空间运行,而不是在内核空间运行,这使得它更加灵活和强大1。
主要功能
- 动态管理设备:当设备添加或删除时,udev会监听内核发出的uevent,相应地添加或删除/dev下的设备文件。
- 自定义命名规则:udev允许用户通过定义规则文件来为设备生成具有标识性的设备文件名。
- 设定设备权限和所有者:udev可以根据设备的属性来设置设备文件的权限和所有者/组1。
工作流程
- 事件触发:当设备状态发生变化时(如添加、删除设备),内核会发出uevent。
- 规则匹配:udev守护进程接收到uevent后,会根据规则文件中的定义来匹配设备属性。
- 执行操作:如果找到匹配的规则,udev会根据规则中的指示来执行相应的操作,如创建设备文件、设置权限等1。
配置与使用
在CentOS中,udev通常是默认安装的,无需手动下载和安装。用户可以通过编辑/etc/udev/udev.conf 文件来覆盖udev的默认值,或通过编写自定义规则文件来实现特定的设备管理需求1。
规则文件
udev的规则文件通常存放在/etc/udev/rules.d/目录下,以*.rules命名。规则文件由多条规则组成,每条规则由多个键值对组成,用于匹配设备属性并执行相应的操作1。
三,磁盘管理工具使用
虚拟机新增硬盘的流程
- 打开虚拟机软件:首先,需要打开你正在使用的虚拟机软件,例如VMware或者VirtualBox。
- 选择目标虚拟机:在虚拟机列表中找到你想要添加硬盘的虚拟机,并选中它。
- 进入设置界面:通常在虚拟机软件的顶部菜单栏中会有“设置”或者“配置”的选项,点击它进入虚拟机的设置界面。
- 添加新硬盘:在设置界面中,找到“硬盘”或者“存储”选项,然后点击“添加硬盘”或者类似的选项。
- 配置新硬盘:在弹出的窗口中,你可以选择硬盘的类型(例如SATA或者SCSI),以及硬盘的大小。你可以根据需要选择合适的配置。
- 确认并保存设置:完成配置后,点击“确定”或者“保存”按钮,确认你的设置。此时,虚拟机软件会创建一个新的虚拟硬盘并将其添加到虚拟机中。
- 启动虚拟机:完成上述步骤后,启动虚拟机。在虚拟机内部,你应该能够看到新增的硬盘。如果需要,你可以对其进行分区、格式化等操作。
常用的磁盘管理工具
- fdisk:这是一个基于菜单的命令行工具,用于对硬盘进行分区。它在DOS、Windows和Linux中都有相应的应用程序1。
- cfdisk:这是一个基于文本用户界面的分区工具,类似于fdisk,但提供了更友好的用户界面1。
- parted:这是一个功能强大的分区工具,支持对大容量磁盘进行分区操作。它可以用来创建、删除、调整分区大小等操作1。
- mkfs:这个命令用于在硬盘分区上建立文件系统。类似于Windows下的格式化硬盘。建立文件系统的命令是mkfs,格式如下:。mkfs[参数]文件系统 -t:指定要创建的文件系统类型。 -c:建立文件系统前首先检查坏块。 -V:输出建立文件系统详细信息1。
- fsck:这个命令主要用于检查文件系统的正确性,并对Linux磁盘进行修复。fsck命令的格式如下:。fsck[参数选项]文件系统 -t:给定文件系统类型,若在/etc/fstab中已有定义或kernel本身已支持的不需添加此 -s:一个一个地执行fsck命令进行检查。 -A:对/etc/fstab中所有列出来的分区进行检查。 -C:显示完整的检查进度。 -d:列出fsck的debug结果。 -a:如果检查中发现错误,则自动修复。 -r:如果检查有错误,询问是否修复1。
- dd:这个命令用于将指定的输入文件拷贝到指定的输出文件上。并且在复制过程中可以进行格式转换。dd命令与cp命令的区别在于:dd命令可以在没有创建文件系统的软盘上进行,拷贝到软盘的数据实际上是镜像文件。类似于DOS中的diskcopy命令的作用。dd命令的格式为:。dd[bs=块字节大小][count=块数] 1。
- du:这个命令用于显示磁盘空间的使用情况。该命令逐级显示指定目录的每一级子目录占用。du[参数选项][name---] du命令的参数选项: -s:对每个name参数只给出占用的数据块总数。 -b:以字节为单位列出磁盘空间使用情况(AS4.0中默认以KB为单位)。 -k:以1024字节为单位列出磁盘空间使用情况。 -l:计算所有文件大小,对硬链接文件重复计算。 -x:跳过在不同文件系统上的目录,不予统计1。
项目一:fdisk工具使用
fdisk 是一个用于管理硬盘分区的命令行工具,常用于 Linux 和类 Unix 操作系统。它提供了对硬盘分区表的创建、删除、修改和查看的功能。通过 fdisk,用户可以在磁盘上创建新的分区、删除旧的分区、调整现有分区的大小或类型,并显示分区的详细信息。
主要功能:
- 查看分区:列出磁盘上的所有分区及其详细信息。
- 创建新分区:在未分配空间的磁盘上创建新分区。
- 删除分区:删除现有的分区。
- 修改分区:调整分区的大小或类型。
- 更改分区类型:修改分区的文件系统类型(如从 Linux 类型更改为 Windows 类型)。
- 写入更改:将所做的更改写入磁盘。
fdisk -l:列出所有磁盘的分区信息。
fdisk /dev/sda:启动 fdisk 对 /dev/sda 磁盘进行操作。
选项 | 功能 |
-u | 与 -l搭配使用,显示分区数目12 |
-s | 指定分区2 |
-v | 显示版本信息2 |
m | 显示菜单和帮助信息13 |
a | 活动分区标记/引导分区13 |
d | 删除分区13 |
l | 显示分区类型13 |
n | 新建分区13 |
p | 显示分区信息13 |
t | 修改分区的类型13 |
w | 保存并写入分区表的更改13 |
q | 退出fdisk而不保存更改13 |
v | 进行分区检查1 |
1,首先通过编辑虚拟机设置增加一块硬盘,格式为SCSI,大小为20G,命名为/dev/sdb
lsblk查看新增的硬盘设备,可以看到命名为/dev/sdb
2,对新增硬盘进行操作,需求是在硬盘上创建大小500MB,文件系统为ext4的/dev/sdb1的主分区
首先打开fdisk操作菜单 fdisk /dev/sdb
输入p,查看当前分区表。可以看到目前是没有任何分区的
根据信息可以看到/dev/sdb硬盘大小为21.5GB,21474836480 字节,41943040 个扇区,每个扇区大小是512字节。分别能从第七行的七个字段读取到起始扇区(Start)、结束扇区(End)、块数(Blocks)、分区ID(Id)以及分区类型(System)
3,输入n,创建一个新分区;输入p,选择创建主分区;输入该分区的其实,结束扇区,以确定分区大小。也可以使用+sizeM或sizeK的方式指定分区大小
4,输入L能够查看已知的分区类型及其id,例如linux的id为83。输入t,指定/dev/sdb1的文件类型为Linux
5,分区操作结束后,输入w,将分区信息写入分区表并退出
6,如果需要删除磁盘分区,则需在fdisk菜单下输入d,并选择需要删除的分区即可,删除操作完成之后输入w,保存退出
7,为了以便于项目二的实施开展,需要重复1-5的步骤以建立磁盘分区/dev/sdb2,/dev/sdb3。fdisk菜单操作完成效果如下
项目二:mkfs工具使用
硬盘分区之后,下一步就需要建立文件系统。类似于windows下的格式化硬盘,在硬盘分区上建立文件系统会冲掉分区上的数据,而且不可恢复。建立文件系统的命令是mkfs
常见文件系统类型
文件系统类型 | 描述 | 适用场景 |
ext4 | 第四代扩展文件系统,是 Linux 的默认文件系统,具有良好的性能和稳定性。 | 适用于大多数 Linux 发行版,适合通用用途。 |
xfs | 高性能的文件系统,特别适合于大型数据集和高并发环境。 | 适用于数据库服务器、文件服务器等高性能需求的场景。 |
btrfs | 提供先进的功能,如快照、压缩和数据校验,但相对复杂。 | 适用于需要高级数据管理功能的场景,如备份和恢复。 |
ntfs | Windows 的默认文件系统,兼容性好。 | 适用于需要与 Windows 系统互操作的场景。 |
vfat | 适用于 FAT32 文件系统,常用于 USB 驱动器和移动设备。 | 适用于需要跨平台兼容的场景,如在 Linux 和 Windows 之间共享数据。 |
项目需求:在/dev/sdb1上建立ext4类型的文件系统,建立时检测磁盘坏块并显示详细信息
1,mkfs -t ext4 -V -c /dev/sdb1
命令解析
- mkfs: 这是“make filesystem”的缩写,用于在指定的设备上创建文件系统。
- -t ext4: 这个选项指定了要创建的文件系统类型为 ext4。ext4 是一种广泛使用的文件系统,适用于大多数 Linux 发行版。
- -V: 这个选项表示详细模式(verbose mode),会在执行命令时显示详细的信息。
- -c: 这个选项用于在创建文件系统之前检查设备上的坏块。
- /dev/sdb1: 这是目标设备或分区,在这个例子中,文件系统将被创建在 /dev/sdb1 分区上。
执行效果
执行这个命令将会:
- 在 /dev/sdb1 分区上创建一个 ext4 文件系统。
- 在创建文件系统之前,检查设备上的坏块。
- 以详细模式显示创建文件系统的过程和相关信息。
2,完成存储设备的分区与格式操作,接下来就需要挂载并使用存储设备。
- 首先创建一个用于挂载设备的挂载点目录;mkdir /newFS
- 然后mount命令将存储设备与挂载点进行关联;mount /dev/sdb1 /newFS
- 查看挂载状态和硬盘使用量信息;df-h
项目三,fsck命令
fsck(文件系统一致性检查)是一个用于检查和修复文件系统错误的命令行工具。它在 Unix 和类 Unix 系统(如 Linux)中非常常见。
基本介绍
fsck 工具可以检查和修复各种类型的文件系统,包括 ext2、ext3、ext4、FAT、NTFS 等。在 Linux 中,fsck 工具的具体实现可能有所不同,不同的发行版可能会使用不同的工具。
基本用法
使用 fsck 命令时需要 root 权限。基本命令格式为:
fsck [选项] 设备名
其中,设备名可以是磁盘分区的设备名(如 /dev/sda1),也可以是磁盘镜像文件的路径。
常用选项
- -a: 自动修复所有错误。
- -y: 自动回答“是”来修复所有错误。
- -n: 不执行实际的文件系统检查和修复操作,仅显示出要执行的操作。
- -v: 显示详细的信息。
- -c: 检查磁盘上的坏道。
- -r: 交互式修复错误。
项目需求:检测分区/dev/sdb1是否有错误,如果有错误则自动修复(必须先把磁盘卸载才能检查分区)
umount /dev/sdb1
fsck -a /dev/sdb1
项目四,dd命令
dd 命令最初是作为 Unix 操作系统的一部分开发的,它的名字来源于早期的 IBM 主机系统中的“数据定义”(Data Definition)概念。dd 命令可以用于多种用途,包括但不限于:
- 制作启动盘
- 备份和恢复磁盘或分区
- 创建和操作文件系统
- 生成随机数据
- 转换文件格式
基本用法
dd 命令的基本语法如下:
dd if=输入文件 of=输出文件 bs=块大小
其中:
- if=输入文件:指定输入文件的路径。可以是普通文件、设备文件或特殊文件。
- of=输出文件:指定输出文件的路径。可以是普通文件、设备文件或特殊文件。
- bs=块大小:设置每个块的大小。可以使用不同的单位(如字节、千字节、兆字节等)来指定大小。
常用选项
除了上述基本参数外,dd 命令还支持许多其他选项,用于更精细地控制其行为。以下是一些常用的选项:
- count=块数:指定要复制的块数。
- skip=块数:跳过输入文件的前几个块。
- seek=块数:跳过输出文件的前几个块。
- conv=转换选项:进行数据转换操作,如大小写转换、字节交换等。
- status=状态:显示复制进度和传输速率信息。
项目需求:当系统的交换分区不能满足系统的要求,而磁盘上又没有可用空间时,可以使用交换文件提供虚拟内存
1, dd if=/dev/zero of=/swap bs=1024 count=10240
参数解释
- if=/dev/zero: 指定输入文件为 /dev/zero,这是一个特殊的文件,它会不断提供空字符(null bytes)。
- of=/swap: 指定输出文件为 /swap,这是你将要创建的交换文件的名称。
- bs=1024: 指定块大小(block size)为 1024 字节。
- count=10240: 指定要复制的块数为 10240。
计算交换文件大小
通过 bs=1024 和 count=10240,可以计算出交换文件的大小: 文件大小=块大小×块数=1024字节/块×10240块=10485760字节=10MB文件大小=块大小×块数=1024字节/块×10240块=10485760字节=10MB
2,mkswap /swap
这个命令用于将一个文件或分区格式化为交换空间。/swap 是交换文件或分区的路径。执行此命令后,系统会将指定的文件或分区初始化为交换空间,以便在内存不足时使用
3,swapon /swap
这个命令用于启用之前创建的交换空间。/swap 是交换文件或分区的路径。执行此命令后,系统会开始使用该交换空间来扩展内存
4,swapoff /swap
这个命令用于禁用之前启用的交换空间。/swap 是交换文件或分区的路径。执行此命令后,系统将不再使用该交换空间
项目五,df命令
df命令是Linux系统中的一个命令,它的作用是列出文件系统的整体磁盘空间使用情况。可以用来查看磁盘已被使用多少空间和还剩余多少空间。
df [选项] [文件名]
- -a 或 --all:显示所有的文件系统,包括虚拟文件系统。
- -B 或 --block-size:指定单位大小。比如1k,1m等。
- -h 或 --human-readable:以人们易读的GB、MB、KB等格式显示。
- -i 或 --inodes:不用硬盘容量,而是以inode的数量来显示。
- -k:以KB的容量显示各文件系统。
- -m:以MB的容量显示各文件系统。
- --no-sync:在统计使用信息之前不调用sync命令(默认)。
- -sync:在统计使用信息之前调用sync命令。
- -P 或 --portability:使用POSIX格式显示。
- -t 或 --type=TYPE:只显示指定类型的文件系统。
- -T 或 --print-type:显示文件系统类型。
- --help:显示帮助信息。
- --version:显示版本信息
1,df 列出各文件系统的磁盘占用情况
2,df -ia 列出各文件系统的i节点的使用情况
3,df -T 列出文件系统类型
项目六,du命令
du命令是Linux系统中的一个命令,它的作用是显示目录或文件所占磁盘空间的大小。可以用来查看磁盘已被使用多少空间和还剩余多少空间。
du [选项] [文件或目录]
- -a 或 --all:为每个指定文件显示磁盘使用情况,或者为目录中每个文件显示各自磁盘使用情况。
- -B 或 --block-size=SIZE:以SIZE为计量单位显示目录或文件大小。
- -b 或 --bytes:以byte为单位显示目录或文件大小。
- -c 或 --total:除了显示目录或文件的大小外,同时显示所有目录或文件的总和。
- -h 或 --human-readable:以K,M,G为单位,提高信息的可读性。
- -H 或 --si:与-h参数相同,但是K,M,G是以1000为换算单位,而不是以1024为换算单位。
- -l 或 --count-links:重复计算硬连接的文件。
- -L 或 --dereference:统计符号连接源文件大小。
- -P 或 --no-dereference:不同符号链接源文件的大小,默认。
- -s 或 --summarize:仅显示总计,即当前目录的大小。
- -S 或 --separate-dirs:显示每个目录的大小时,并不含其子目录的大小。
- -x 或 --one-file-system:忽略位于其他文件系统上的目录。
- --exclude=PATTERN:忽略符合PATTERN规则的目录或文件。
- --max-depth=N:只显示N层内的目录大小。
- --time:显示目录或子目录中文件的最后修改时间。
- --time-style=STYLE:以STYLE指定的格式显示时间。
1,以字节为单位列出所有文件和目录的磁盘空间占用情况 du -ab
项目七,mount/umount
- 在磁盘建立好文件系统后,还需要将新建立的文件系统挂载到操作系统上才能使用,这个过程称为挂载。文件系统所挂载的目录称为挂载点(Mount Point)
- linux提供了/mnt,/media两个挂载点。一般挂载点是一个空目录,否则目录中原来的文件系统将被隐藏
- 通常将光盘和软盘挂载载到/media/cdrom,/mnt/cdrom,/media/floppy/mnt/floppy中,对应的设备文件名正是/dev/cdrom和/dev/fd0
mount命令用于挂载文件系统,而umount命令用于卸载已经挂载的文件系统。这两个命令通常成对使用,以确保文件系统的正确管理和数据的一致性
mount [-afFhnrvVw] [-L标签] [-o选项] [-t文件系统类型] [设备名] [加载点]
常用选项
- -a:加载/etc/fstab中所有的文件系统。
- -f:不实际加载设备,可与-v等参数同时使用以查看mount的执行过程。
- -o:指定加载文件系统时的选项,如async、atime、auto等。
- -t:指定设备的文件系统类型,如hpfs、iso9660等。
- -w:以可读写模式加载设备,默认设置。
umount [选项] [挂载点或设备]
常用选项
- -f:强制卸载(仅用于NFS挂载的文件系统)。
- -l:懒卸载,立即取消挂载点的挂载,但实际上延迟到文件系统不再使用时再完成卸载操作。
- -v:显示详细信息。
- -r:在卸载失败时尝试以只读方式重新挂载文件系统。
1,将 /dev/sdb1 设备上的 ext4 文件系统挂载到 /newFS 目录
mount -t ext4 /dev/sdb1 /newFS
2,卸载/dev/sdb1设备
umount /dev/sdb1 或者 umount /newFS
项目八,文件系统的自动挂载
在Linux系统中,文件系统的自动挂载可以通过两种主要方式实现:使用/etc/fstab文件和使用Autofs服务。
1,使用/etc/fstab文件
/etc/fstab文件包含了系统启动时需要自动挂载的文件系统信息。通过编辑这个文件,你可以指定哪些设备应该在系统启动时挂载到哪些挂载点。
步骤:
- 使用文本编辑器(如vim)打开/etc/fstab文件:
vim /etc/fstab - 在文件中添加一行来指定要自动挂载的文件系统。例如,如果你想将/dev/sdb1挂载到/newFS,可以添加如下行:
/dev/sdb1 /newFS ext4 defaults 0 2
这行的含义如下:- /dev/sdb1: 要挂载的设备或分区。
- /newFS: 挂载点。
- ext4: 文件系统类型。
- defaults: 使用默认挂载选项。
- 0: 表示是否需要备份(0表示不需要)。
- 2: 表示文件系统检查的顺序(2表示在根文件系统之后检查)。
- 保存并退出编辑器。
- 验证实验效果 mount -a
2,使用Autofs服务
Autofs是一种自动挂载服务,它可以在需要时自动挂载文件系统,并在文件系统不再使用时自动卸载。
步骤:
- 安装Autofs服务(如果尚未安装):
apt-get install -y autofs
- 配置/etc/auto.master 文件来指定自动挂载的挂载点和配置文件。例如,你可以添加如下行:
/auto /etc/auto.misc --timeout 60
这行的含义如下:- /auto: 挂载点。
- /etc/auto.misc: 配置文件。
- --timeout 60: 文件系统在空闲60秒后自动卸载。
- 创建或编辑/etc/auto.misc 文件来指定具体的挂载信息。例如:
cd /dev/cdrom
fd /dev/fd0 - 启动Autofs服务:
sudo systemctl start autofs - 设置Autofs服务在系统启动时自动启动:
sudo systemctl enable autofs