文章目录
Linux:访问文件系统
一、存储设备:硬盘
1.1、硬盘的结构
1.1.1、物理结构
-
盘片:硬盘有多个盘片,每盘片2面
-
磁头:每面一个磁头
-
磁头:磁头主要是通过电和磁转换,在盘面上读写信息的。
1.1.2、数据结构
-
扇面:磁盘上每一个磁道被划分成若干个弧段,每一个弧段就是一个扇区
-
扇区:盘片被分为多个扇形区域,每个扇区存放512字节的数据,硬盘的最小存储单位
-
磁道:当磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道。
-
块:文件存取的最小单位,一个块通常由 8 个连续的扇区组成,大小为 4K(即4096字节)。
-
柱面:磁盘的多个盘面中相同磁道可以构成一个圆柱,这个就是磁盘的柱面,磁盘的柱面数量等于磁道数量。
硬盘存储容量=磁头数x磁道(柱面)数x每道扇区数x每扇区字节数(512字节)
可以用柱面/磁头/扇区来唯一定位磁盘上每一个区域
在linux系统中称为块,在windows系统中称为簇
1.2、磁盘接口类型
- IDE:并口数据线连接主板与硬盘,抗干扰性太差,且排线占用空间较大,不利电脑内部散热,已逐渐被 SATA 所取代。
- SATA:抗干扰性强,支持热插拔等功能,速度快,纠错能力强。
- SCSI:小型机系统接口,SCSI硬盘广为工作站级个人电脑以及服务器所使用,资料传输时CPU占用率较低,转速快,支持热插拔等。
- SAS:是新一代的SCSI技术,和SATA硬盘相同,都是采取序列式技术以获得更高的传输速度,可达到 6Gb/s。
设备类型 | 设备名称 |
---|---|
SATA/SAS/USB/SCSI接口设备 | /dev/sda /dev/sdb … |
virtio-blk接口设备超虚拟化存储(部分虚拟机) | /dev/vda、/dev/vdb … |
NVMe附加存储(很多SSD) | /dev/nvme0 /dev/nvme1… |
SD/MMC/eMMC存储(SD卡) | /dev/mmcblk0 /dev/mmcblk1 … |
二、分区格式
2.1、MBR
我们将包含MBR引导代码的扇区称为主引导扇区。因这一扇区中,引导代码占有绝大部分的空间。由于这一扇区承担特殊管理职能,它不属于磁盘上任何分区,因而分区空间内的格式化命令不能清除主引导记录的任何信息。
主引导记录(MBR:MasterBoot Record)组成部分:主引导程序、硬盘分区表、结束标志,位于第一个硬盘的第一个扇区处。
-
主引导程序:加载操作系统的内核。位于MBR扇区的前446字节
-
硬盘分区表:记录硬件分区信息。由4个分区记录区组成,每个分区记录区占16字节,位于MBR扇区的第447~510字节
-
结束标志(占2个字节),其值为AA55,存储时低位在前,高位在后,即看上去是55AA(十六进制)。
2.2GPT分区
由于物理磁盘变得越来越大,基于SAN的卷甚至更大,因此针对MBR分区方案的2TB磁盘和分区大小限制已不再是理论限制,而是系统管理员在生产环境中越来越频繁遇到的实际问题,新的GUID分区表(GPT)取代传统的MBR方案用于磁盘分区。
GPT是运行统一可扩展固件接口(UEFI)固件系统上硬盘分区表的标准。GPT分区方案最多可提供128个分区。GPT为逻辑块地址分配64位可支持最多8 泽字节(ZB),即80亿太字节的分区和磁盘。
除解决MBR分区方案的限制以外,GPT使用全局唯一标识符 (GUID)来识别每个磁盘和分区。GPT提供分区表信息的冗余。主GPT位于磁盘头部,而备份副本(次要GPT)位于磁盘尾部。GPT使用校验和检测GPT头和分区表中的错误与损坏。
三、磁盘分区
系统管理员将硬盘驱动器划分为多个逻辑存储单元, 这些单元称为分区。
磁盘分区优点:
-
限制应用或用户的可用空间。
-
将操作系统和程序文件与用户文件分隔开。
-
用于创建交换分区。
-
限制磁盘空间使用,以提高诊断工具和备份镜像的性能。
Linux支持的文件格式:XFS、Ext4、Ext3、NTFS、FAT32、LVM······
在linux中 硬盘分区均为文件,前两个字节代表设备类型,第三个代表硬盘序号示,后面数字代表分区号
$
设备类型按照设备接口进行确定
硬盘序号是以字母 a b c … 顺序依次表示
分区序号是以数字 1 2 3 … 顺序依次表示。(主分区号 1~4 ,逻辑分区始终是从 5 开始)
$
3.1、XFS
XFS特别擅长处理大文件,同时提供大型的数据传输。
存放文件和目录数据的分区
3.2、Ext4
Ext4的文件系统容量达到1EB,而文件容量达到了16TB.而且EXT4理论上支持无限数量的子目录。
Ext4给日志数据添加了校验功能,日志校验功能可以很方便地判断日志数据是否损坏。
3.3、SWAP分区
swap(交换空间)是受Linux内核内存子系统控制的磁盘区域。内核将内存中不活动的内存页保存到交换空间,来补充系统RAM。物理RAM与交换空间组合在一起称为虚拟内存。
由于交换区位于磁盘上,所以与RAM相比,交换会比较慢。 虽然是用于增加系统RAM,但对于RAM不足以满足工作负载需求的问题,不应将交换空间视为可持续性的解决方案。
-
total :物理内存的实际总量
-
used :使用的内存 (total - free - buffers - cache)
-
free :未被分配的内存(真正的空闲,未被任何程序占用)
-
shared:多个进程共享的内存总额
-
cached:从磁盘读取的数据,待以后使用。
-
buffers:被更改但未写回磁盘的数据。
-
swap:交换分区总量,使用量,剩余量
四、常用命令
4.1、分区命令
- fdisk
fdisk -l [dev] ##查看磁盘分区
fdisk [dev] ##管理磁盘分区
- lsblk
lsblk [dev] ##以树状查看磁盘分区
- blkid
blkid [dev] ##查看分区uid号
- mkfs
mkfs [选项] [dev] ##格式化分区
mkfs.[文件类型] [dev] ##格式化分区
- df
df -k [dev] ##以KB为单位显示 Linux 系统中各文件系统的硬盘使用情况
df -m [dev] ##以MB为单位显示 Linux 系统中各文件系统的硬盘使用情况
df -h [dev] ##使用人们习惯的 KB、MB 或 GB 等单位自行显示容量
- mount
mount 存储设备 挂载点目录 ##挂载文件系统
mount [-t] 存储设备 挂载点目录 ##以文件类型挂载文件系统
4.2、管理磁盘分区
m:获取帮助菜单
n:新建分区
p:查看分区情况
d:删除分区
t:变更分区的类型
w:保存分区操作并退出
q:不保存分区操作并退出
4.3、设置文件系统的自动挂载
Linux 操作系统在每次开机时,会自动读取/etc/fstab文件的内容,自动挂载所指定的文件系统。
vim /etc/fstab
/dev/sdb1 /opt xfs defaults 0 0
/dev/sr0 /mnt iso9660 defaults 0 0
- 第1字段:设备名或设备卷标名。
- 第2字段:文件系统的挂载点目录的位置。
- 第3字段:文件系统类型,如 xfs、swap 等。
- 第4字段:挂载参数。例如,defaults(默认参数)、rw(可读写)、ro(只读)、noexec(禁用执行程序)。
- 第5字段:表示文件系统是否需要 dump 备份。一般设为1时表示需要,设为0时将被dump忽略。
- 第6字段:该数字决定在系统启动时进行磁盘检查的顺序。0表示不进行检查,1表示优先检查,2表示其次检查。根分区可设为1,其他分区设为2。
五、实验案例
5.1、创建主分区
-
向您的系统添加一个xfs格式、5G大小的主分区。
-
分区应在系统启动时自动挂载到/mnt/home。
-
不要删除或以任何方式改动系统上的任何现有交换分区。
5.1.1、实验步骤
-
新建分区
-
格式化分区
-
挂载分区
5.1.2、实验命令
[root@host-1 ~]# fdisk /dev/sdb ##新建分区
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):n #新建
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+5G ##分区大小
分区 1 已设置为 Linux 类型,大小设为 5 GiB
命令(输入 m 获取帮助):
命令(输入 m 获取帮助):t ##分区类型
已选择分区 1
Hex 代码(输入 L 列出所有代码):L ##列出所有分区类型
0 空 24 NEC DOS 81 Minix / 旧 Linu bf Solaris
1 FAT12 27 隐藏的 NTFS Win 82 Linux 交换 / So c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 84 OS/2 隐藏的 C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 85 Linux 扩展 c7 Syrinx
5 扩展 41 PPC PReP Boot 86 NTFS 卷集 da 非文件系统数据
6 FAT16 42 SFS 87 NTFS 卷集 db CP/M / CTOS / .
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux 纯文本 de Dell 工具
8 AIX 4e QNX4.x 第2部分 8e Linux LVM df BootIt
9 AIX 可启动 4f QNX4.x 第3部分 93 Amoeba e1 DOS 访问
a OS/2 启动管理器 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad 休 eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT
f W95 扩展 (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC
11 隐藏的 FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor
12 Compaq 诊断 5c Priam Edisk a9 NetBSD f4 SpeedStor
14 隐藏的 FAT16 <3 61 SpeedStor ab Darwin 启动 f2 DOS 次要
16 隐藏的 FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS
17 隐藏的 HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST 智能睡眠 65 Novell Netware b8 BSDI swap fd Linux raid 自动
1b 隐藏的 W95 FAT3 70 DiskSecure 多启 bb Boot Wizard 隐 fe LANstep
1c 隐藏的 W95 FAT3 75 PC/IX be Solaris 启动 ff BBT
1e 隐藏的 W95 FAT1 80 旧 Minix
Hex 代码(输入 L 列出所有代码):83 ##主分区代码
已将分区“Linux”的类型更改为“Linux”
命令(输入 m 获取帮助):
命令(输入 m 获取帮助):w ##保存退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@host-1 ~]# mkfs.xfs -f /dev/sdb1 ##以xfs格式格式化/dev/sdb1分区
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=327680 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=1310720, 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@host-1 ~]# mkdir /mnt/home ##创建挂载点
[root@host-1 ~]# mount /dev/sdb1 /mnt/home/ ##临时挂载/dev/sdb1分区到/mnt/home/
[root@host-1 ~]# df /dev/sdb1 ##验证
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sdb1 5232640 32992 5199648 1% /mnt/home
[root@host-1 ~]# blkid /dev/sdb1 ##查看/dev/sdb1分区uuid
/dev/sdb1: UUID="5d35a8df-e67c-4112-85f0-e3e798ceff5f" TYPE="xfs"
[root@host-1 ~]# vim /etc/fstab ##编辑/etc/fstab文件
[root@host-1 ~]#reboot ##重启
[root@host-1 ~]# df /dev/sdb1 ##验证
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sdb1 5232640 32992 5199648 1% /mnt/home
UUID=5d35a8df-e67c-4112-85f0-e3e798ceff5f /mnt/home xfs defaults 0 0
5.2、创建swap分区
-
向您的系统添加一个swap主分区2G。
-
交换分区应在系统启动时自动挂载。
-
不要删除或以任何方式改动系统上的任何现有交换分区。
5.2.1、实验步骤
-
新建分区
-
格式化分区
-
挂载分区
vim /etc/fstab
5.2.2、实验命令
[root@host-1 ~]# fdisk /dev/sdc ##新建分区
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x497e2eba 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n #新建
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+2G ##分区大小
分区 1 已设置为 Linux 类型,大小设为 2 GiB
命令(输入 m 获取帮助):t ##分区类型
已选择分区 1
Hex 代码(输入 L 列出所有代码):L ##列出所有分区类型
0 空 24 NEC DOS 81 Minix / 旧 Linu bf Solaris
1 FAT12 27 隐藏的 NTFS Win 82 Linux 交换 / So c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 84 OS/2 隐藏的 C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 85 Linux 扩展 c7 Syrinx
5 扩展 41 PPC PReP Boot 86 NTFS 卷集 da 非文件系统数据
6 FAT16 42 SFS 87 NTFS 卷集 db CP/M / CTOS / .
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux 纯文本 de Dell 工具
8 AIX 4e QNX4.x 第2部分 8e Linux LVM df BootIt
9 AIX 可启动 4f QNX4.x 第3部分 93 Amoeba e1 DOS 访问
a OS/2 启动管理器 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad 休 eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT
f W95 扩展 (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC
11 隐藏的 FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor
12 Compaq 诊断 5c Priam Edisk a9 NetBSD f4 SpeedStor
14 隐藏的 FAT16 <3 61 SpeedStor ab Darwin 启动 f2 DOS 次要
16 隐藏的 FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS
17 隐藏的 HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST 智能睡眠 65 Novell Netware b8 BSDI swap fd Linux raid 自动
1b 隐藏的 W95 FAT3 70 DiskSecure 多启 bb Boot Wizard 隐 fe LANstep
1c 隐藏的 W95 FAT3 75 PC/IX be Solaris 启动 ff BBT
1e 隐藏的 W95 FAT1 80 旧 Minix
Hex 代码(输入 L 列出所有代码):82 ##swap分区代码
已将分区“Linux”的类型更改为“Linux swap / Solaris”
命令(输入 m 获取帮助):w ##保存退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@host-1 ~]# mkswap /dev/sdc2 ##以式化/dev/sdc1分区
正在设置交换空间版本 1,大小 = 2097148 KiB
无标签,UUID=61e24b09-8e96-4c41-b19b-a40d46c5816f
[root@host-1 ~]# vim /etc/fstab ##编辑/etc/fstab文件
[root@host-1 ~]# swap-a # 激活新分区
[root@host-1 ~]# swap-s # 查看系统中交换分区清单
文件名 类型 大小 已用 权限
/dev/sdc1 partition 2097148 0 -2
/dev/dm-1 partition 4194300 0 -3
UUID=61e24b09-8e96-4c41-b19b-a40d46c5816f swap swap defaults 0 0
UUID=61e24b09-8e96-4c41-b19b-a40d46c5816f swap swap defaults 0 0
此文仅为个人理解,请各位点评