Linux 磁盘管理

发布时间:2023年12月28日

一、磁盘基础

1、磁盘的物理结构

  1. ?盘片:硬盘有多个盘片,每盘片有2面(正反两面)
  2. 磁头:每面一个磁头,并不是只有一个磁头,磁头也不会碰到盘面,磁头等于盘片数量

2、磁盘的数据结构

  • 扇区:盘片被分为多个扇形区域,每个扇区存放512字节的数据(扇区越多容量越大) 存放数据的最小单位 512字节
  • 磁道:同一盘片不同半径的同心圆
  • 柱面:不同盘片相同半径构成的圆(柱面和磁道数量相同)

二、MBR与磁盘分区

?1、为什么要分区

  • 优化I/O性能? ?读写
  • 实现磁盘空间配额限制
  • 提高修复速度
  • 隔离系统和程序
  • 安装多个OS
  • 采用不同文件系统

1.分区的优点:

  • 便于管理
  • 优化读写性能

2.分区的缺点:

  • 一旦区分就无法修改大小
  • 只能使用连续的空间
  • 没有备份冗余功能

2、磁盘分区的结构

  • 硬盘中的主分区数目只有4个
  • 主分区和扩展分区的序号限制在1~4,其中1-3是主分区,4是扩展分区。
  • 扩展分区再分为逻辑分区。
  • 逻辑分区的序号将始终从5开始。

3、MBR分区(最多只能分4个区,只能对于小于2T的硬盘分区)

①MBR位于硬盘第一个物理扇区处

②MBR中包含硬盘的主引导程序和硬盘分区表

③分区表有4个分区记录区,每个分区记录区占16个字节

④MBR位于硬盘第一个物理扇区处

⑤MBR中包含硬盘的主引导程序和硬盘分区表

⑥分区表有4个分区记录区,每个分区记录区占16个字节

⑦扩展分区:是特殊的主分区。目的:是为了可分超过4个分区。

不可以直接使用,无论分多少多大,只显示1k,而且需要再次逻辑分区。

4、GPT分区(以分128个分区,对2T以上的硬盘分区)?

使用128位uid

5、文件系统

1.文件系统的组成

  • 内核中的模块:ext4、xfs、vfat
  • Linux虚拟文件系统:VFS
  • 用户空间的管理工具:mkfs.xfs、 mkfs.ext4、mkfs.vfat

2.XFS文件系统

  • 存放文件和目录数据的分区。
  • 高性能的日志型文件系统。
  • CentOS7系统中默认使用的文件系统(可进行数据恢复)。

3.SWAP,交换文件系统

  • SWAP,交互文件系统

4.Linux支持的其他文件系统类型

  • FAT16、FAT32、NTFS
  • EXT4、JFS

常见的硬件设备在/dev目录下

?6、文件系统的修复

fsck.FS_TYPE
fsck -t FS_TYPE

-a 自动修复
-r 交互式修复错误

三、检测磁盘

1、使用badblocks检查坏道

2、badblocks相关参数

格式:

badblocks [选项] 设备

参数说明

-b:指定每个块的大小(以字节为单位),默认为1024字节。
-c:指定每次检测的块数,默认为64个块。
-e:指定要跳过的块数,以块为单位。
-f:强制执行,即使文件系统标记为只读或有错误。
-n:进行非破坏性写入测试。
-o:将结果输出到指定文件中。
-p:指定写入和读取测试的次数。
-s:显示扫描进度的百分比。
-v:显示详细的扫描进度和结果。
-w:进行破坏性写入测试。

四、分区工具

lsblk 列出块设备
fdisk 管理MBR分区
gdisk 管理GPT分区
parted 高级分区操作,可以是交互或非交互方式
partprobe 重新设置内存中的内核分区表版本,适合于除了CentOS 6 以外的其它版本 5,7,8


parted 命令
注意:parted的操作都是实时生效的,小心使用
parted [选项]... [设备 [命令 [参数]...]...]
parted -l ? 列出所有硬盘分区信息

1、fdisk?

  • 查看或着管理磁盘分区(只能2T以下的硬盘)?

格式

格式:fdisk -l [磁盘设备]

选项说明
m打印出菜单
p打印出当前分区表
n新建一个分区
d删除一个分区
t改变分区的属性,系统ID
w保存退出
q不保存退出

2、blkid

  • 可以查看uuid和块设备属性信息

3、lsblk

  • lsblk以树形查看磁盘分区

4、mkfs

创建文件系统(格式化)常用选项

5、gdisk

  • 用于磁盘分区

  • 查看或着管理磁盘分区(只能2T以上的硬盘)?

6、df

查看磁盘的剩余空间和挂载情况

?在Linux系统中建立的分区的缺点:

  • 一旦分区,无法修改大小
  • 只能使用连续的时间
  • 没有备份冗余功能

五、挂载与解挂载

1、挂载规则

  • 一个挂载点同一时间只能挂载一个设备
  • 一个挂载点同一时间挂载了多个设备,只能看到最后一个设备的数据,其它设备上的数据将被隐藏
  • 一个设备可以同时挂载到多个挂载点
  • 通常挂载点一般是已存在空的目录

临时挂载

