Linux从入门到入土 系列文章目录
第一章 Linux简介:Linux发行版、内核版本号的形式和含义、Linux常见目录
第二章 Linux虚拟机配置: CentOS7/openEuler NAT网络配置 关闭SELinux 关闭防火墙 设置静态IP
第三章 Linux软件包管理工具:CentOS/openEuler的rpm、yum;Debian/Ubuntu的dpkg、apt
第四章 Linux符号链接(软链接)、硬链接的创建方式、特性和常见用途
第五章 Linux运行级别 进入不同控制台的快捷键 VI/VIM极速入门
第六章 Linux磁盘管理 硬盘&分区命名规则 Linux目录结构介绍 /etc/fstab详解 新硬盘挂载流程
第七章 Linux(CentOS)中共享文件的方法:U盘/移动硬盘、VMware Tools、FTP、Samba、http.server
目录
BIOS分类
Legacy BIOS 和 UEFI BIOS 是两种不同的计算机基本输入输出系统(Basic Input Output System
)。
Legacy BIOS
简介
Legacy BIOS,即传统 BIOS,是早期计算机系统中广泛使用的基本输入输出系统。它在计算机启动过程中起着关键作用,负责初始化硬件、检测设备、加载操作系统等一系列操作。
特点
硬件兼容性:主要支持传统的硬件设备和接口,如并行口、串行口、PS/2 接口等。对于现代新型硬件设备的支持可能存在局限性。
启动过程:启动过程相对复杂,首先进行加电自检(POST),然后按照预设的顺序查找启动设备,如软盘、硬盘、光盘等。在查找过程中,需要读取启动设备的第一个扇区,即 MBR(Master Boot Record),以获取启动信息。
有限的功能扩展性:功能相对较为固定,扩展能力有限。如果需要添加新的功能或支持新的硬件,通常需要更新 BIOS 芯片的固件,操作相对麻烦且有一定风险。
用户界面:通常具有简单的文本界面,用于设置系统参数、启动选项等。界面交互性较差,操作不够直观方便。
UEFI BIOS
简介
UEFI(Unified Extensible Firmware Interface)BIOS 是一种新型的固件接口标准,旨在取代传统的 BIOS。它提供了更强大、灵活和安全的启动和系统管理功能。
特点
硬件支持:能够更好地支持新型硬件设备,如 USB 3.0、SATA III 等高速接口,以及固态硬盘(SSD)等存储设备,充分发挥这些设备的性能优势。
启动方式:采用了全新的启动方式,支持 GPT(GUID Partition Table)分区格式。GPT 分区表突破了 MBR 分区表的一些限制,如支持更大的硬盘容量、更多的分区等。UEFI BIOS 可以直接从 GPT 分区的硬盘中启动操作系统,启动速度更快。
可扩展性:具有良好的可扩展性,通过驱动程序模型支持各种硬件设备和功能扩展。可以方便地添加新的驱动程序,以支持新的硬件或实现新的功能。
图形化界面:通常提供了直观的图形化界面,用户可以通过鼠标操作进行各种设置和管理。界面美观,操作便捷,降低了用户的使用门槛。
安全性:支持安全启动Secure Boot功能,能够防止未经授权的操作系统或恶意软件在启动过程中加载,提高了系统的安全性。
硬盘分类
按接口(硬盘上)划分
- SATA
- M.2
- mSATA
- SCSI
- SAS
- FC光通道
按传输协议划分
- PATA
- SATA
- AHCI
- NVMe
按总线(主板上)划分
- PATA
- SATA
- PCI-E
- SCSI
- SAS
- FC光通道
常见硬盘接口
SATA(Serial ATA)
一种完全不同于并行ATA的硬盘接口类型,由于采用串行方式传输数据而得名。SATA总线使用嵌入式时钟信号,具备了比PATA更强的纠错能力,还能对传输指令(不仅仅是数据)进行检查,如果发现错误会自动矫正,这在很大程度上提高了数据传输的可靠性。串行接口还具有结构简单、支持热插拔的优点。
由于 SATA/USB/SAS 等磁盘接口都是使用 SCSI 模块来驱动的, 因此这些接口的磁盘装置文件名都是/dev/sd[a-p]
的格式
M.2
计算机内部扩展卡及相关连接器的外观尺寸与针脚的电气接口规范。采用了全新的物理布局和连接器,以取代PCI Express(PCIE)及mSATA接口标准。M.2具有灵活的物理规范,允许更多种类的模块宽度与长度,并与更高级的接口相配,使M.2比mSATA更适合日常应用,尤其是用于超级本或平板电脑等设备的固态硬盘。
总线分拆M.2连接器为PCI Express 3.0、Serial ATA (SATA) 3.0或USB 3.0(对USB 2.0向下兼容)。也因如此,M.2模块可以集结多种功能,包括Wi-Fi、蓝牙、卫星导航、近场通信(NFC)、数字广播、无线千兆联盟(WiGig)、无线广域网(WWAN)和固态硬盘(SSD)。2013年8月SATA 3.2的版本规范中,正式将M.2设为新的存储设备格式,并对其硬件格式作出定义。
硬盘命名
在Linux系统中,一切皆文件,设备也不例外,并且几乎所有的硬件设备文件都在/dev这个目录内。
设备 | 设备在Linux内的文件名 |
---|---|
IDE硬盘 | /dev/hd[a-d] |
SCSI/SATA/USB硬盘 | /dev/sd[a-p] |
M.2硬盘 | /dev/nvme0n1或/dev/sdX |
U盘 | /dev/sd[a-p](同上) |
当前CD ROM/DVD ROM | /dev/cdrom |
IDE、SATA和M.2接口是计算机较为常见的磁盘接口。
IDE接口
老式主机使用IDE接口,我们称IDE设备,不管是磁盘还是光盘设备。以IDE接口来说,由于一个IDE扁平电缆可以连接两个IDE设备,通常主机又都会提供两个IDE接口,因此最多可以接到四个IDE设备。这两个IDE接口通常被称为IDE1(primary)和IDE2(secondary),而每条扁平电缆上面的设备又区分为Master(主设备)与Slave(从设备)。
IDE | Master | Slave |
---|---|---|
IDE1(Primary) | /dev/hda | /dev/hdb |
IDE2(Secondary) | /dev/hdc | /dev/hdd |
SATA接口
由于SATA/USB/SCSI等磁盘接口都是使用SCSI模块来驱动的,因此这些接口的磁盘设备文件名都是/dev/sd[a-p]
的格式。它是根据Linux内核检测到磁盘的顺序来命名的。
如果你的PC上有两个SATA磁盘以及一个USB磁盘,而主板上有六个SATA插槽。这两个SATA磁盘分别安插在主板上的SATA1,SATA5插槽上,请问这三个磁盘在Linux中的设备文件名是什么?由于是使用检测到的顺序来决定设备文件名,并非与实际插槽代号有关,因此设备的文件名如下:
- SATA1插槽上的文件名:/dev/sda;
- SATA2插槽上的文件名:/dev/sdb;
- USB磁盘(开机完成后才被系统识别):/dev/sdc。
M.2接口
对M.2接口的硬盘来说,它们通常会被识别为类似于/dev/nvme0n1
或/dev/sd[a-p]
的设备名称,取决于使用的协议。
- 如果 M.2 硬盘是以 NVMe(Non - Volatile Memory Express)协议连接到系统的,那么它通常会被命名为
/dev/nvme0n1
、/dev/nvme1n1
等形式。其中,nvme表示 NVMe 设备,0、1等数字是设备的编号,n1表示该设备上的第一个命名空间(namespace)。例如,/dev/nvme0n1p1
可能表示/dev/nvme0n1
设备上的第一个分区。 - 当 M.2 硬盘通过 SATA 协议连接时,它会被识别为传统的 SCSI 磁盘设备,名称可能是
/dev/sda
、/dev/sdb
等。这种情况下,M.2 硬盘在系统眼中就像普通的 SATA 硬盘一样,分区名称则会是/dev/sda1
、/dev/sda2
等。
分区命名
早期磁盘第一个扇区里面含有的重要信息,我们称为 MBR (Master Boot Record) 格式,但是由于近年来磁盘的容量不断扩大,造成读写上的一些困扰, 甚至有些大于 2TB 以上的磁盘分区已经让某些操作系统无法存取。因此后来又多了一个新的磁盘分区格式,称为 GPT (GUID partition table)。
基于 NVMe 设备的分区命名
若硬盘是通过 **NVMe(Non - Volatile Memory Express)**接口连接的,其设备名一般以/dev/nvme
开头。
设备标识:/dev/nvme后面会跟着一个数字来标识不同的 NVMe 控制器,例如0、1等。
命名空间:接着是n和一个数字代表命名空间,通常为n1。
分区编号:最后是p和分区编号。例如,第一块 NVMe 硬盘的第一个分区命名为/dev/nvme0n1p1
,第二个分区则是/dev/nvme0n1p2
。
基于 SCSI、SATA、USB 等设备的分区命名
对于通过 SCSI、SATA、USB 等接口连接的硬盘,设备名通常以/dev/sd
开头。
设备标识:/dev/sd
后会有一个字母来标识不同的硬盘,从a开始,如/dev/sda
、/dev/sdb
等。
分区编号:直接跟上分区编号,例如/dev/sda1表示/dev/sda硬盘的第一个分区,/dev/sda2
代表第二个分区。
只用MBR,则一块硬盘最多只能有四个分区/dev/sda[1-4]
,其余的是扩展分区 /dev/sda[6->n]
。
主分区Primary
对于传统的 MBR 分区表,硬盘的前 4 个分区可以是主分区或扩展分区。主分区的命名通常从/dev/sdX1
到/dev/sdX4
,其中X是硬盘的标识符,如a、b、c等,表示不同的硬盘设备。例如,/dev/sda1
、/dev/sda2
、/dev/sda3
和/dev/sda4
可以分别是/dev/sda
硬盘上的 4 个主分区。
扩展分区Extension
扩展分区是一种特殊的分区类型,它本身不能直接使用,而是用于在其中创建逻辑分区。扩展分区在 MBR 中也占用一个分区编号,通常是主分区之后的第一个分区。
逻辑分区Logical
逻辑分区是在扩展分区内创建的分区,其命名是从/dev/sdX5
开始往后依次编号。例如,在硬盘/dev/sda
中创建的第一个逻辑分区是/dev/sda5
,第二个逻辑分区是/dev/sda6
,以此类推。
(hint: 逻辑分区编号从5开始)
文件系统类型
Windows
- FAT32
- NTFS
- …
Linux
存在几十个文件系统类型:
- ext2
- ext3
- ext4
- xfs
- brtfs
- zfs
- …
(man fsname
可以取得fsname文件系统的介绍)
Linux目录结构
介绍
Linux的整个目录结构最重要的就是根目录(root directory),这个根目录的表示方法为一条斜线/
,所有的文件都是由根目录衍生出来的。
我们知道文件其实是放在磁盘分区中的,现在的问题是:如何结合目录树的架构与磁盘内的数据呢?这就牵涉到挂载mount的问题。所谓“挂载”就是利用一个目录作为进入点EntryPoint,将磁盘分区的数据绑定到该目录下。
树状图
硬盘分区模式
由于整个Linux系统最重要的是根目录,因此根目录一定需要挂载到某个分区(如CentOS7是/dev/mapper/centos-root
),至于其他的目录可依照用户自己的需求来给予挂载到不同的分区。
- 安装一个Linux至少需要两个分区,就是仅分出根目录
/
与内存交换空间/swap
即可。(也有观点说:只使用一个分区安装Linux也是可能的,如果电脑的物理内存足够大,交换分区并不是必须的) - 比较完整的分区方法,可分出:
/
,/usr
,/home
,/var
,/swap
等。
/etc/fstab
简介
fstab是FileSystem Table的缩写,即文件系统表。
磁盘被手动挂载之后都必须把挂载信息写入/etc/fstab
这个文件中,否则下次开机启动时仍然需要重新挂载。
系统开机时会主动读取/etc/fstab
这个文件中的内容,根据文件里面的配置自动挂载磁盘。这样我们只需要将磁盘的挂载信息写入这个文件中我们就不需要每次开机启动之后手动进行挂载了。
挂载的限制
- 根目录是必须挂载的,而且一定要先于其他mount point被挂载。因为其他目录都是由根目录/衍生出来的。
- 挂载点必须是已经存在的目录。
- 挂载点可以任意指定,但必须遵守必要的系统目录架构原则
- 所有挂载点在同一时间只能被挂载一次
- 所有分区在同一时间只能挂载一次
- 若进行卸载,必须将工作目录退出挂载点(及其子目录)之外
注:所谓的工作目录也就是当前目录,打印当前目录的命令pwd的全称Print Work Directory,翻译过来就是“打印工作目录”
fstab文件内容
共六列:
Device MountPoint FileSystem parameters dump fsck
-
Device: 磁盘设备文件或者该设备的Label或者UUID
使用dumpe2fs -h /dev/sda1
或blkid /dev/sda1
可以通过查看/dev/sda1分区的superblock中的信息找到UUID和Label name。
使用设备名称(/dev/sda)来挂载分区时可能会出现名称不对应的问题。因为这个名称是会改变的。
不过使用Label挂载就不用担心这方面的问题。不过要随时注意Label name。Label name如
/boot
UUID为小写字母、数字、连字符组成的唯一字符串 -
MountPoint: 设备的挂载点,就是你要挂载到哪个目录下
-
FileSystem: 磁盘文件系统的格式,包括ext2、ext3、reiserfs、nfs、vfat等
-
parameters 文件系统的参数
参数名 解释 async/sync 设置是否为同步方式运行,默认为async auto/noauto 当下载mount -a 的命令时,此文件系统是否被主动挂载。默认为auto rw/ro 是否以以只读或者读写模式挂载 exec/noexec 限制此文件系统内是否能够进行”执行”的操作 user/nouser 是否允许用户使用mount命令挂载 suid/nosuid 是否允许SUID的存在 usrquota 启动文件系统支持磁盘配额模式 grpquota 启动文件系统对群组磁盘配额模式的支持 defaults 具有rw,suid,dev,exec,auto,nouser,async等默认参数的设置 -
dump
标识能否被dump备份命令作用。
dump是一个用来作为备份的命令。通常这个参数的值为0或者1。值 含义 0 代表不要做dump备份 1 代表要每天进行dump的操作 2 代表不定日期的进行dump操作 -
fsck
是否检验扇区,一般只有根分区为1,其他均为0
开机的过程中,系统默认会以fsck检验我们系统是否为完整(clean)。值 含义 0 不要检验 1 最早检验(一般根目录会选择) 2 1级别检验完成之后进行检验
条目示例
- 根目录
/dev/mapper/centos-root / xfs defaults 0 0
- 使用VMware新建的硬盘分区/dev/sdb1
/dev/sdb1 /mnt/usr/ ext4 defaults,usrquota 0 0
注意⚠️:修改fstab文件后必须仔细检查,除了一行中不同项之间的空格和注释外,不能有任何多余的字符,否则下次将无法开机!!!
新磁盘挂载流程
- 接入磁盘
fdisk -l
查看磁盘/dev/sdb
(假设原本只有sda)是否加载成功fdisk /dev/sdb
管理sdb磁盘- 输入m(manual)查看帮助,输入n(new)创建新分区,根据提示输入选项,p(print)查看设置情况,最后w(write)将内存中保存的分区信息写入硬盘
fdisk -l
再次检查分区情况,查看新建的分区/dev/sdb1是否被写入分区表- 使用
mkfs -t ext4 /dev/sdb1
在分区/dev/sdb1上创建ext4文件系统 - 使用
parted -l
检查ext4文件系统 - 使用
mount /dev/sdb1 /path/to/mountpoint
将sdb1挂载到/path/to/mountpoint
- 使用
df -h
查看挂载情况 - 修改
/etc/fstab
文件,使挂载永久生效 mount -a
让fstab文件的修改立即生效,而不用重启- 重启,立即使用
df -h
命令检查,应当发现/dev/sdb1已经自动挂载