3-12-磁盘管理二
Linux磁盘分区实战
硬盘接口类型
IDE接口(Integrated Drive Electronics)
- 概述
- IDE接口也被称为ATA(Advanced Technology Attachment)接口,是早期计算机硬盘广泛使用的接口类型。它的主要特点是将硬盘控制器与硬盘本身集成在一起,减少了硬盘与主板之间连接的复杂性。这种接口在个人计算机发展历程中发挥了重要作用,使得硬盘的安装和使用变得更加简便。
- 传输方式和速度
- IDE接口采用并行传输方式,数据通过多条数据线同时传输,以提高传输效率。不过,早期的IDE标准传输速度相对较慢。例如,IDE接口的第一代标准ATA - 1,其最大数据传输率仅为3.3MB/s。随着技术的发展,后续出现了ATA - 2、ATA - 3等标准,传输速度有所提升,但在面对现代高速数据传输需求时仍显得力不从心。
- 连接方式和兼容性
- IDE接口的硬盘通过一条扁平的数据线与主板相连,数据线一般有40针或80针。同时,还需要连接电源线来为硬盘供电。IDE接口具有较好的兼容性,在早期的Windows 95/98、Windows Me以及部分早期Linux系统等多种操作系统下都能很好地工作。而且,除了硬盘外,IDE接口还可以连接光驱等其他存储设备,不过同一根IDE数据线上连接的设备需要通过设置主从设备(Master/Slave)来区分优先级。
- 概述
SATA接口(Serial ATA)
- 概述
- SATA接口是目前主流的硬盘接口类型,它是一种串行接口,相较于IDE接口的并行传输方式,SATA接口在性能、稳定性和扩展性等方面都有显著提升。SATA接口的出现适应了计算机技术快速发展对数据传输速度和可靠性的要求。
- 传输方式和速度
- SATA接口采用串行传输方式,通过一对差分信号线来传输数据,这种方式可以有效减少信号干扰,提高传输的稳定性和距离。SATA接口有多个版本,SATA 1.0的理论传输速度为1.5Gbps(约150MB/s),SATA 2.0提升到3.0Gbps(约300MB/s),SATA 3.0更是达到了6.0Gbps(约600MB/s)。实际应用中的传输速度会受到硬盘内部性能等多种因素的影响,但SATA接口的高速特性已经能够满足大多数普通用户和许多商业应用场景下的硬盘读写需求。
- 连接方式和兼容性
- SATA接口的硬盘通过一条较细的数据线与主板相连,数据线两端的接口呈L形,便于插拔且占用空间小。在电源供应方面,有专门的SATA电源线与之配合。SATA接口在兼容性方面表现出色,几乎所有现代操作系统,如Windows、Linux、macOS等都对其提供了完善的支持。并且,SATA接口可以方便地支持热插拔(在一定条件下,设备在计算机运行过程中可以安全插拔),这为用户更换硬盘或外部存储设备提供了便利。
- 概述
SCSI接口(Small Computer System Interface)
- 概述
- SCSI接口主要用于服务器和高端工作站等高性能计算机设备。它是一种智能型的接口,能够提供比普通硬盘接口更高的性能和更多的功能,如支持多设备连接、更高的传输速度和更好的并行处理能力。
- 传输方式和速度
- SCSI接口采用并行传输方式,通过多条数据线同时传输数据。SCSI接口也有多个标准和版本,传输速度因版本而异。例如,早期的SCSI - 1标准传输速度较低,而Ultra320 SCSI的最大传输速度可达320MB/s。一些最新的SCSI标准,如SAS(Serial Attached SCSI)采用串行传输方式,速度更是有了大幅提升,能够满足服务器等对数据传输速度要求极高的应用场景。
- 连接方式和兼容性
- SCSI接口的硬盘通过一条较宽的扁平数据线与主机或存储控制器相连,并且需要专门的SCSI控制器来管理和协调设备之间的通信。SCSI接口可以同时连接多个设备(如多个硬盘、磁带机等),这些设备在SCSI总线上通过设备ID来区分。不过,SCSI接口设备的价格相对较高,而且其复杂性使得它主要应用于专业领域,如企业级服务器、高端图形工作站等,在普通个人计算机中很少使用。
- 概述
NVMe接口(Non - Volatile Memory Express)
- 概述
- NVMe接口是专门为固态硬盘(SSD)设计的高性能接口标准。随着固态硬盘技术的飞速发展,传统的接口标准(如SATA)在一定程度上限制了固态硬盘性能的充分发挥。NVMe接口应运而生,它基于PCI - E(Peripheral Component Interconnect Express)总线,能够实现固态硬盘与计算机系统之间的高速数据传输。
- 传输方式和速度
- NVMe接口采用串行传输方式,利用PCI - E通道进行数据传输。它的传输速度极快,目前主流的NVMe固态硬盘的读取速度可以轻松达到3GB/s以上,写入速度也能达到2GB/s以上,远远超过了传统SATA接口固态硬盘的速度。这种高速传输性能使得固态硬盘在启动系统、加载软件和处理大量数据时能够实现几乎即时响应。
- 连接方式和兼容性
- NVMe接口的固态硬盘通过插入主板上的PCI - E插槽来连接,其外形通常与传统的M.2接口固态硬盘相似,但在性能上有巨大提升。NVMe接口在兼容性方面,需要主板和操作系统的支持。目前,大多数现代主板都支持NVMe接口,并且Windows、Linux等操作系统也都提供了对NVMe设备的良好支持。由于其高性能和相对较高的成本,NVMe接口固态硬盘主要应用于对存储性能要求极高的场景,如高端游戏电脑、数据中心的高性能存储服务器等。
- 概述
sata
目前常见的接口方面又分为SATA、SAS、MSATA、M.2。
sata是用在个人PC上最为主流的硬盘接口,主要是机械硬盘,廉价,大容量。
sas
sas接口为企业级专业硬盘使用接口,满足高性能、高可靠性。
以前还有SCSI接口,已经被sas接口取代了。
关于硬盘的历史,主要是如下升级
个人主机
- IDE(Integrated Drive Electronics)传统级硬盘接口、
- 被SATA取代
- IDE(Integrated Drive Electronics)传统级硬盘接口、
企业服务器
- SCSI(Small Computer System Interface),小型计算机系统专用接口
- 被SAS(Serial Attached SCSI)取代
- SCSI(Small Computer System Interface),小型计算机系统专用接口
机械硬盘、固态硬盘特点
机械硬盘、怕摔、怕震动
固态硬盘、怕突然断电
机械硬盘(HDD - Hard Disk Drive)特点
存储容量
- 大容量优势:机械硬盘的存储容量通常较大。目前市场上常见的机械硬盘容量有1TB、2TB、4TB甚至更高。这是因为它是通过在盘片的磁性涂层上存储数据,盘片可以多层堆叠,技术上比较容易实现大容量存储。例如,对于需要存储大量视频、音频、照片等数据的用户,如影视制作公司存储素材、数据中心备份数据,大容量的机械硬盘是一种经济实惠的选择。
- 容量扩展相对容易:在存储容量需要扩展时,只需购买新的机械硬盘并安装到计算机机箱内(如果有足够的硬盘位),或者通过外部硬盘盒将其作为外置硬盘使用。用户可以根据自己的需求灵活增加存储容量。
数据读写速度
- 顺序读写性能:在顺序读写大量数据时,机械硬盘表现尚可。例如,在读取或写入连续存储的视频文件时,其顺序读取速度可以达到100 - 200MB/s左右。这是因为顺序读写时,磁头可以沿着盘片的磁道连续读取或写入数据,减少了寻道时间对读写速度的影响。
- 随机读写性能差:然而,机械硬盘的随机读写性能较差。由于其数据存储在高速旋转的盘片上,磁头需要在盘片上频繁移动来定位数据。每次磁头移动都需要时间,这个寻道时间会严重影响随机读写速度。例如,在打开包含大量小文件的文件夹时,机械硬盘可能需要较长时间来加载每个文件的信息,因为磁头要不断地在盘片的不同位置之间移动。
工作原理与内部结构
- 盘片和磁头:机械硬盘内部有一个或多个盘片,这些盘片是存储数据的介质,表面涂有磁性材料。磁头负责在高速旋转的盘片上进行数据的读写操作。磁头与盘片之间的距离非常小,工作时磁头悬浮在盘片上方,以避免与盘片接触造成损坏。例如,当硬盘工作时,电机带动盘片以每分钟几千转(常见的有7200转/分钟)的速度旋转,磁头通过电磁感应来读取或写入盘片上的数据。
- 机械部件易损:由于存在高速旋转的盘片和移动的磁头这些机械部件,机械硬盘在受到震动、碰撞时容易损坏。例如,如果在硬盘工作时受到较大的震动,磁头可能会划伤盘片,导致数据丢失。而且,随着使用时间的增加,机械部件的磨损也可能会导致硬盘出现故障。
成本与价格
- 价格优势:机械硬盘的制造成本相对较低,这使得它在市场上价格比较亲民。相同存储容量下,机械硬盘的价格通常比固态硬盘低很多。例如,1TB的机械硬盘价格可能在两三百元左右,而1TB的固态硬盘价格可能在四五百元甚至更高。这使得机械硬盘在对读写速度要求不是特别高的大容量存储场景下,具有很高的性价比。
数据存储稳定性
- 长期存储可靠性:在数据长期存储方面,机械硬盘如果保存得当,数据可以稳定存储很长时间。因为其数据存储在磁性涂层上,只要磁性不消失,数据就可以保存。不过,需要注意避免磁场干扰,否则可能会导致数据损坏。例如,将机械硬盘放置在远离强磁场源(如磁铁、大型电机等)的地方,可以保证数据存储的稳定性。
固态硬盘(SSD - Solid - State Drive)特点
存储容量
- 容量范围较窄(相对):固态硬盘的存储容量相对机械硬盘来说范围较窄。常见的固态硬盘容量有256GB、512GB、1TB等,虽然也有一些大容量的固态硬盘,但价格相对较高。这是因为固态硬盘是基于闪存芯片存储数据,闪存芯片的成本较高,且大容量闪存芯片的生产技术相对复杂。
- 容量提升技术难度大:随着技术的发展,固态硬盘的容量在不断提升,但要实现像机械硬盘那样的高容量存储仍然面临一些技术挑战。例如,增加闪存芯片的数量会带来成本增加、体积增大以及可能出现的散热等问题。
数据读写速度
- 超高的读写速度:固态硬盘的读写速度非常快。其读取速度可以轻松达到几GB/s,写入速度也能达到数GB/s,远远超过机械硬盘。例如,在系统启动、软件加载和游戏启动等场景中,固态硬盘可以使计算机的响应速度大幅提升。这是因为固态硬盘使用闪存芯片存储数据,数据的读写是通过电信号控制闪存芯片内的晶体管来实现的,没有机械部件的限制,数据可以快速地被定位和传输。
- 出色的随机读写性能:固态硬盘在随机读写方面表现卓越。无论是读取还是写入小文件,固态硬盘都能快速响应。这是因为闪存芯片的存储结构和工作方式使得数据的定位不需要像机械硬盘那样移动磁头,大大缩短了数据的读写时间。例如,在打开包含大量小文件的文件夹或者运行多个程序同时频繁读写数据时,固态硬盘能够提供流畅的体验。
工作原理与内部结构
- 闪存芯片和控制器:固态硬盘内部主要由闪存芯片和控制器组成。闪存芯片是存储数据的核心部件,数据以二进制的形式存储在闪存芯片的晶体管中。控制器则负责管理和传输数据,包括数据的读写、缓存管理、磨损均衡等操作。例如,控制器会根据数据的读写请求,合理地分配闪存芯片中的存储单元来存储数据,并通过复杂的算法来延长闪存芯片的使用寿命。
- 无机械部件优势:固态硬盘没有机械部件,这使得它具有抗震性强、噪音小等优点。由于不存在高速旋转的盘片和移动的磁头,固态硬盘在受到震动、碰撞时数据不容易丢失,也不会因为机械部件的磨损而出现故障。例如,在笔记本电脑等移动设备中,固态硬盘可以更好地适应设备在移动过程中可能遇到的各种情况。
成本与价格
- 价格相对较高:固态硬盘的制造成本较高,主要是因为闪存芯片的成本较高以及其复杂的制造工艺。这导致其在市场上的价格相对机械硬盘要高。不过,随着技术的发展和市场竞争的加剧,固态硬盘的价格在逐渐下降。例如,以前1TB的固态硬盘价格可能在千元左右,现在价格已经有所降低,但仍然比相同容量的机械硬盘贵。
- 数据存储稳定性
- 数据安全考虑因素不同:虽然固态硬盘没有机械硬盘那样的磁头和盘片磨损问题,但它也有自己的数据安全问题。例如,闪存芯片有写入寿命限制(P/E - Program/Erase Cycles),经过一定次数的写入和擦除操作后,闪存芯片可能会出现故障。不过,固态硬盘制造商通过采用各种技术,如磨损均衡、冗余备份等,来提高数据存储的稳定性和闪存芯片的使用寿命。
硬盘命名规则
- 传统命名方式(基于IDE和SCSI接口)
- 在Ubuntu(以及其他Linux系统)中,对于传统的IDE接口硬盘,设备名通常以“/dev/hdX”的形式命名。其中,“X”可以是“a”、“b”等字母。例如,“/dev/hda”表示系统中的第一个IDE硬盘,“/dev/hdb”表示第二个IDE硬盘。如果硬盘有多个分区,分区会以数字编号,如“/dev/hda1”表示第一个IDE硬盘的第一个分区,“/dev/hda2”表示第一个IDE硬盘的第二个分区,以此类推。
- 对于SCSI接口的硬盘(包括SATA硬盘,在Linux系统中SATA硬盘被视为SCSI设备处理),设备名通常以“/dev/sdX”的形式出现。这里的“X”同样是字母,如“/dev/sda”代表第一个SCSI(或SATA)硬盘,“/dev/sdb”代表第二个。分区编号方式和IDE硬盘类似,例如“/dev/sda1”是第一个SCSI(或SATA)硬盘的第一个分区。
- 基于NVMe接口的固态硬盘命名
- 对于采用NVMe接口的固态硬盘,设备名一般是“/dev/nvmeXnY”的形式。其中,“X”是一个数字,表示NVMe设备的编号,比如“/dev/nvme0”表示第一个NVMe设备。“n”是固定的字符,用于分隔设备编号和命名空间编号。“Y”也是一个数字,表示命名空间(Namespace)编号。在大多数情况下,对于普通用户使用的单分区NVMe固态硬盘,可能看到的设备名是“/dev/nvme0n1”,表示第一个NVMe设备的第一个命名空间对应的分区。
- 虚拟硬盘和特殊设备的命名(如磁盘阵列等)
- 在Ubuntu中,还有一些特殊的硬盘命名方式。例如,对于虚拟硬盘(如通过软件创建的虚拟磁盘),其命名可能会根据创建软件和虚拟磁盘的类型而有所不同。一些磁盘阵列设备(如RAID阵列)也有自己的命名规则。如果是通过mdadm工具创建的软件RAID设备,设备名可能是“/dev/mdX”,其中“X”是一个数字,表示RAID设备的编号,如“/dev/md0”表示第一个RAID设备。这些设备的分区命名方式同样也是在设备名后加上分区数字编号,例如“/dev/md0p1”表示第一个RAID设备的第一个分区。
不同硬盘(不同接口)插入到系统中,有不同的名字
OS | IDE(并口) | SATA(串口) | SCSI |
---|---|---|---|
RHEL5 | /dev/hda | /dev/sda | /dev/sda |
RHEL6 | /dev/sda | /dev/sda | /dev/sda |
RHEL7 | /dev/sda | /dev/sda | /dev/sda |
多块硬盘的名字
https://www.debian.org/releases/sarge/i386/apbs04.html.zh_TW
还有就是惠普服务器的硬盘
/dev/cciss/c0d0
/dev/cciss/c0d0p1 c0第一个控制器, d0第一块磁盘, p1分区1
/dev/cciss/c0d0p2 c0第一个控制器, d0第一块磁盘, p2分区2
提问关于分区名
1.centos上看到的如下文件名字,表示什么?(Linux一切接文件,磁盘在系统中,也以文件形式展示)
/dev/sda1
/dev/sda2
/dev/sda3
/dev/sda4
/dev/sda5
2.解读下,如下命令是什么
[root@lamp-241 ~]# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2
磁盘分区
MBR分区特点
不支持2T以上硬盘
最多支持4个主分区
fdisk命令只能创建MBR分区
磁盘分区步骤
1.执行fdisk /dev/sdb
命令,给硬盘创建分区/dev/sdb1、/dev/sdb2、
2.刷新分区表
3.格式化分区文件系统、mkfs.ext4
/dev/sdb1
4.挂载使用该分区,mount
5.开机自动挂载、autofs自动挂载
磁盘分区结构(重要)
主分区
- 一个硬盘的主分区也就是包含操作系统启动所必需的文件和数据的硬盘分区,要在硬盘上安装操作系统,则该硬盘必须得有一个主分区。
- 主分区,也称为主磁盘分区,和扩展分区、逻辑分区一样,是一种分区类型。
- 主分区中不能再划分其他类型的分区
扩展分区/逻辑分区
扩展分区也就是除主分区外的分区,但它不能直接使用,必须再将它划分为若干个逻辑分区才行。
逻辑分区也就是我们平常在操作系统中所看到的D、E、F等盘。
- 主分区,primary partition
- 扩展分区,extended
- 逻辑分区
系统默认分区1~4留给了主分区和扩展分区
- 主分区1 * (星号代表是引导分区,引导分区装在这里)
- 主分区2
- 主分区3
- 主分区4(extended)
- 逻辑分区n
分区须知(记忆)
- 最多只能分4个主分区,主分区编号1-4
- 逻辑分区大小总和不能超过扩展分区大小,逻辑分区分区编号从5开始
- 如果删除扩展分区,下面的逻辑卷分区也被删除
- 扩展分区的分区编号(1-4)
关于fdisk命令
概述
fdisk
是一个在Ubuntu(以及其他Linux系统)中用于磁盘分区操作的命令行工具。它功能强大,可以创建、删除、调整磁盘分区等,是系统管理员和高级用户管理磁盘分区的重要工具。
查看磁盘分区信息
- 基本语法:
fdisk -l
。这个命令会列出系统中所有磁盘设备的分区信息。例如,在终端输入fdisk -l
后,它会显示每个磁盘设备(如/dev/sda
、/dev/sdb
等)的大小、分区数量、每个分区的起始和结束位置、分区类型(如Linux分区、Windows分区等)等信息。 - 信息解读:
- 对于每个磁盘分区,输出信息中会包含像
Device
(设备名,如/dev/sda1
)、Boot
(是否为启动分区,*
表示是启动分区)、Start
(分区起始位置,通常以扇区为单位)、End
(分区结束位置)、Blocks
(分区包含的块数,块是文件系统管理磁盘空间的单位)、Id
(分区系统ID,用于识别分区类型,如83
表示Linux分区)、System
(分区系统类型,如Linux
)等内容。通过这些信息,可以详细了解磁盘的分区布局。
- 对于每个磁盘分区,输出信息中会包含像
- 基本语法:
进入分区操作界面
- 基本语法:
fdisk [磁盘设备名]
。例如,如果要对/dev/sda
进行分区操作,可以在终端输入fdisk /dev/sda
。这会进入fdisk
的交互式分区操作界面。 - 操作提示:在交互式界面中,会出现命令提示符(如
Command (m for help):
),此时可以输入各种命令来进行分区操作。输入m
可以查看所有可用的命令及其说明。
- 基本语法:
分区操作命令
- 创建新分区(n):
- 在交互式界面中输入
n
,然后按照提示操作可以创建新分区。首先会让你选择是创建主分区(p
)还是逻辑分区(l
)。对于主分区,最多可以创建4个(在MBR分区模式下)。选择类型后,需要指定分区编号(如已经有/dev/sda1
和/dev/sda2
,新的主分区编号可能是/dev/sda3
)、起始扇区(通常可以直接按回车键使用默认值)和结束扇区(可以通过指定扇区数量或者分区大小来确定)来定义分区的范围。
- 在交互式界面中输入
- 删除分区(d):
- 输入
d
后,需要指定要删除的分区编号。例如,输入d
,然后输入3
,会删除/dev/sda3
这个分区。要注意的是,删除分区会导致分区上的数据全部丢失,所以在操作之前一定要确保数据已经备份。
- 输入
- 查看分区表(p):
- 输入
p
可以查看当前磁盘的分区表,这会显示所有现有分区的详细信息,包括前面提到的分区编号、起始和结束位置、分区类型等。这个命令在创建或修改分区后可以用于检查分区设置是否正确。
- 输入
- 保存并退出(w)或不保存退出(q):
- 完成分区操作后,如果想要保存修改后的分区表,可以输入
w
。这会将分区表的更改写入磁盘并退出fdisk
。如果不想保存任何修改,可以输入q
直接退出。在输入w
之前,一定要确保分区操作是正确的,因为一旦保存,分区的更改是不可逆的(除了通过数据恢复工具尝试恢复数据,但这也不能保证完全恢复)。
- 完成分区操作后,如果想要保存修改后的分区表,可以输入
- 创建新分区(n):
注意事项
- 谨慎操作:由于
fdisk
操作涉及到磁盘分区的更改,操作不当可能会导致数据丢失。在使用fdisk
对正在使用的系统磁盘进行操作之前,最好先备份重要数据。 - 分区表更新:在一些情况下,如创建新分区或修改分区后,可能需要手动更新系统的分区表信息。在Ubuntu中,可以使用
partprobe
命令来通知内核重新读取分区表,以确保系统能够正确识别新的分区设置。
- 谨慎操作:由于
[root@lamp-241 ~]# fdisk -l
Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0001d899
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 41943039 19921920 8e Linux LVM
fdisk命令
使用fdisk分区
添加新硬盘
vmware添加硬盘
重启linux虚拟机,必须!
查看新添加的硬盘(查看磁盘信息)
lsblk命令
命令概述
lsblk
是一个在Ubuntu(以及其他Linux系统)中非常实用的命令,用于列出系统中的块设备(block devices)信息。块设备是一种以块为单位进行数据读写的设备,包括硬盘、固态硬盘、USB存储设备、光盘驱动器等存储设备,还包括磁盘分区、逻辑卷等。
基本语法和输出信息
- 基本语法:
lsblk [选项]
。常用的选项包括-a
(显示所有设备,包括空设备)、-b
(以字节为单位显示设备大小)、-f
(显示文件系统信息)、-m
(显示设备的挂载点信息)等。如果不加任何选项,lsblk
会以树状结构列出块设备的基本信息。 - 输出信息解读:
- NAME(名称):这是设备的名称,例如
/dev/sda
是一个磁盘设备名称,/dev/sda1
是该磁盘的一个分区名称。名称的格式与设备在系统中的命名规则一致,对于IDE和SCSI(包括SATA)设备,磁盘通常是/dev/sdX
(X
为字母),分区是/dev/sdXn
(n
为数字);对于NVMe设备,可能是/dev/nvmeXnY
的形式。 - MAJ:MIN(主设备号和次设备号):主设备号用于标识设备类型,次设备号用于在同一类型设备中区分不同的个体。这两个数字组合起来可以唯一确定一个设备,主要用于系统内核识别和管理设备。不过,对于普通用户来说,这些数字的直接用途不大。
- RM(可移动设备):这个字段的值为
0
或1
。0
表示设备不是可移动设备,如内置硬盘;1
表示设备是可移动设备,如USB闪存盘。 - SIZE(大小):以比较直观的方式显示设备的容量大小,如
100G
表示设备容量为100GB,2T
表示2TB。如果使用-b
选项,会以字节为单位显示精确的大小。 - RO(只读):该字段的值为
0
或1
。0
表示设备不是只读的,即可以进行读写操作;1
表示设备是只读的,如某些光盘驱动器在特定情况下可能是只读的。 - TYPE(类型):显示设备的类型,如
disk
表示磁盘设备,part
表示分区,lvm
表示逻辑卷管理(Logical Volume Management)相关的设备等。这有助于快速了解设备在系统中的角色。 - MOUNTPOINT(挂载点):如果设备已经挂载到文件系统中的某个目录,这里会显示挂载点的名称。例如,如果一个分区挂载到
/home
目录,那么在该分区对应的行中,MOUNTPOINT
字段会显示/home
。如果设备没有挂载,这个字段为空。
- NAME(名称):这是设备的名称,例如
- 基本语法:
使用场景和示例
- 查看磁盘和分区布局:在没有任何选项的情况下,
lsblk
会以简洁明了的方式展示系统中磁盘和分区的层次结构。例如,它可以清晰地显示出一个磁盘有几个分区,分区之间的关系,以及每个分区是否挂载等信息。这对于了解系统的存储架构非常有用,比如在安装新软件或者配置数据存储时,需要知道系统中有多少可用的磁盘空间以及分区情况。 - 检查设备挂载情况:通过
-m
选项可以重点关注设备的挂载点信息。例如,在排查系统启动问题或者文件访问问题时,如果怀疑是某个存储设备没有正确挂载,可以使用lsblk -m
来快速检查设备的挂载状态。 - 查看文件系统信息:使用
-f
选项可以查看设备上的文件系统信息。这在需要了解磁盘分区采用何种文件系统(如ext4、NTFS等),或者检查文件系统是否正常时非常有用。例如,在数据恢复或者系统迁移过程中,需要明确每个分区的文件系统类型,以便采取正确的操作。
- 查看磁盘和分区布局:在没有任何选项的情况下,
[root@lamp-241 ~]# ls -l /dev/sd*
brw-rw---- 1 root disk 8, 0 Mar 2 01:16 /dev/sda
brw-rw---- 1 root disk 8, 1 Mar 2 01:16 /dev/sda1
brw-rw---- 1 root disk 8, 2 Mar 2 01:16 /dev/sda2
brw-rw---- 1 root disk 8, 16 Mar 2 01:16 /dev/sdb
df命令
[root@lamp-241 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 6.1G 11G 36% /
devtmpfs 899M 0 899M 0% /dev
tmpfs 911M 0 911M 0% /dev/shm
tmpfs 911M 9.6M 902M 2% /run
tmpfs 911M 0 911M 0% /sys/fs/cgroup
/dev/sda1 1014M 142M 873M 14% /boot
tmpfs 183M 0 183M 0% /run/user/0
显示信息文件系统列下面带tmpfs字样的是虚拟内存文件系统(此处不做展开)。
文件系统/dev/mapper/centos-root的挂载点是/(根目录),即通常所说的根分区(或根文件系统);
并且/dev/mapper是linux内核2.6中提供的一个从逻辑设备到物理设备的映射机制,简单说这就是如果你用了lvm,就会看到根目录是这个文件系统,因为它不是一个单纯的物理设备,而是一个虚拟机的逻辑卷组。
/dev/sda1(boot分区)中保存了内核映像和一些启动时需要的辅助文件;
还有一个特殊的分区,swap分区,swap分区是一块特殊的硬盘空间,当实际内存不够用的时候,操作系统会从内存中取出一部分暂时不用的数据,放在交换内存中,从而使当前的程序腾出更多的内存量。
但是由于其性能很差,生产环境是直接禁用的。
fdisk命令参数解释
操作sdb硬盘
[root@lamp-241 ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xf0f33bf9.
Command(m for help): m 输出帮助信息
Commandaction
a toggle a bootable flag 设置启动分区
b edit bsd disklabel 编辑分区标签
c toggle the dos compatibility flag
d delete a partition 删除一个分区
l list known partition types 列出分区类型
m print this menu 帮助
n add a new partition 建立一个新的分区
o create a new empty DOS partition table 创建一个新的空白DOS分区表
p print the partition table 打印分区表
q quit without saving changes 退出不保存设置
s createa new empty Sun disklabel 创建一个新的空的SUN标示
t changea partition's system id 改变分区的类型
u changedisplay/entry units 改变显示的单位
v verifythe partition table 检查验证分区表
w write table to disk and exit 保存分区表
任务:操作sdb硬盘(mbr分区)
任务:将sdb硬盘分区
- 1个主分区
- 1个扩展分区
- 2个逻辑分区
要求图解
操作截图
任务完成操作记录
Command (m for help): p
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xf0f33bf9
Device Boot Start End Blocks Id System
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-41943039, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +256M
Partition 1 of type Linux and of size 256 MiB is set
Command (m for help): p
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xf0f33bf9
Device Boot Start End Blocks Id System
/dev/sdb1 2048 526335 262144 83 Linux
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): e
Partition number (2-4, default 2):
First sector (526336-41943039, default 526336):
Using default value 526336
Last sector, +sectors or +size{K,M,G} (526336-41943039, default 41943039):
Using default value 41943039
Partition 2 of type Extended and of size 19.8 GiB is set
Command (m for help): p
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xf0f33bf9
Device Boot Start End Blocks Id System
/dev/sdb1 2048 526335 262144 83 Linux
/dev/sdb2 526336 41943039 20708352 5 Extended
Command (m for help): n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
Adding logical partition 5
First sector (528384-41943039, default 528384):
Using default value 528384
Last sector, +sectors or +size{K,M,G} (528384-41943039, default 41943039): +10G
Partition 5 of type Linux and of size 10 GiB is set
Command (m for help): p
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xf0f33bf9
Device Boot Start End Blocks Id System
/dev/sdb1 2048 526335 262144 83 Linux
/dev/sdb2 526336 41943039 20708352 5 Extended
/dev/sdb5 528384 21499903 10485760 83 Linux
Command (m for help): n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
Adding logical partition 6
First sector (21501952-41943039, default 21501952):
Using default value 21501952
Last sector, +sectors or +size{K,M,G} (21501952-41943039, default 41943039):
Using default value 41943039
Partition 6 of type Linux and of size 9.8 GiB is set
Command (m for help): p
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xf0f33bf9
Device Boot Start End Blocks Id System
/dev/sdb1 2048 526335 262144 83 Linux
/dev/sdb2 526336 41943039 20708352 5 Extended
/dev/sdb5 528384 21499903 10485760 83 Linux
/dev/sdb6 21501952 41943039 10220544 83 Linux
Command (m for help): n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
Adding logical partition 7
No free sectors available
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@lamp-241 ~]# ll /dev/sdb*
brw-rw---- 1 root disk 8, 16 Mar 2 01:58 /dev/sdb
brw-rw---- 1 root disk 8, 17 Mar 2 01:58 /dev/sdb1
brw-rw---- 1 root disk 8, 18 Mar 2 01:58 /dev/sdb2
brw-rw---- 1 root disk 8, 21 Mar 2 01:58 /dev/sdb5
brw-rw---- 1 root disk 8, 22 Mar 2 01:58 /dev/sdb6
[root@lamp-241 ~]#
最后查看分区情况
[root@lamp-241 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 256M 0 part
├─sdb2 8:18 0 1K 0 part
├─sdb5 8:21 0 10G 0 part
└─sdb6 8:22 0 9.8G 0 part
sr0 11:0 1 4.2G 0 rom
partx刷新分区
如果你创建完了分区,没有正确读取到分区信息,可能是linux内核还未读取到分区信息,可以主动告诉linux内核,新的分区情况。
#让内核重读分区表
# partx -a /dev/sdb
查看是mbr还是gpt?
fdisk命令看
parted命令看
任务,操作sdb硬盘(gpt分区)
当你在企业里遇见,超过2TB的大硬盘分区,就必须用GPT分区了。
小于2TB的磁盘都可以用fdisk分区,但是大于2TB的磁盘,只能用parted命令分区,且转换磁盘为GPT格式
于超老师这里删除了/dev/sdb磁盘的所有分区,使用的是20G的硬盘模拟,同学们可以自己添加新硬盘。
概述
parted
是一个在Ubuntu(以及其他Linux系统)中功能强大的分区工具,尤其适用于处理GPT(GUID Partition Table)分区。与fdisk
相比,parted
支持更多高级的分区操作,并且对GPT分区有很好的兼容性。
启动和基本操作模式
- 启动方式:在终端中输入
parted [磁盘设备名]
来启动parted
工具并对指定磁盘进行操作。例如,要对/dev/sda
进行分区操作,可以输入parted /dev/sda
。进入parted
后,会出现(parted)
提示符,表示已进入parted
的交互式操作环境。 - 基本命令格式:在
(parted)
提示符下,输入命令来执行各种操作。可以使用help
命令查看所有可用的命令及其简要说明。例如,help print
会显示关于print
命令(用于打印分区信息)的详细帮助内容。
- 启动方式:在终端中输入
处理GPT分区的常用操作
- 查看分区信息(print):
- 基本语法:在
(parted)
提示符下输入print
或print all
。print
主要用于查看当前磁盘的分区表信息,包括分区编号、起始和结束位置、文件系统类型等。print all
则会提供更全面的信息,除了分区表,还会显示磁盘的物理信息,如磁盘容量、扇区大小等。 - 输出信息解读:对于分区表部分,输出会显示每个分区的
Number
(分区编号)、Start
(起始位置,以字节为单位)、End
(结束位置)、Size
(分区大小)、File system
(文件系统类型)、Name
(分区名称,在GPT分区中每个分区可以有一个名称)等信息。这些信息有助于了解磁盘的分区布局和每个分区的属性。
- 基本语法:在
- 创建分区(mkpart):
- 基本语法:
mkpart [分区类型] [文件系统类型] [起始位置] [结束位置]
。分区类型可以是primary
(主分区)、logical
(逻辑分区)或extended
(扩展分区,在GPT分区中通常不需要创建扩展分区,因为GPT分区没有主分区数量限制)。文件系统类型可以是ext4
、fat32
、ntfs
等常见的文件系统。起始位置和结束位置以字节为单位指定分区的范围。例如,mkpart primary ext4 1MB 10GB
会创建一个从1MB开始到10GB结束的主分区,并格式化为ext4
文件系统。 - 注意事项:在创建分区时,要确保指定的位置和大小是合理的,避免与已有的分区重叠。同时,由于
parted
操作直接对磁盘进行更改,操作前一定要备份重要数据,因为分区操作可能会导致数据丢失。
- 基本语法:
- 删除分区(rm):
- 基本语法:
rm [分区编号]
。例如,rm 1
会删除编号为1的分区。和其他分区删除操作一样,这会导致分区上的数据全部丢失,所以要谨慎使用。
- 基本语法:
- 设置分区名称(name):
- 基本语法:
name [分区编号] [新名称]
。这是GPT分区特有的功能,允许为分区设置一个名称。例如,name 2 MyDataPartition
会将编号为2的分区名称设置为MyDataPartition
。分区名称可以方便用户识别分区的用途。
- 基本语法:
- 对齐分区(align - check和align - to):
- 对齐检查(align - check):基本语法为
align - check [分区类型] [分区编号]
。分区类型可以是minimal
(最小对齐)或optimal
(最佳对齐)。这个命令用于检查分区是否按照指定的对齐方式对齐。例如,align - check minimal 3
会检查编号为3的分区是否按照最小对齐方式对齐。 - 对齐设置(align - to):基本语法为
align - to [对齐方式] [对齐值]
。对齐方式可以是sector
(扇区)、cylinder
(柱面)等,对齐值是一个具体的数字。这个命令用于设置分区的对齐方式。正确的分区对齐可以提高磁盘性能,特别是在使用固态硬盘(SSD)时,良好的对齐可以优化读写操作。
- 对齐检查(align - check):基本语法为
- 查看分区信息(print):
保存和退出
- 在完成分区操作后,输入
quit
命令退出parted
。parted
会自动将分区表的更改保存到磁盘。不过,在进行复杂的分区操作或者不确定操作是否正确时,最好先备份数据,因为一旦出现错误,可能会导致数据丢失。
- 在完成分区操作后,输入
[root@lamp-241 ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): d
Partition number (1,2,5,6, default 6):
按下d即可删除分区,可以是主分区1,以及扩展分区2(携带删除所有逻辑分区)
最后按下w写入磁盘。
查看当前分区情况
[root@lamp-241 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
sr0 11:0 1 4.2G 0 rom
parted命令分区GPT
- gpt分区表,没有扩展分区的类型,只有主分区、逻辑分区。
- 可以用parted命令对磁盘分区为GPT,但是比较麻烦
- 可以用parted命令,修改磁盘分区表类型(gpt改为mbr)
- fdisk命令是专门针对mbr分区格式的,无法操作GPT格式硬盘。
parted命令修改磁盘为mbr类型。
[root@lamp-241 ~]# parted /dev/sdb
GNU Parted 3.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
修改磁盘分区表类型为mbr类型
(parted) mktable msdos
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? yes
(parted)
(parted) p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
(parted)
gdisk命令分区gpt类型
由于fdisk命令不支持gpt分区,parted命令又不好用,因此用gdisk命令(同样支持mbr分区表)。
gdisk概述
gdisk
是一个专门用于处理GPT(GUID Partition Table)分区的命令行工具,在Ubuntu等Linux系统中被广泛使用。它类似于fdisk
,但主要专注于GPT分区的操作,提供了创建、删除、修改和查看GPT分区的功能。
查看分区信息
- 基本语法:
gdisk -l [磁盘设备名]
。例如,gdisk -l /dev/sda
会列出/dev/sda
磁盘的GPT分区信息。 - 输出内容解读:
- 输出会显示磁盘的整体信息,包括磁盘大小、扇区大小等。对于每个分区,会显示
Partition table scan:
信息,表明分区表的扫描状态是否正常。然后会列出每个分区的Number
(分区编号)、Start
(起始扇区)、End
(结束扇区)、Size
(分区大小)、Code
(分区类型代码,用于识别分区类型,如0700
表示Microsoft基本数据分区)、Name
(分区名称)等内容。通过这些信息可以详细了解磁盘的分区布局和每个分区的基本属性。
- 输出会显示磁盘的整体信息,包括磁盘大小、扇区大小等。对于每个分区,会显示
- 基本语法:
进入交互式分区操作界面
- 基本语法:
gdisk [磁盘设备名]
。例如,输入gdisk /dev/sda
后,会进入gdisk
的交互式分区操作界面。在这个界面中,会有一个命令提示符(如Command (? for help):
),在这里可以输入各种命令来操作分区。 - 可用命令帮助:在提示符下输入
?
可以查看所有可用的命令及其说明。这对于初次使用gdisk
或者不熟悉某些命令的用户非常有用。
- 基本语法:
分区操作命令
- 创建分区(n):
- 输入
n
后,gdisk
会引导用户创建新分区。首先需要指定分区编号(通常按回车键可以使用默认的下一个可用编号),然后是分区的起始扇区(可以按回车键使用默认值)和结束扇区(可以通过指定扇区数量或者分区大小来确定)。接着,需要为分区选择分区类型代码(可以输入L
查看代码列表及其对应的分区类型,如8300
表示Linux文件系统分区)。这样就可以创建一个新的GPT分区。
- 输入
- 删除分区(d):
- 输入
d
后,需要指定要删除的分区编号。例如,输入d
,然后输入3
,就会删除编号为3的分区。要注意的是,删除分区会导致分区上的数据全部丢失,所以在操作之前一定要确保数据已经备份。
- 输入
- 转换分区类型(t):
- 输入
t
后,先指定要转换类型的分区编号,然后输入新的分区类型代码。这在需要改变分区的用途(如从一个文件系统分区转换为另一个文件系统分区或者转换为其他特殊用途分区)时非常有用。
- 输入
- 查看分区表(p):
- 输入
p
可以查看当前磁盘的分区表,这会显示所有现有分区的详细信息,包括前面提到的分区编号、起始和结束位置、分区类型等。这个命令在创建或修改分区后可以用于检查分区设置是否正确。
- 输入
- 保存并退出(w)或不保存退出(q):
- 完成分区操作后,如果想要保存修改后的分区表,可以输入
w
。这会将分区表的更改写入磁盘并退出gdisk
。如果不想保存任何修改,可以输入q
直接退出。和其他分区工具一样,在输入w
之前,一定要确保分区操作是正确的,因为一旦保存,分区的更改是不可逆的(除了通过数据恢复工具尝试恢复数据,但这也不能保证完全恢复)。
- 完成分区操作后,如果想要保存修改后的分区表,可以输入
- 创建分区(n):
备份和恢复分区表
- 备份分区表(b):
- 在
gdisk
的交互式界面中,输入b
,然后指定备份文件名,可以将当前磁盘的GPT分区表备份到一个文件中。例如,b backup.gpt
会将分区表备份到当前目录下名为backup.gpt
的文件中。这在需要恢复分区表或者进行灾难恢复时非常有用。
- 在
- 恢复分区表(r):
- 输入
r
可以进入恢复模式。在恢复模式下,可以通过之前备份的文件来恢复分区表。按照提示操作,指定备份文件的位置,就可以尝试恢复分区表。不过,这种恢复操作可能会覆盖当前的分区表设置,所以也要谨慎使用。
- 输入
- 备份分区表(b):
安装gdisk命令
[root@lamp-241 ~]# yum install gdisk -y
-l 列出硬盘的分区表信息
[root@lamp-241 ~]# gdisk -l /dev/sdb
GPT fdisk (gdisk) version 0.8.10
Partition table scan:
MBR: MBR only
BSD: not present
APM: not present
GPT: not present
***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory.
***************************************************************
Disk /dev/sdb: 41943040 sectors, 20.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 951AECF9-82E1-4DBA-9C2A-EECA931CC6E8
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 41943006
Partitions will be aligned on 2048-sector boundaries
Total free space is 41942973 sectors (20.0 GiB)
Number Start (sector) End (sector) Size Code Name
[root@lamp-241 ~]#
[root@lamp-241 ~]#
gdisk对磁盘分区为gpt
查看gdisk语法帮助
[root@lamp-241 ~]# gdisk /dev/sdb
GPT fdisk (gdisk) version 0.8.10
Partition table scan:
MBR: MBR only
BSD: not present
APM: not present
GPT: not present
***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory. THIS OPERATION IS POTENTIALLY DESTRUCTIVE! Exit by
typing 'q' if you don't want to convert your MBR partitions
to GPT format!
***************************************************************
Command (? for help):
查看帮助信息
Command (? forhelp): ?
b backupGPTdatatoafile
c changeapartition'sname
d deleteapartition #删除分区
i showdetailedinformationonapartition
l listknownpartitiontypes #列出分区类型
n addanewpartition #添加新分区
o createanewemptyGUIDpartitiontable (GPT)
p printthepartitiontable #打印分区列表
q quitwithoutsavingchanges #不保存退出
r recoveryandtransformationoptions (expertsonly)
s sortpartitions
t changeapartition'stypecode #修改分区类型
v verifydisk
w writetabletodiskandexit #保存退出
x extrafunctionality (expertsonly)
? printthismenu
添加新分区
Command (? for help): p
Disk /dev/sdb: 41943040 sectors, 20.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): D243B068-B5C3-4A77-8A70-86B69C0A9ED5
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 41943006
Partitions will be aligned on 2048-sector boundaries
Total free space is 41942973 sectors (20.0 GiB)
Number Start (sector) End (sector) Size Code Name
添加分区指令
Command (? for help): n
Partition number (1-128, default 1): 1
First sector (34-41943006, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-41943006, default = 41943006) or {+-}size{KMGTP}: +2G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'
Command (? for help): p
Disk /dev/sdb: 41943040 sectors, 20.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): D243B068-B5C3-4A77-8A70-86B69C0A9ED5
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 41943006
Partitions will be aligned on 2048-sector boundaries
Total free space is 37748669 sectors (18.0 GiB)
Number Start (sector) End (sector) Size Code Name
1 2048 4196351 2.0 GiB 8300 Linux filesystem
Command (? for help): n
Partition number (2-128, default 2):
First sector (34-41943006, default = 4196352) or {+-}size{KMGTP}:
Last sector (4196352-41943006, default = 41943006) or {+-}size{KMGTP}: +10G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'
Command (? for help): p
Disk /dev/sdb: 41943040 sectors, 20.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): D243B068-B5C3-4A77-8A70-86B69C0A9ED5
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 41943006
Partitions will be aligned on 2048-sector boundaries
Total free space is 16777149 sectors (8.0 GiB)
Number Start (sector) End (sector) Size Code Name
1 2048 4196351 2.0 GiB 8300 Linux filesystem
2 4196352 25167871 10.0 GiB 8300 Linux filesystem
Command (? for help): w
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sdb.
The operation has completed successfully.
验收分区
[root@lamp-241 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 2G 0 part
└─sdb2 8:18 0 10G 0 part
sr0 11:0 1 4.2G 0 rom
重新改为mbr分区类型
重置为mbr类型,会删除所有分区
[root@lamp-241 ~]# parted /dev/sdb
GNU Parted 3.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mktable msdos
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? yes
(parted) p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
再次查看分区表类型
[root@lamp-241 ~]# fdisk -l /dev/sdb
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000ad5a3
Device Boot Start End Blocks Id System
最后再重新改为mbr
任务:将sdb硬盘分区
- 1个主分区 5G
- 1个扩展分区 15G
- 2个逻辑分区
[root@lamp-241 ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-41943039, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +5G
Partition 1 of type Linux and of size 5 GiB is set
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): e
Partition number (2-4, default 2):
First sector (10487808-41943039, default 10487808):
Using default value 10487808
Last sector, +sectors or +size{K,M,G} (10487808-41943039, default 41943039):
Using default value 41943039
Partition 2 of type Extended and of size 15 GiB is set
Command (m for help): n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
Adding logical partition 5
First sector (10489856-41943039, default 10489856):
Using default value 10489856
Last sector, +sectors or +size{K,M,G} (10489856-41943039, default 41943039): +8G
Partition 5 of type Linux and of size 8 GiB is set
Command (m for help): n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
Adding logical partition 6
First sector (27269120-41943039, default 27269120):
Using default value 27269120
Last sector, +sectors or +size{K,M,G} (27269120-41943039, default 41943039):
Using default value 41943039
Partition 6 of type Linux and of size 7 GiB is set
Command (m for help): p
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000ad5a3
Device Boot Start End Blocks Id System
/dev/sdb1 2048 10487807 5242880 83 Linux
/dev/sdb2 10487808 41943039 15727616 5 Extended
/dev/sdb5 10489856 27267071 8388608 83 Linux
/dev/sdb6 27269120 41943039 7336960 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@lamp-241 ~]#
检查分区情况
什么是磁盘格式化
定义
- 磁盘格式化是指对磁盘或磁盘分区进行初始化的操作,其目的是为了在磁盘上建立起文件系统,使磁盘能够被操作系统识别并用于存储数据。简单来说,就像是为一片空地(磁盘)划分出不同的区域(文件系统结构),并制定好规则(文件存储和访问规则),以便能够有序地建造房屋(存储数据)。
过程与步骤
- 清除原有数据结构:在格式化过程中,首先会清除磁盘或分区上原有的数据和数据结构。这包括之前存储的文件、文件夹、文件系统的索引信息等。例如,对于一个已经使用过的硬盘分区,格式化会将用户之前存储的文档、图片、程序等所有数据删除,使磁盘回到一个初始的“空白”状态。不过,需要注意的是,在某些情况下,格式化后的数据可能通过专业的数据恢复工具恢复一部分,但这种恢复并不保证能完全找回所有数据。
- 划分存储单元:格式化操作会根据所选的文件系统类型,对磁盘空间进行划分。以常见的文件系统为例,会划分出扇区(Sector)、簇(Cluster)或块(Block)等存储单元。扇区是磁盘物理结构上的最小存储单位,一般大小为512字节。而簇(在FAT文件系统等中使用)或块(在Linux的ext文件系统等中使用)是文件系统管理磁盘空间的逻辑单位,它们是由一个或多个扇区组成的。例如,在FAT32文件系统中,簇的大小可能是4KB(即8个512字节的扇区),文件系统会以簇为单位来分配磁盘空间给文件。
- 建立文件系统结构:
- 文件分配表(FAT - File Allocation Table)或索引节点(inode):不同的文件系统会建立不同的机制来管理文件的存储位置。在FAT文件系统中,会创建文件分配表,它记录了文件在磁盘上的存储位置,即文件占用了哪些簇。每个文件在FAT中有一个或多个表项,通过这些表项可以追踪文件数据在磁盘上的分布情况。在Linux的ext文件系统中,会使用索引节点(inode)来管理文件。每个文件都有一个对应的inode,inode中存储了文件的属性信息(如文件大小、所有者、权限等)以及指向文件数据块的指针,通过inode可以快速定位文件的数据存储位置。
- 根目录(Root Directory):还会建立根目录,它是文件系统的起始点,所有的文件和文件夹都在根目录下或者根目录的子目录下进行组织。根目录就像是一棵树的树根,所有的树枝(文件夹)和树叶(文件)都从这里开始分支和生长。
文件系统类型与格式化的关系
- 不同文件系统类型的特点:
- FAT32(File Allocation Table 32):这是一种比较常见的文件系统,兼容性很好,被广泛应用于各种存储设备,如U盘、移动硬盘等。FAT32文件系统的优点是兼容性强,几乎可以被所有操作系统识别。但是它也有一些局限性,如单个文件最大不能超过4GB,并且在存储大量小文件时,可能会因为簇的分配方式而导致磁盘空间利用率不高。
- NTFS(New Technology File System):主要用于Windows操作系统。NTFS具有更高的安全性,支持文件加密、权限设置等功能。它能够处理大文件,并且在磁盘空间利用和文件存储效率方面比FAT32更优秀。例如,NTFS可以更好地处理大量小文件的存储,减少磁盘碎片的产生。
- ext4(Fourth Extended File System):是Linux系统中常用的文件系统。ext4在性能、可靠性和功能方面都有很好的表现。它支持更大的文件系统容量和文件大小,具有日志功能(可以在系统崩溃或突然断电后更快地恢复文件系统),并且在存储效率和数据完整性保护方面也有出色的设计。
- 格式化时选择文件系统类型:在进行磁盘格式化时,需要根据磁盘的用途和使用的操作系统来选择合适的文件系统。例如,如果磁盘主要用于在Windows和Linux系统之间交换数据,FAT32可能是一个比较好的选择;如果磁盘是专门用于Windows系统,并且需要存储大文件和进行高级的安全设置,那么NTFS更合适;而对于只在Linux系统中使用的磁盘,ext4通常是首选的文件系统。
- 不同文件系统类型的特点:
格式化的应用场景和注意事项
- 应用场景:
- 新磁盘初次使用:当安装新的硬盘、U盘或其他存储设备时,需要对其进行格式化,以建立文件系统,使其能够正常存储数据。例如,购买了一个新的移动硬盘,在第一次使用之前,需要将其连接到计算机上,通过操作系统的格式化工具对其进行格式化。
- 重新分配磁盘用途或清除数据:如果想要改变磁盘分区的用途,或者清除磁盘上的所有数据,格式化是一种有效的方法。例如,当要将一个旧的硬盘从存储个人文件转变为存储系统备份数据时,可以先格式化该硬盘,然后再进行备份数据的存储。
- 注意事项:
- 数据备份:由于格式化会清除磁盘上的所有数据,所以在进行格式化操作之前,一定要确保重要数据已经备份到其他存储设备上。
- 不可逆性:格式化操作在大多数情况下是不可逆的。虽然有一些数据恢复工具可以尝试恢复格式化后的数据,但恢复的成功率和数据完整性无法保证,所以在操作时要谨慎。
- 应用场景:
格式化文件系统
分区完毕之后,就得进行格式化文件系统,磁盘才可以使用,这就好比,你买了个房,打完隔断之后,装修一下才能住!
磁盘格式化是因为不同的操作系统
设置的文件属性、权限各不相同,还得将分区格式化后,成为操作系统能够识别、兼容的文件系统(filesystem)。
分区搞明白之后,下一步就是要进行分区格式化文件系统
1.分区等于是对磁盘的扇区做分配处理,每一个分区,占用哪一段连续的分区。
2.分区完了之后,你是一个普通人类,如何去读写扇区里的数据?答案就是文件系统
文件系统介绍
计算机的文件系统是一种存储和组织计算机数据的方法,它使得对其访问和查找变得容易,文件系统使用文件和树形目录的抽象逻辑概念代替了硬盘和光盘等物理设备使用数据块的概念
用户使用文件系统来保存数据不必关心数据实际保存在硬盘(或者光盘)的地址(数据块,也有编号)为多少的数据块上,只需要记住这个文件的所属目录和文件名,即可访问该文件。
文件系统的定义与作用
- 定义:文件系统是操作系统用于在存储设备(如磁盘、光盘、闪存等)上组织、存储和检索数据的一种方法和数据结构。它就像是一个图书馆的管理系统,负责将各种书籍(数据)有序地存放在书架(存储设备)上,并能够方便地找到它们。
- 作用:
- 数据存储与组织:文件系统将数据以文件和文件夹(目录)的形式存储在磁盘等存储介质上。文件是数据的基本存储单元,用于存储文本、图像、程序等各种信息。文件夹则用于对文件进行分类和组织,就像图书馆中的书架分区一样,使得用户可以方便地查找和管理数据。例如,在计算机的硬盘上,用户可以将文档文件放在“文档”文件夹中,将图片文件放在“图片”文件夹中。
- 空间分配与管理:文件系统会合理地分配存储设备的空间给不同的文件和文件夹。它会根据一定的规则,如以簇(在某些文件系统中)或块(在另一些文件系统中)为单位来分配空间。例如,在FAT32文件系统中,以簇为单位进行空间分配,一个簇可能包含多个扇区,文件系统会根据文件的大小为其分配适当数量的簇。
- 提供数据访问接口:文件系统为操作系统和应用程序提供了访问存储数据的接口。当用户或应用程序需要读取或写入文件时,通过文件系统提供的接口来操作。例如,当用户打开一个文本文件时,操作系统通过文件系统找到该文件在磁盘上的存储位置,读取文件内容并在文本编辑器中显示;当用户保存文件时,文件系统将新的内容写入到文件对应的磁盘位置。
常见文件系统类型及其特点
- FAT32(File Allocation Table 32)
- 兼容性广泛:FAT32是一种历史悠久且应用广泛的文件系统。它几乎可以被所有主流操作系统识别,包括Windows、Linux、macOS等。这使得它非常适合用于可移动存储设备,如U盘、移动硬盘等,方便在不同操作系统的计算机之间交换数据。
- 简单的结构与限制:FAT32文件系统的结构相对简单,基于文件分配表(FAT)来管理文件的存储位置。然而,它也有一些局限性。例如,它的单个文件最大不能超过4GB。这在存储大型文件(如高清电影、大型软件安装包等)时会受到限制。此外,在处理大量小文件时,由于其簇的分配方式,可能会导致磁盘空间利用率不高。
- NTFS(New Technology File System)
- 高级功能与安全性:NTFS主要用于Windows操作系统。它提供了许多高级功能,如文件加密、访问权限控制、磁盘配额等。文件加密功能可以保护用户的敏感数据,防止未经授权的访问;访问权限控制允许管理员或用户为不同的文件和文件夹设置不同的访问权限,如只读、读写、完全控制等。磁盘配额功能可以限制用户对磁盘空间的使用,对于多用户共享的计算机或服务器非常有用。
- 高效的空间利用和性能:NTFS在磁盘空间利用和文件存储效率方面表现出色。它能够更有效地处理大量小文件的存储,减少磁盘碎片的产生。相比FAT32,NTFS可以支持更大的文件和文件系统容量,能够满足现代计算机对存储大容量文件和大量数据的需求。
- ext4(Fourth Extended File System)
- Linux系统的主力文件系统:ext4是Linux系统中常用的文件系统。它在性能、可靠性和功能方面都有很好的表现。ext4支持更大的文件系统容量(理论上最大可达1EB,1EB = 1024PB)和文件大小(文件大小最大可达16TB),这使得它能够适应大型数据存储的需求。
- 日志功能与数据完整性:ext4具有日志功能,这是它的一个重要特点。日志就像是一个操作记录,当系统出现故障(如突然断电、系统崩溃等)时,文件系统可以通过查看日志来快速恢复文件系统的状态,减少数据丢失的风险,保证数据的完整性。此外,ext4在存储效率和数据管理方面也有优秀的设计,能够有效地组织和存储文件。
- FAT32(File Allocation Table 32)
文件系统的内部结构
- 文件分配表(FAT)或索引节点(inode)
- FAT文件系统:在FAT文件系统(如FAT32)中,文件分配表是核心的管理结构。FAT是一个链表结构,用于记录文件在磁盘上的存储位置。每个文件在FAT中有一个或多个表项,这些表项通过指针相连,指示文件占用的簇的顺序。例如,一个文件存储在磁盘上的第3个、第5个和第7个簇中,FAT中就会有相应的表项来记录这个顺序,通过这些表项可以追踪文件数据在磁盘上的分布情况。
- ext文件系统(以ext4为例):在ext4文件系统中,使用索引节点(inode)来管理文件。每个文件都有一个对应的inode,inode存储了文件的属性信息(如文件大小、所有者、权限等)和指向文件数据块的指针。文件的数据块可能分布在磁盘的不同位置,inode中的指针可以准确地定位这些数据块。例如,当读取一个文件时,操作系统首先找到文件对应的inode,然后根据inode中的指针读取文件的数据块。
- 目录结构:文件系统中的目录(文件夹)用于组织文件。目录本身也是一种特殊的文件,它存储了其中包含的文件和子目录的名称以及对应的索引信息(在FAT文件系统中是与FAT表相关的信息,在ext文件系统中是与inode相关的信息)。例如,在一个名为“文档”的目录中,文件系统会记录该目录下所有文件的名称和它们在磁盘上的存储位置索引,这样当用户访问这个目录时,文件系统可以快速地列出目录中的文件。
- 文件分配表(FAT)或索引节点(inode)
文件系统的发展历程与趋势
- 发展历程:从早期简单的文件系统,如FAT文件系统的前身,到如今功能强大的文件系统,如ext4和NTFS,文件系统经历了漫长的发展过程。早期文件系统主要关注基本的数据存储和简单的访问功能,随着计算机技术的发展,对文件系统的容量、性能、安全性和数据完整性等方面的要求不断提高,促使文件系统不断进化。例如,NTFS的出现解决了FAT文件系统在安全性和容量方面的许多问题,ext4在Linux系统中的发展也提高了Linux系统的数据存储和管理能力。
- 趋势:
- 适应大数据和云计算:随着大数据时代的到来,文件系统需要能够处理海量的数据存储和高速的数据访问。一些新的文件系统正在研究和开发中,以适应云计算环境下的数据存储和分布式计算的需求。例如,分布式文件系统(如Ceph等)能够将数据存储在多个节点上,提供高可用性和高扩展性的存储解决方案。
- 提升性能和安全性:在性能方面,文件系统会不断优化数据读写的速度和效率,尤其是在固态硬盘(SSD)等新型存储设备上的性能。在安全性方面,加强数据加密、访问控制和数据完整性保护等功能仍然是重要的发展方向,以应对日益增长的网络安全威胁。
图解文件系统的使用
有哪些文件系统
磁盘文件系统是一种用来利用数据存储设备
来保存计算机文件的计算机程序(c、c++)。
当你在企业里,比如遇见业务需要,公司需要你评估各种文件系统,有一批存储设备需要格式化文件系统,如U盘,移动硬盘,固态硬盘等。
目前常见的系统平台就3类,分别是 微软的Windows
,苹果的MacOS
,开源社区的Linux
,每个操作系统都有设计自己的文件系统,以本文讨论的几款文件系统来说,他们的归属如下:
Dev | FAT32 | exFAT | NTFS | ReFS | HFS/HFS+ | APFS | Ext2/3/4 | XFS |
---|---|---|---|---|---|---|---|---|
Window | √ | √ | √ | √ | ||||
Mac | √ | √ | ||||||
Linux | √ | √ |
文件系统的区别
总之不同的文件系统,区别在于
- 兼容性,不同系统平台,不一定识别、或者无法读写操作
- 容量大小、支持硬盘最大容量有限制
文件系统的兼容性
我们经常需要跨平台工作,例如从 Win10 拷贝个文件到U盘,然后插入到 Mac Book中,或者 Linux 电脑中,这时候如果U盘的文件系统兼容性不够好,就会导致有的平台能识别U盘的文件,有的电脑无法识别。
不同系统之间的文件系统不兼容,就得通过一些第三方工具来实现读写,否则可能只能读取,无法写入。
支持的磁盘容量限制
不同系统支持的文件系统
- window
- 最古老的FAT32用于windows XP,无法支持大于32G的存储分区和大于4G的文件
- Win10 使用NTFS,支持加密、压缩、权限控制等等,且还支持日志保证数据一致性,主流硬盘都是NTFS
- 专门给闪存使用的ExFAT,属于是FAT32和NTFS选择的折中,并且同时支持win和macos。
- linux
Ext
系列则是Linux
社区上设计的文件系统,由于Linux
称霸服务器端,大部分开发者其实都或多或少接触过Ext
系列文件系统。- 在centos7.x之前,都还是Ext4、Ext3都支持日志功能
- (日志功能指的是,不会因为突然断电,导致磁盘数据损坏,能够通过日志恢复磁盘文件)
- XFS(重点,centos7开始默认文件系统)
日志文件系统
journaling fs就是我们常说的: 日志型文件系统。
比较典型的有: ext3, ext4, xfs等, 而ext2是不支持 日志的文件系统,该文件系统基本上已经不再使用;
简单介绍其实现原理: 在磁盘上有一块区域专门用来保存日志,叫做journaling(日志) 区域,在更新磁盘上特定的block之前,首先把要做的变更 记录到 journaling 区域,然后才去更新相应的block。
这样在系统崩溃的时候,可以通过journaling区域的信息,进行replay, 从而实现恢复;
简单理解
如果是非日志文件系统,进行读写操作,内核直接修改文件元数据,如果在写入过程异常崩溃,文件一致性就会出错,且修复过程很漫长,因此必须使用日志类型文件系统。
XFS(centos7)
XFS是高性能文件系统,由于它的高性能,XFS成为了许多企业级系统的首选,特别是有大量数据,需要结构化伸缩性和稳定性的。
例如,RHEL/CentOS 7 和Oracle Linux将XFS作为默认文件系统,SUSE/openSUSE已经为XFS做了长期支持。
XFS有许多独特的性能提升功能使他从众多文件系统中脱颖而出,像可伸缩/并行 IO,元数据日志,热碎片整理,IO 暂停/恢复,延迟分配等。
XFS 文件系统有一些缺陷,例如它不能压缩,删除大量文件时性能低下。
因此,在大公司里,面对超大流量的业务,面对特殊领域的业务,服务器依然会采用其他的文件系统,我们只需要根据业务,继续做调研,然后重新格式化硬盘,选择一个合适的文件系统即可。
网络文件系统
- Smb,Server Message Block、服务消息块,文件共享协议
- NFS,Network File System(NFS),网络文件系统,访问网络中其他主机的文件就像是自己计算机一样
分布式文件系统
- Ceph 是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。
格式化文件系统实践
windows常用文件系统
FAT32 最大支持单个文件大小不超过4G
NTFS,最大可以存储16EB数据
linux常用文件系统
EXT4 单个文件最大支持16TB,最大支持1EB文件系统,centos7之前用这个多
xfs 比ext4更先进的文件系统,最大支持8EB文件系统,单个文件最大支持8EB,也是centos7默认的文件系统。
blkid命令查看分区信息
blkid 命令:可以查看块设备(包括交换分区)的文件系统类型、LABEL、UUID、挂载目录等信息
指定查看磁盘或分区的信息
[root@yuchao-linux-242 yum.repos.d]# blkid /dev/sda
/dev/sda: PTTYPE="dos"
[root@yuchao-linux-242 yum.repos.d]#
[root@yuchao-linux-242 yum.repos.d]# blkid /dev/sda1
/dev/sda1: UUID="c07b71e0-a0a4-41e5-9c12-24646b84c73f" TYPE="xfs"
显示所有分区的信息
[root@yuchao-linux-242 yum.repos.d]# blkid
/dev/sda1: UUID="c07b71e0-a0a4-41e5-9c12-24646b84c73f" TYPE="xfs"
/dev/sda2: UUID="S2y7zo-9SQ9-prrr-ZOtT-NdW8-vVLo-jFwngl" TYPE="LVM2_member"
/dev/sr0: UUID="2018-05-03-20-55-23-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
/dev/mapper/centos-root: UUID="0a7fed5a-edce-4354-aa17-2aa6781e1b85" TYPE="xfs"
/dev/mapper/centos-swap: UUID="706d68e5-0a75-46d2-ab62-cede96863212" TYPE="swap"
命令概述
blkid
是Ubuntu(以及其他Linux系统)中一个用于定位或打印块设备(如硬盘、分区、USB存储设备等)相关属性信息的工具。这些属性信息主要包括设备的UUID(通用唯一识别码)、文件系统类型、标签等,它可以帮助用户快速了解系统中存储设备的关键信息。
基本语法和输出信息
- 基本语法:
blkid [选项] [设备名]
。常见的选项有-o
(用于指定输出格式)、-s
(用于指定要显示的标签)等。如果不指定设备名,blkid
会显示所有块设备的相关信息;如果指定设备名,如blkid /dev/sda1
,则只显示/dev/sda1
这个设备的信息。 - 输出信息解读:
- 设备名(如/dev/sda1):这是块设备在系统中的名称,通过这个名称可以在其他命令(如
mount
)中引用该设备。设备名的格式与设备类型有关,例如/dev/sdX
通常表示SCSI或SATA接口的磁盘设备及其分区(X
为字母或数字),/dev/nvmeXnY
表示NVMe接口的固态硬盘设备及其分区(X
和Y
为数字)。 - UUID(通用唯一识别码):这是一个很长的字符串,用于在系统中唯一标识一个块设备。UUID的优点是它不依赖于设备的挂载顺序或设备名等因素,在系统配置文件(如
/etc/fstab
)中使用UUID来指定设备可以提高系统的稳定性和可靠性。例如,UUID="12345678 - 9abc - def0 - 1234 - 56789abcdef0"
这样的格式,不同的设备有不同的UUID。 - 文件系统类型(TYPE):显示设备上所使用的文件系统,如
ext4
、NTFS
、vfat
等。这有助于用户了解设备的文件系统格式,特别是在挂载设备或者进行数据恢复等操作时,需要知道设备的文件系统类型。 - 标签(LABEL):有些设备可能会有一个用户定义的标签,用于更方便地识别设备。例如,一个USB存储设备可能被标记为
MyUSB
,这个标签就会在blkid
的输出中显示。标签可以在格式化设备或者使用文件系统工具时设置。
- 设备名(如/dev/sda1):这是块设备在系统中的名称,通过这个名称可以在其他命令(如
- 基本语法:
使用场景和示例
- 查看设备信息用于挂载操作:在Ubuntu中,当需要挂载一个存储设备(如外部硬盘或U盘)时,
blkid
可以提供设备的文件系统类型和UUID等信息。例如,要将一个新插入的U盘挂载到/media/usb
目录下,首先可以使用blkid
查看U盘的设备名、文件系统类型等信息,然后根据这些信息使用mount
命令进行正确的挂载操作。 - 在系统配置文件中使用:
/etc/fstab
是Ubuntu系统中用于自动挂载文件系统的配置文件。在这个文件中,可以使用设备的UUID来指定要挂载的设备,这样即使设备名在系统重启后发生变化(如添加新的磁盘设备导致设备名重新编号),系统仍然能够正确地挂载设备。blkid
可以帮助用户获取设备的UUID,以便在/etc/fstab
文件中准确地填写配置信息。例如,将/dev/sda1
设备(假设是一个ext4文件系统的分区)的挂载信息添加到/etc/fstab
中,用户可以先通过blkid
获取/dev/sda1
的UUID,然后在/etc/fstab
中添加类似于UUID=xxxxxxx /mnt/data ext4 defaults 0 0
的内容(其中xxxxxxx
是实际的UUID),这样系统在启动时就会自动挂载该分区。 - 检查文件系统类型和标签:如果用户不确定某个设备的文件系统类型或者想要查看设备是否有标签,可以使用
blkid
。例如,在处理一个旧的硬盘分区时,通过blkid
可以快速确定它是ext4
还是NTFS
文件系统,并且查看是否有自定义的标签来辅助识别分区的用途。
- 查看设备信息用于挂载操作:在Ubuntu中,当需要挂载一个存储设备(如外部硬盘或U盘)时,
mkfs命令
命令概述
mkfs
(make filesystem)是Ubuntu(以及其他Linux系统)中用于在磁盘分区或存储设备上创建文件系统的命令。它是一个功能强大的工具,可以创建多种类型的文件系统,如ext4
、ext3
、vfat
、ntfs
等,从而使存储设备能够被操作系统有效地用于存储数据。
基本语法和参数
- 基本语法:
mkfs [选项] -t <文件系统类型> <设备名>
。其中,-t
选项用于指定要创建的文件系统类型,<设备名>
是要创建文件系统的目标设备,如/dev/sda1
(表示第一个SCSI/SATA硬盘的第一个分区)、/dev/nvme0n1
(表示第一个NVMe固态硬盘的第一个分区)等。 - 常用选项:
-c
:在创建文件系统之前,先检查设备上的坏块。这是一个很有用的选项,特别是对于新的或者可能有损坏的磁盘。例如,mkfs -t ext4 -c /dev/sda1
会在创建ext4
文件系统之前检查/dev/sda1
分区中的坏块。-L
:用于为创建的文件系统设置一个标签(label)。标签可以方便用户识别设备,例如mkfs -t vfat -L MYUSB /dev/sdb1
会在/dev/sdb1
分区创建一个vfat
文件系统,并将其标签设置为MYUSB
。
- 基本语法:
创建不同类型文件系统的示例
- 创建ext4文件系统:
- 例如,要在
/dev/sda2
分区创建一个ext4
文件系统,可以使用命令mkfs -t ext4 /dev/sda2
。执行此命令后,mkfs
会在/dev/sda2
分区上构建ext4
文件系统的结构,包括创建索引节点(inode)、分配存储块、建立目录结构等操作,使该分区能够存储和管理ext4
格式的文件。
- 例如,要在
- 创建vfat文件系统(适用于可移动存储设备和与Windows系统交换数据):
- 如果要格式化一个U盘(假设设备名为
/dev/sdb1
)为vfat
文件系统,方便在Windows和Linux系统之间交换数据,可以使用命令mkfs -t vfat /dev/sdb1
。这样,U盘就被格式化为vfat
文件系统,能够被大多数操作系统识别并用于存储文件。
- 如果要格式化一个U盘(假设设备名为
- 创建ntfs文件系统(在Linux系统中用于与Windows系统兼容的分区):
- 虽然Linux系统原生支持
ntfs
文件系统的读写,但有时候可能需要在一个分区上重新创建ntfs
文件系统。例如,在/dev/sda3
分区创建ntfs
文件系统可以使用命令mkfs -t ntfs /dev/sda3
。不过,需要注意的是,在Linux系统中创建ntfs
文件系统可能需要安装额外的软件包(如ntfs - 3g
)来提供完整的支持。
- 虽然Linux系统原生支持
- 创建ext4文件系统:
注意事项
- 数据丢失风险:
mkfs
命令会在目标设备上创建新的文件系统,这一过程会擦除设备上原有的所有数据和文件系统结构。因此,在使用mkfs
命令之前,务必确保设备上的数据已经备份到其他安全的存储位置。 - 权限要求:执行
mkfs
命令通常需要root
(超级用户)权限。所以在使用该命令时,要么以root
用户身份登录系统,要么使用sudo
命令来获取足够的权限。例如,普通用户可以使用sudo mkfs -t ext4 /dev/sda2
来在/dev/sda2
分区创建ext4
文件系统。 - 设备正确识别:要确保指定的设备名是正确的。错误地指定设备可能会导致意外地格式化其他重要的设备,从而造成数据丢失。在执行
mkfs
命令之前,可以使用lsblk
或fdisk -l
等命令来确认设备名和分区信息。
- 数据丢失风险:
mkfs命令
mkfs把分区格式化为某种文件系统
xfs文件系统工具集
sudo apt update
sudo apt install xfsprogs
xfs_info查看文件系统属性
dumpe2fs命令用于打印文件系统的超级块和块组信息,用于ext2 ext3 ext4文件
然而centos7使用的xfs文件系统,更换xfs_info命令查看分区信息
命令概述
- 在Ubuntu中,
xfs_info
是用于查看XFS文件系统信息的工具。XFS是一种高性能的日志文件系统,主要用于Unix - like操作系统(包括Ubuntu),尤其适用于大容量磁盘和对性能要求较高的场景,如服务器存储、高性能计算等。xfs_info
命令可以帮助用户了解XFS文件系统的各种参数和状态。
- 在Ubuntu中,
基本语法和输出信息
- 基本语法:
xfs_info [选项] <挂载点或设备名>
。通常,如果只提供挂载点(文件系统挂载的目录位置)或设备名(如/dev/sda1
),xfs_info
就会显示该XFS文件系统的基本信息。 - 输出信息解读:
- 文件系统名称和挂载点:输出的开头部分会显示文件系统的名称(如
/dev/sda1
)和挂载点。例如,如果文件系统挂载在/mnt/data
,会显示meta - data = /dev/sda1 isize = 512 agcount = 4, agsize = 655360 blks
等信息,其中/mnt/data
就是挂载点。 - 元数据信息(meta - data):包括
isize
(inode大小,以字节为单位,用于存储文件属性等信息)、agcount
(分配组的数量,XFS文件系统将磁盘空间划分为多个分配组来管理)、agsize
(每个分配组的大小,以块为单位,块大小通常是操作系统设定的固定值)等内容。这些元数据参数描述了文件系统的基本结构和存储分配方式。 - 数据块信息(data):会显示与数据块相关的参数,如
bsize
(数据块大小,用于存储文件数据)、sunit
(条带单元大小,在RAID等存储阵列环境下用于优化数据读写)、swidth
(条带宽度,与sunit
相关,用于描述数据在存储阵列中的分布方式)等。这些信息对于理解文件系统的数据存储方式和性能优化很有帮助。 - 日志信息(log):XFS是一种日志文件系统,输出会包含日志相关的信息,如
logstart
(日志起始块位置)、logsize
(日志大小,以块为单位)等。日志用于在系统故障(如突然断电、系统崩溃等)时快速恢复文件系统的状态,确保数据的完整性。
- 文件系统名称和挂载点:输出的开头部分会显示文件系统的名称(如
- 基本语法:
使用场景和示例
- 查看文件系统基本参数:在对XFS文件系统进行性能优化、故障排查或者容量规划时,
xfs_info
可以提供关键的文件系统参数。例如,要了解一个挂载在/data
目录的XFS文件系统的基本参数,可以在终端中输入xfs_info /data
,然后根据输出的信息,如分配组数量、数据块大小等,来评估文件系统的性能和存储能力。 - 检查日志信息用于故障恢复:当系统出现异常(如文件系统错误或数据不一致)时,查看日志信息是很重要的。
xfs_info
提供的日志起始位置和大小等信息可以帮助管理员在必要时进行手动的文件系统修复或恢复操作。例如,如果怀疑文件系统因为突然断电而出现问题,可以先查看xfs_info
中的日志信息,然后使用相关的XFS修复工具(如xfs_repair
),根据日志来定位和修复可能出现的问题。
- 查看文件系统基本参数:在对XFS文件系统进行性能优化、故障排查或者容量规划时,
注意事项
- 权限要求:一般需要具有足够的权限(通常是
root
或通过sudo
获取权限)来执行xfs_info
命令,因为文件系统信息可能包含敏感的存储配置细节。 - 设备挂载状态:要查看的文件系统需要处于挂载状态。如果文件系统未挂载,
xfs_info
可能无法正确显示全部信息或者会显示错误信息。在这种情况下,需要先挂载文件系统再使用xfs_info
命令。
- 权限要求:一般需要具有足够的权限(通常是
lsblk命令
列出所有设备的关系、以及显示文件系统。
[root@lamp-241 ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 67db0801-a3e0-49a8-9ca9-2313dc74d07b /boot
└─sda2 LVM2_member UX2cdQ-UKp2-EaSV-cs9j-pmQ7-KQ7O-eVU5Kh
├─centos-root xfs 05e85031-542d-4a1b-91a0-b6fa7ec0df49 /
└─centos-swap swap 9230f736-0176-47cb-bac0-0a9d58ba4090 [SWAP]
sdb
├─sdb1
├─sdb2
├─sdb5
└─sdb6
sr0 iso9660 CentOS 7 x86_64 2018-05-03-20-55-23-00
会发现,我们创建好的sdb分区,都没有文件系统,是无法使用的。
报错,未知的文件系统null,空。
[root@lamp-241 ~]# mount /dev/sdb5 /mnt
mount: /dev/sdb5 is write-protected, mounting read-only
mount: unknown filesystem type '(null)'
给分区加上文件系统
给刚打好隔断的房间,装修------给刚分区号的磁盘格式化文件系统
主流的服务器使用文件系统,就是ext4和xfs两种,区别是高并发下压测下
- ext4更稳定
- xfs性能更强
ext4
[root@lamp-241 ~]# mkfs.ext4 /dev/sdb5
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
524288 inodes, 2097152 blocks
104857 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2147483648
64 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks):
done
Writing superblocks and filesystem accounting information: done
挂载使用该分区
[root@lamp-241 ~]# mount /dev/sdb5 /yc-ext4/
[root@lamp-241 ~]#
[root@lamp-241 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 6.1G 11G 36% /
devtmpfs 899M 0 899M 0% /dev
tmpfs 911M 0 911M 0% /dev/shm
tmpfs 911M 9.6M 902M 2% /run
tmpfs 911M 0 911M 0% /sys/fs/cgroup
/dev/sda1 1014M 142M 873M 14% /boot
tmpfs 183M 0 183M 0% /run/user/0
/dev/sdb5 7.8G 36M 7.3G 1% /yc-ext4
[root@lamp-241 ~]# touch /yc-ext4/超哥牛逼.txt
[root@lamp-241 ~]#
[root@lamp-241 ~]# ls /yc-ext4/
lost+found 超哥牛逼.txt
[root@lamp-241 ~]# umount /yc-ext4/
[root@lamp-241 ~]#
[root@lamp-241 ~]# ls /yc-ext4/
[root@lamp-241 ~]#
xfs
[root@lamp-241 ~]# mkfs.xfs /dev/sdb6
meta-data=/dev/sdb6 isize=512 agcount=4, agsize=458560 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=1834240, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
查看分区和文件系统
[root@lamp-241 ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 67db0801-a3e0-49a8-9ca9-2313dc74d07b /boot
└─sda2 LVM2_member UX2cdQ-UKp2-EaSV-cs9j-pmQ7-KQ7O-eVU5Kh
├─centos-root xfs 05e85031-542d-4a1b-91a0-b6fa7ec0df49 /
└─centos-swap swap 9230f736-0176-47cb-bac0-0a9d58ba4090 [SWAP]
sdb
├─sdb1
├─sdb2
├─sdb5 ext4 f78d5154-6690-4f7b-926a-50d223efba55
└─sdb6 xfs 5e52d409-e1a8-4bd3-b70b-46c45e3ffb76
sr0 iso9660 CentOS 7 x86_64 2018-05-03-20-55-23-00
挂载xfs分区
[root@lamp-241 ~]# mount /dev/sdb6 /yc-ext4/
[root@lamp-241 ~]#
[root@lamp-241 ~]# ls /yc-ext4/
[root@lamp-241 ~]#
[root@lamp-241 ~]# touch /yc-ext4/于超老师带你学磁盘管理.txt
[root@lamp-241 ~]#
[root@lamp-241 ~]# ls /yc-ext4/
于超老师带你学磁盘管理.txt
[root@lamp-241 ~]#
[root@lamp-241 ~]# umount /yc-ext4/
[root@lamp-241 ~]#
[root@lamp-241 ~]# ls /yc-ext4/
mount挂载实践
定义
- 在Ubuntu(以及其他操作系统)中,“挂载(mount)”是一种将文件系统与存储设备(如硬盘分区、USB设备、光盘等)关联起来,并使其在操作系统的文件目录树中可用的操作。可以把挂载想象成将一个装满文件的“箱子”(存储设备)连接到一个已经存在的“文件架”(文件目录)上,这样就可以通过文件架来访问箱子里的文件。
挂载的目的和作用
- 统一文件访问方式:通过挂载,操作系统可以使用统一的文件访问方式来处理不同类型的存储设备。无论存储设备是硬盘、U盘、光盘还是网络存储,挂载后都可以像访问本地硬盘文件一样去访问这些设备上的文件。例如,将一个U盘挂载到
/media/usb
目录后,用户就可以通过访问/media/usb
下的文件和文件夹来操作U盘中的内容。 - 组织文件系统层次结构:挂载点允许将存储设备的文件系统整合到操作系统的文件层次结构中。这样可以根据用户的需求和设备的用途来合理安排文件存储位置。例如,将一个新的硬盘分区挂载到
/home/user/data
目录下,就可以将这个分区专门用于存储用户的数据文件,使其成为用户主目录下文件系统的一部分。
- 统一文件访问方式:通过挂载,操作系统可以使用统一的文件访问方式来处理不同类型的存储设备。无论存储设备是硬盘、U盘、光盘还是网络存储,挂载后都可以像访问本地硬盘文件一样去访问这些设备上的文件。例如,将一个U盘挂载到
挂载点(Mount Point)
- 定义:挂载点是操作系统文件目录树中的一个目录,用于作为存储设备文件系统的接入点。它是一个已经存在的本地目录,在挂载过程中,存储设备的根目录会被映射到这个挂载点目录。例如,常见的挂载点有
/mnt
(用于临时挂载设备)、/media
(用于自动挂载可移动设备)等。用户也可以创建自己的挂载点目录,如/home/user/mydisk
。 - 选择挂载点的注意事项:
- 不能是已被占用的目录:挂载点在挂载操作期间不能是正在被其他文件系统使用的目录。例如,如果
/home/user/documents
目录正在被访问或者已经挂载了其他设备,就不能再将另一个设备挂载到这个目录,否则可能会导致数据访问混乱或者错误。 - 符合文件系统层次结构规划:挂载点的选择应该符合用户对文件系统布局的整体规划。例如,将存储系统备份文件的设备挂载到
/backup
目录,将存储多媒体文件的设备挂载到/media/multimedia
目录等,这样可以方便用户对不同类型的数据进行管理。
- 不能是已被占用的目录:挂载点在挂载操作期间不能是正在被其他文件系统使用的目录。例如,如果
- 定义:挂载点是操作系统文件目录树中的一个目录,用于作为存储设备文件系统的接入点。它是一个已经存在的本地目录,在挂载过程中,存储设备的根目录会被映射到这个挂载点目录。例如,常见的挂载点有
挂载的操作过程(以命令行为例)
- 基本挂载命令语法:在Ubuntu中,挂载命令通常是
mount [选项] <设备名> <挂载点>
。例如,要将/dev/sda1
(一个硬盘分区)挂载到/mnt/data
目录,可以使用命令mount /dev/sda1 /mnt/data
。 - 常用挂载选项:
-t
:用于指定设备的文件系统类型。例如,mount -t ext4 /dev/sda1 /mnt/data
表示将/dev/sda1
分区(假设是ext4
文件系统)挂载到/mnt/data
目录。这个选项很重要,因为操作系统需要知道设备的文件系统类型才能正确地读取和写入数据。-o
:用于指定挂载选项,如ro
(只读挂载)、rw
(读写挂载)、user
(允许普通用户挂载)等。例如,mount -o ro /dev/sda1 /mnt/data
会将/dev/sda1
以只读方式挂载到/mnt/data
目录,这样用户就不能对挂载后的文件系统进行写入操作。
- 自动挂载配置(/etc/fstab):
/etc/fstab
是一个系统配置文件,用于定义在系统启动时自动挂载的文件系统。文件中的每一行代表一个挂载配置,格式通常为<设备名> <挂载点> <文件系统类型> <挂载选项> <备份选项> <检查顺序>
。例如,/dev/sda1 /mnt/data ext4 defaults 0 0
表示在系统启动时将/dev/sda1
(ext4
文件系统)自动挂载到/mnt/data
目录,采用默认的挂载选项,不进行备份(0
),检查顺序为最后(0
)。用户可以通过编辑这个文件来添加、修改或删除自动挂载的文件系统。
- 基本挂载命令语法:在Ubuntu中,挂载命令通常是
卸载(Unmount)操作
- 定义和作用:卸载是挂载的逆操作,用于将已经挂载的文件系统从挂载点上分离,使得存储设备可以安全地移除(对于可移动设备)或者进行其他操作。例如,在拔出U盘之前,需要先卸载U盘对应的文件系统,以避免数据损坏。
- 卸载命令语法:在Ubuntu中,卸载命令是
umount [设备名或挂载点]
。例如,要卸载之前挂载到/mnt/data
的设备,可以使用umount /mnt/data
或者umount /dev/sda1
(如果知道设备名)。需要注意的是,在卸载操作时,不能有程序正在访问挂载点目录下的文件,否则卸载操作会失败。
例如图示Linux访问U盘数据
图1,还未挂载
图2,挂载后
挂载通常是将一个存储设备
挂接到一个已经存在的目录
上,访问这个目录
就是访问该存储设备的内容。
对于Linux系统来说,一切皆文件,所有文件都放在以根目录
为起点的树形目录结构中,任何硬件设备也都是文件形式
如图所示,是U盘存储设备和Linux系统自己的文件系统结构,此时Linux想要使用U盘的硬件设备,必须将Linux本身的目录
和硬件设备的文件目录合二为一,此过程就称之为挂载
。
挂载点
挂载操作会隐藏原本Linux目录中的文件,因此选择Linux本身的目录,最好是新建空目录用于挂载
挂载之后,这个目录被称为挂载点。
挂载注意事项
1.一个目录、同一时间只能被一个设备挂载
2.一个设备可以挂载多个目录
3.如果一个目录被多个设备挂载,只能看到最后一个挂载的设备数据,其他的设备数据会被隐藏。
4.工作里建议用新的文件夹,作为挂载点。
mount命令
mount命令可以将指定的文件系统
挂载到指定目录(挂载点)
,在Linux系统下必须先挂载后才能访问设备资料
- 新的硬盘插到机器上,分区、格式化文件系统后,此时可以可以存放数据了
- 此时的硬盘插到linux上,也只是读取出了一个封闭的盒子,无法读写
- 和linux的文件夹进行
关联、挂载
后,即可通过访问被挂载的文件夹
,访问到硬盘的数据
mount选项
参数 | 解释 |
---|---|
-l | 显示系统以挂载的设备信息 |
-a | 加载文件/etc/fstab中设置的所有设备 |
-t | t<文件系统类型> 指定设备的文件系统类型。如果不设置,mount自行选择挂载的文件类型 minix Linux最早使用的文件系统。 ext2 Linux目前的常用文件系统。 msdos MS-DOS 的 FAT。 vfat Win85/98 的 VFAT。 nfs 网络文件系统。 iso9660 CD-ROM光盘的标准文件系统。 ntfs Windows NT的文件系统。 hpfs OS/2文件系统。Windows NT 3.51之前版本的文件系统。 auto 自动检测文件系统。 |
-o | 添加挂载选项,是安全、性能优化重要参数 |
-r | 只读,等于-o ro |
-w | 读写,等-o rw |
mount -o选项详解
参数 | 含义 |
---|---|
async | 以异步方式处理文件系统I/O操作,数据不会同步写入磁盘,而是写到缓冲区,提高系统性能,但损失数据安全性 |
sync | 所有I/O操作同步处理,数据同步写入磁盘,性能较弱,数据安全性高 |
atime/noatime | 文件被访问时是否修改时间戳,不更改时间,可以提高磁盘I/O速度 |
auto/noauto | 通过-a参数可以自动被挂载/不自动挂载 |
defaults | 默认值包括rw、suid、dev、exec、auto、nouser、async,/etc/fstab大多默认值 |
exec/noexec | 是否允许执行二进制程序,取消提供安全性 |
suid/nosuid | 是否允许suid(特殊权限)生效 |
user/nouser | 是否允许普通用户挂载 |
remount | 重新挂载 |
ro | 只读 |
rw | 读写 |
mount挂载案例
只读挂载
[root@lamp-241 ~]# mount -o ro /dev/sdb6 /mnt
[root@lamp-241 ~]#
[root@lamp-241 ~]# ls /mnt
[root@lamp-241 ~]#
[root@lamp-241 ~]# touch /mnt/超哥牛逼.txt
touch: cannot touch ‘/mnt/超哥牛逼.txt’: Read-only file system
[root@lamp-241 ~]#
禁止可执行文件
[root@lamp-241 ~]# mount -o noexec /dev/sdb6 /mnt
[root@lamp-241 ~]#
[root@lamp-241 ~]# cd /mnt
[root@lamp-241 mnt]# echo 'echo "爱的供养"' > music.sh
[root@lamp-241 mnt]#
[root@lamp-241 mnt]# chmod 777 music.sh
[root@lamp-241 mnt]# ll
total 4
-rwxrwxrwx 1 root root 20 Mar 2 17:54 music.sh
[root@lamp-241 mnt]#
[root@lamp-241 mnt]# ./music.sh
-bash: ./music.sh: Permission denied
[root@lamp-241 mnt]#
重新挂载之后,默认是运行执行挂载目录的文件的。
[root@lamp-241 mnt]# cd ~
[root@lamp-241 ~]#
[root@lamp-241 ~]#
[root@lamp-241 ~]# umount /mnt
[root@lamp-241 ~]# mount /dev/sdb6 /mnt
[root@lamp-241 ~]#
[root@lamp-241 ~]# /mnt/music.sh
爱的供养
[root@lamp-241 ~]# mount -l |grep mnt
/dev/sdb6 on /mnt type xfs (rw,relatime,attr2,inode64,noquota)
参数解释
rw 读写
relatime mount 选项 relatime(relative atime 的意思)。relatime 的意思是访问文件时,仅在 atime 早于文件的更改时间时对 atime 进行更新。
attr2 在磁盘上存储内联扩展属性,提升性能
inode64 允许在文件系统的任意位置创建 inode
noquota 强制关闭所有文件系统限额功能
关于umount的坑
你如果在挂载目录里呆着,是无法umount的。
umount用于取消已经挂载的设备
-f 强制卸载
正常卸载
当该设备无人使用时
无进程在使用时
可以正常卸载
[yuchao-linux01 root ~]$umount /my_sdb7/
[yuchao-linux01 root ~]$df -h|grep my_sdb7
[yuchao-linux01 root ~]$
该目录中有人在访问
重新挂载
[yuchao-linux01 root ~]$mount -a
[yuchao-linux01 root ~]$
再开一个终端,模拟有人在访问该目录
此时无法正常卸载
[yuchao-linux01 root ~]$umount /my_sdb7/
umount: /my_sdb7: target is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
[yuchao-linux01 root ~]$
解决办法
1.让那人离开目录
2.干掉操作该目录的进程
使用lsof命令
[yuchao-linux01 root ~]$lsof /my_sdb7/
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 47861 root cwd DIR 8,23 6 64 /my_sdb7
[yuchao-linux01 root ~]$
[yuchao-linux01 root ~]$
[yuchao-linux01 root ~]$ps -ef|grep 47861
root 47861 47859 0 19:31 pts/4 00:00:00 -bash
root 47906 47758 0 19:33 pts/3 00:00:00 grep --color=auto 47861
强制让他滚蛋。。。
[yuchao-linux01 root ~]$ps -ef|grep 47861
root 47861 47859 0 19:31 pts/4 00:00:00 -bash
root 47908 47758 0 19:33 pts/3 00:00:00 grep --color=auto 47861
[yuchao-linux01 root ~]$kill -9 47861
[yuchao-linux01 root ~]$
此时可以正常卸载
[yuchao-linux01 root ~]$df -h |grep my_sdb7
/dev/sdb7 2.0G 33M 2.0G 2% /my_sdb7
[yuchao-linux01 root ~]$
[yuchao-linux01 root ~]$umount /my_sdb7/
[yuchao-linux01 root ~]$
[yuchao-linux01 root ~]$df -h |grep my_sdb7
[yuchao-linux01 root ~]$
开机自动挂载fstab
什么是开机自动挂载?
刚才学的是手动挂载,mount,但是这个操作是临时生效,重启后丢失
如果你重启了服务器,又忘记了去挂载,必然会导致使用该挂载点的程序,全部故障
因此如果你要一直访问这个挂载点,访问该设备,你得设置开机自动挂载
这个功能是/etc/fstab文件
该文件的作用
/etc/fstab配置文件作用是,设置设备开机自动挂载,包括了根目录、以及boot启动分区都是在这里设置的
fstab文件语法
第四列、挂载参数详解
和上面于超老师写的 mount挂载参数一致,它俩一个意思。
第五列、是否备份,了解即可,一般是0
0 不备份
1 每天备份
2 每隔一天备份
第六列、是否检查分区,一般是0
0 不检查
1 先检查该设备
2 排第二检查
自动挂载磁盘分区
[yuchao-linux01 root ~]$blkid /dev/sdb7
/dev/sdb7: UUID="d83e18c9-8b3e-4f38-b25f-6e9818e00b55" TYPE="xfs"
[yuchao-linux01 root ~]$vim /etc/fstab
写入如下挂载信息
让系统重新挂载所有设备
检查当前的挂载情况
[yuchao-linux01 root ~]$df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 8.9G 8.1G 53% /
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 28M 3.8G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/sda1 1014M 142M 873M 14% /boot
/dev/mapper/vg--qiaofu-lv01 50G 575M 50G 2% /qiaofu-data
tmpfs 781M 0 781M 0% /run/user/0
挂载所有设备
[yuchao-linux01 root ~]$mount -a
[yuchao-linux01 root ~]$df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 8.9G 8.1G 53% /
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 28M 3.8G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/sda1 1014M 142M 873M 14% /boot
/dev/mapper/vg--qiaofu-lv01 50G 575M 50G 2% /qiaofu-data
tmpfs 781M 0 781M 0% /run/user/0
/dev/sdb7 2.0G 33M 2.0G 2% /my_sdb7
[yuchao-linux01 root ~]$
重启
重启,查看是否依然会自动挂载
reboot
磁盘管理常用命令
- df
- du
- dd
dd命令
复制文件,且进行数据格式转换。
语法
dd - 转换和复制一个文件
dd if=输入 of=输出 bs=块大小 count=总数
常用
if=file
of=file
bs=size
count=N
命令实践
# 生成一个1G大小的文件
[root@yuchao-tx-server ~]# dd if=/dev/zero of=/opt/1G.txt2 bs=100M count=10
记录了10+0 的读入
记录了10+0 的写出
1048576000字节(1.0 GB)已复制,4.42348 秒,237 MB/秒
查看该文件大小
[root@yuchao-tx-server ~]# ll -h /opt/
总用量 2.0G
-rw-r--r-- 1 root root 1000M 3月 30 23:22 1G.txt
-rw-r--r-- 1 root root 1000M 3月 30 23:23 1G.txt2
drwxr-xr-x 3 root root 4.0K 3月 20 22:19 containerd
linux特殊设备文件
/dev/null
/dev/null代表linux的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称“黑洞”。比较常见的用法是把不需要的输出重定向到这个文件。
ping yuchaoit.cn > /dev/null &
/dev/zero
零”设备,可以无限的提供空字符(0x00,ASCII代码NUL)。常用来生成一个特定大小的文件。
dd if=/dev/zero of=test.log bs=1M count=50
/dev/random和/dev/urandom
dev/random和/dev/urandom是Linux系统中提供的随机伪设备,这两个设备的任务,是提供永不为空的随机字节数据流。很多解密程序与安全应用程序(如SSH Keys,SSL Keys等)需要它们提供的随机数据流。
危险玩法,比如实现类似于shred粉碎文件的作用
[root@yuchao-tx-server ~]# dd bs=1M count=30 if=/dev/urandom of=./t1
也可以销毁硬盘分区数据
dd if=/dev/urandom of=/dev/sda5
移动介质挂载
linux不像windows那样,设备插上,自动可以通过设备名,访问u盘或光盘的数据,得手动挂载后可访问。
光盘挂载
[yuchao-linux-242 root ~]#mount /dev/sr0 /mnt
mount: /dev/sr0 is write-protected, mounting read-only
[yuchao-linux-242 root ~]#
[yuchao-linux-242 root ~]#df -h |grep mnt
/dev/sr0 4.2G 4.2G 0 100% /mnt
[yuchao-linux-242 root ~]#
[yuchao-linux-242 root ~]#ll /mnt
total 678
-rw-rw-r-- 1 root root 14 May 2 2018 CentOS_BuildTag
drwxr-xr-x 3 root root 2048 May 4 2018 EFI
-rw-rw-r-- 1 root root 227 Aug 30 2017 EULA
-rw-rw-r-- 1 root root 18009 Dec 10 2015 GPL
drwxr-xr-x 3 root root 2048 May 4 2018 images
drwxr-xr-x 2 root root 2048 May 4 2018 isolinux
drwxr-xr-x 2 root root 2048 May 4 2018 LiveOS
drwxrwxr-x 2 root root 655360 May 4 2018 Packages
drwxrwxr-x 2 root root 4096 May 4 2018 repodata
-rw-rw-r-- 1 root root 1690 Dec 10 2015 RPM-GPG-KEY-CentOS-7
-rw-rw-r-- 1 root root 1690 Dec 10 2015 RPM-GPG-KEY-CentOS-Testing-7
-r--r--r-- 1 root root 2883 May 4 2018 TRANS.TBL
Eject弹出设备命令
eject # 弹出光驱
eject -r /dev/sr0 # 指定设备弹出
[yuchao-linux-242 root ~]#eject
U盘挂载
安装工具包
[yuchao-linux-242 root ~]#yum install usbutils -y
查看usb设备列表
[yuchao-linux-242 root ~]#lsusb
查看u盘信息
[yuchao-linux-242 root ~]#fdisk -l /dev/sdb
Disk /dev/sdb: 31.5 GB, 31457280000 bytes, 61440000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x3031b379
Device Boot Start End Blocks Id System
/dev/sdb1 * 4096 61439999 30717952 7 HPFS/NTFS/exFAT
[yuchao-linux-242 root ~]#
linux不认识exfat格式,你得重新格式化为linux可识别的文件系统,方可读写数据
比如进行格式化为xfs类型,可以读写数据。
# 注意这个是个危险命令,删除分区,就立即删除了,数据也没了
[yuchao-linux-242 root ~]#parted /dev/sdb
(parted) rm 1
(parted) p
Model: Generic Flash Disk (scsi)
Disk /dev/sdb: 31.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
u盘的分区没了
[yuchao-linux-242 root ~]#ls /dev/sdb*
/dev/sdb
重新格式化文件系统即可,比如格式化为xfs类型
[yuchao-linux-242 root ~]#mkfs.xfs -f /dev/sdb
此时读写数据
[yuchao-linux-242 root ~]#mount /dev/sdb /my_usb/
[yuchao-linux-242 root ~]#
[yuchao-linux-242 root ~]#df -h|grep usb
/dev/sdb 30G 33M 30G 1% /my_usb
[yuchao-linux-242 root ~]#touch /my_usb/超哥带你学linux
[yuchao-linux-242 root ~]#ls /my_usb/
超哥带你学linux
u盘格式化为ntfs类型
windows下可识别的ntfs类型
linux默认不支持格式化utfs,需要额外安装工具
[yuchao-linux-242 root ~]#yum install ntfsprogs -y
使用fdisk命令,给u盘设备分区
[yuchao-linux-242 root ~]#fdisk /dev/sdb
创建ntfs文件系统
[yuchao-linux-242 root ~]#mkfs.ntfs -f /dev/sdb1
Cluster size has been automatically set to 4096 bytes.
Creating NTFS volume structures.
mkntfs completed successfully. Have a nice day.
查看该设备的类型
[yuchao-linux-242 root ~]#blkid /dev/sdb1
/dev/sdb1: UUID="66D7C3B76DD0CF56" TYPE="ntfs" PTTYPE="dos"
linux默认不识别ntfs,你可以拿到windows中试试可否读写该u盘。
也可以安装工具,读写ntfs的u盘
[yuchao-linux-242 root ~]#yum install ntfs-3g -y
[yuchao-linux-242 root ~]#ntfs-3g /dev/sdb1 /my_usb/
[yuchao-linux-242 root ~]#
[yuchao-linux-242 root ~]#df -h |grep usb
/dev/sdb1 30G 66M 30G 1% /my_usb
[yuchao-linux-242 root ~]#lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs c07b71e0-a0a4-41e5-9c12-24646b84c73f /boot
└─sda2 LVM2_member S2y7zo-9SQ9-prrr-ZOtT-NdW8-vVLo-jFwngl
├─centos-root xfs 0a7fed5a-edce-4354-aa17-2aa6781e1b85 /
└─centos-swap swap 706d68e5-0a75-46d2-ab62-cede96863212 [SWAP]
sdb
└─sdb1 ntfs 66D7C3B76DD0CF56 /my_usb
sr0
[yuchao-linux-242 root ~]#
可以正确读写数据
[yuchao-linux-242 root ~]#ls /my_usb/
[yuchao-linux-242 root ~]#touch /my_usb/超哥带你学linux.txt
[yuchao-linux-242 root ~]#ls /my_usb/
超哥带你学linux.txt
[yuchao-linux-242 root ~]#ls /my_usb/ -l
total 0
-rwxrwxrwx 1 root root 0 Mar 31 20:10 超哥带你学linux.txt
[yuchao-linux-242 root ~]#
取消挂载
[yuchao-linux-242 root ~]#umount /my_usb/
经过尝试,windows貌似不识别上述操作,u盘的文件系统有待研究为其他格式。
作业
1.完成于超老师所教磁盘管理的原理+实践。
2.自己给虚拟机添加两块硬盘(20G),都进行分区、格式化、挂载且使用。