[root@localhost ~]#mount /dev/sr0 /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ~]#df -h
文件系统 ? ? ? ? ? ? ? ? 容量 ?已用 ?可用 已用% 挂载点
/dev/mapper/centos-root ? 50G ?4.2G ? 46G ? ?9% /
devtmpfs ? ? ? ? ? ? ? ? 1.5G ? ? 0 ?1.5G ? ?0% /dev
tmpfs ? ? ? ? ? ? ? ? ? ?1.5G ? ? 0 ?1.5G ? ?0% /dev/shm
tmpfs ? ? ? ? ? ? ? ? ? ?1.5G ? 12M ?1.5G ? ?1% /run
tmpfs ? ? ? ? ? ? ? ? ? ?1.5G ? ? 0 ?1.5G ? ?0% /sys/fs/cgroup
/dev/sda1 ? ? ? ? ? ? ? ?2.0G ?157M ?1.9G ? ?8% /boot
tmpfs ? ? ? ? ? ? ? ? ? ?296M ?4.0K ?296M ? ?1% /run/user/42
tmpfs ? ? ? ? ? ? ? ? ? ?296M ? 28K ?296M ? ?1% /run/user/0
/dev/sr0 ? ? ? ? ? ? ? ? 4.2G ?4.2G ? ? 0 ?100% /mnt

####重新挂载
root@localhost data]#mount -o ro /dev/sdc1 /mnt/
[root@localhost data]#mount
/dev/sdc1 on /mnt type xfs (ro,relatime,seclabel,attr2,inode64,noquota)

#如果有人在使用 ?挂载文件夹 无法先解挂载再 去挂载
[root@localhost data]#mount -o remount,ro /mnt/

[root@localhost data]#fuser -v /mnt/
? ? ? ? ? ? ? ? ? ? ?用户 ? ? 进程号 权限 ? 命令
/mnt: ? ? ? ? ? ? ? ?root ? ? kernel mount /mnt
? ? ? ? ? ? ? ? ? ? ?root ? ? ?20480 ..c.. bash
[root@localhost data]#fuser -km /mnt/
/mnt: ? ? ? ? ? ? ? ?20480c

2、mount

格式:mount [ -t 类型] 存储设备 挂载点目录

[root@localhost ~]#mount /dev/sr0 /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载

3、umount

卸载已挂载的文件系统

格式:

umount? 存储设备位置

umount? 挂载点目录

4、永久挂载

方法一:在**/etc/fstab**文件中,每一行记录对应一个分区或设备的挂载配置信息,这些信息从左到右包括六个字段使用空格或制表符分隔。

/dev/sdb2 ? /mnt ? xfs ? defaults 0 0

但是这种不稳定,前面的sdb1没了,那sdb2就会成为sdb1.

方法二:需要 将文件写入 /etc/fstab
UUID 可以确保唯一

[root@localhost ~]#blkid?
/dev/sda1: UUID="8ed41bec-1329-4607-9b42-6f7b4b60816c" TYPE="xfs"?
/dev/sda2: UUID="G15aII-0Yle-SYk6-q1mJ-bsHn-HZfu-GeC1Zv" TYPE="LVM2_member"?
/dev/sdb1: UUID="tGm7NP-Ys8i-pm4d-1t0P-Bwdg-g5ua-TkFBN2" 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="d2fd2b9d-612e-4e17-ab97-dc611c730a96" TYPE="xfs"?
/dev/mapper/centos-swap: UUID="492e835a-762f-475b-a66c-ce4a341b1174" TYPE="swap"?
/dev/mapper/zhangsan-cxk: UUID="8f7991cf-2c7c-4239-a74e-e57c6153f392" TYPE="xfs"?
[root@localhost ~]#

[root@localhost opt]# vim /etc/fstab?
在/etc/fstab 文件中,每一行记录对应一个分区或设备的挂载配置信息,这些信息从左到右包括六个字段(使用空格或制表符分隔),各部分的含义如下所述。
/dev/sdb1 ? ?/mnt ? ? ? ? ? ? ? ? ? ? ? xfs ? ? defaults ? ? ? ?0 0

第 1 字段:设备名或设备卷标名。
第 2 字段:文件系统的挂载点目录的位置。
第 3 字段:文件系统类型,如 XFS、Swap 等。
第 4 字段:挂载参数,即mount 命令“-o”选项后可使用的参数。例如,defaults、rw、ro、noexec 分别表示默认参数、可写、只读、禁用执行程序。
第 5 字段:表示文件系统是否需要 dump 备份(dump 是一个备份工具)。一般设为 1时表示需要,设为 0 时将被 dump 忽略
第 6 字段:该数字决定在系统启动时进行磁盘检查的顺序。0 表示不进行检查,1 表示优先检查,2 表示其次检查。根分区应设为 1,其他分区设为 2。
通过在/etc/fstab 文件中添加相应的挂载配置,可以实现开机后自动挂载指定的分区。例如,执行以下操作将添加自动挂载分区/dev/sdb1的配置记录。

# /etc/fstab
# Created by anaconda on Fri Aug ?6 20:57:12 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / ? ? ? ? ? ? ? ? ? ? ? xfs ? ? defaults ? ? ? ?0 0
UUID=e9364e9b-a85b-49d7-9652-3a56202e14c8 /boot ? ? ? ? ? ? ? ? ? xfs ? ? defaults ? ? ? ?0 0
/dev/mapper/centos-swap swap ? ? ? ? ? ? ? ? ? ?swap ? ?defaults ? ? ? ?0 0
UUID=2a1e1ac7-7462-4fc3-b644-43813660276f /sdb1 ? ? ?xfs ? ? ? ?defaults ? 0 0
~

:wq

[root@localhost ~]#mount -a? ?刷新,为了查看有没有报错
uuid写错了 可以直接等待进入系统后,出现ctrl+D 报错, 输入root密码,后修改 ?/etc/fstab.

文章来源:https://blog.csdn.net/AH99999/article/details/135248724
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。