Linux文件系统磁盘管理

前言

磁盘和文件系统的管理是运维人员必掌握的内容,此文对磁盘管理和文件系统做了一些了解。

一、磁盘基础

1、磁盘的物理结构

  • 盘片:硬盘有多个盘片,每盘片2面
  • 磁头:每面一个磁头

2、磁盘的数据结构

  • 扇区:盘片被分为多个扇形区域,每个扇区存放512字节的数据,硬盘的最小存储单位。
  • 磁道:同一盘片不同半径的同心圆。
  • 柱面:不同盘片相同半径构成的圆柱面,由同一半径圆的多个磁道组成。

3、硬盘的数据结构

  • 扇区:盘片被分为多个扇形区域,每个扇区存放512字节的数据,硬盘的最小存储单位。
  • 磁道:同一盘片不同半径的同心圆。
  • 柱面:不同盘片相同半径构成的圆柱面,由同一半径圆的多个磁道组成。

二、MBR与磁盘分区

1、为什么分区

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

2、磁盘分区的结构

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

3、文件系统

  • 文件系统的组成
    • 内核中的模块:ext4、xfs、vfat
    • Linux虚拟文件系统:VFS
    • 用户空间的管理工具:mkfs.xfs、 mkfs.ext4、mkfs.vfat
  • XFS文件系统
    • 存放文件和目录数据的分区。
    • 高性能的日志型文件系统。
    • CentOS7系统中默认使用的文件系统(可进行数据恢复)。
  • SWAP,交换文件系统
    • SWAP,交换文件系统
  • linux支持的其它文件系统类型
    • FAT16、FAT32、NTFS
    • EXT4、JFS

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

[root@localhost ~]#ll /dev/sd*
brw-rw---- 1 root disk 8,  0 11月 25 14:10 /dev/sda
brw-rw---- 1 root disk 8,  1 11月 25 14:10 /dev/sda1
brw-rw---- 1 root disk 8,  2 11月 25 14:10 /dev/sda2
brw-rw---- 1 root disk 8, 16 11月 25 14:10 /dev/sdb

三、检测磁盘

1、使用badblocks检查坏道

[root@localhost ~]# fdisk -l   #查看磁盘的分区信息

磁盘 /dev/sda:64.4 GB, 64424509440 字节,125829120 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0009d5e8

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     4196351     2097152   83  Linux
/dev/sda2         4196352   119556095    57679872   8e  Linux LVM

磁盘 /dev/mapper/centos-root:53.7 GB, 53687091200 字节,104857600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

磁盘 /dev/mapper/centos-swap:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

2、badblocks相关参数

语法格式

badblocks  [选项]  设备

参数说明

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

例如:
在这里插入图片描述

四、分区工具并且确认新硬盘

1、fdisk——命令

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

或者 fdisk 查看硬盘的整体情况和分区情况

[root@localhost ~]#fdisk -l /dev/sda

磁盘 /dev/sda:64.4 GB, 64424509440 字节,125829120 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0009d5e8

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     4196351     2097152   83  Linux
/dev/sda2         4196352   119556095    57679872   8e  Linux LVM

Device:分区的设备文件名称。
Boot:是否是引导分区。若是,则有""标识。
Start:该分区在硬盘中的起始位置(柱面数)
End:该分区在硬盘中的结束位置(柱面数)。
Blocks:分区的大小,以Blocks(块)为单位,默认的块大小为1024字节
Id:分区对应的系统ID号。83表示Linux中的XFS 分区或EXT4分区、8e表示LVM逻辑卷。LVM是Linux操作系统中对磁盘分区进行管理的一种逻辑机制。
System:分区类型。识别到新的硬盘设备后,就可以在该硬盘中建立新的分区了。在Linux
操作系统中,分区和格式化的过程是相对独立的。

交互模式中的常用指令

Command (m for help) : m                    #输入m指令
  
    d                     #删除一个分区
    l                     #显示己知的分区类型,其中82为Linux swap分区,83为Linux分区
    m                     #最示帮助菜单I
    n                     #增加一个新的分区
    p                     #显示磁盘当前的分区表
    q                     #退出fdisk程序,不保存任何修改
    s                     #创建一个新的空白的sun磁盘标签
    t                     #改变一个分区的系统号码
    u                     #改变显示记录单位
    v                     #对磁盘分区表进行验证
    w                     #保存修改结果并退出fdisk程序复制
    a                     #设置可引导标记
    b                     #修改bsd的磁盘标签
    c                     #设置DOS操作系统兼容标记
    o                     #创建一个新的空白的Dos分区表
    x                     #特殊功能,不建议初学者使用

2、本地yum仓库搭建

[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   13M  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   36K  296M    1% /run/user/0
/dev/sr0                 4.2G  4.2G     0  100% /mnt
[root@localhost ~]#cd /etc/yum.repos.d/        #切换到固定目录
[root@localhost yum.repos.d]#ls
CentOS-Base.repo  CentOS-CR.repo  CentOS-Debuginfo.repo  CentOS-fasttrack.repo  CentOS-Media.repo  CentOS-Sources.repo  CentOS-Vault.repo
[root@localhost yum.repos.d]#mkdir bak     #创建备份文件夹
[root@localhost yum.repos.d]#ls
bak  CentOS-Base.repo  CentOS-CR.repo  CentOS-Debuginfo.repo  CentOS-fasttrack.repo  CentOS-Media.repo  CentOS-Sources.repo  CentOS-Vault.repo
[root@localhost yum.repos.d]#mv *.repo bak     #移走网源,减少干扰
[root@localhost yum.repos.d]#mv bak/*  .       #移回网源
[root@localhost yum.repos.d]#ls
bak 
[root@localhost yum.repos.d]#vi zhantai.repo       #自建配置文件   本地源
[zhantai]
name=zhantai
baseurl=file:///mnt
gpgcheck=0
:ZZ       #保存退出
[root@localhost yum.repos.d]#yum clean all     #清缓存
已加载插件:fastestmirror, langpacks
正在清理软件源: zhantai
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
[root@localhost yum.repos.d]#yum makecache    #重新建立元数据
已加载插件:fastestmirror, langpacks
Determining fastest mirrors
zhantai                                                                                                                                              | 3.6 kB  00:00:00     
(1/4): zhantai/group_gz                                                                                                                              | 166 kB  00:00:00     
(2/4): zhantai/filelists_db                                                                                                                          | 3.1 MB  00:00:00     
(3/4): zhantai/primary_db                                                                                                                            | 3.1 MB  00:00:00     
(4/4): zhantai/other_db                                                                                                                              | 1.3 MB  00:00:00     
元数据缓存已建立

3、lsblk——命令

  • lsblk以树形查看磁盘分区
[root@localhost ~]#lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   60G  0 disk 
├─sda1            8:1    0    2G  0 part /boot
└─sda2            8:2    0   55G  0 part 
  ├─centos-root 253:0    0   54G  0 lvm  /
  └─centos-swap 253:1    0    5G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk 
└─centos-root   253:0    0   54G  0 lvm  /
sr0              11:0    1  4.2G  0 rom  /run/media/root/CentOS 7 x86_64

4、blkid——命令

  • 可以查看uuid和块设备属性信息
  • 在这里插入图片描述

5、mkfs——命令

  • 创建文件系统(格式化)常用选项
    在这里插入图片描述

6、扩展分区的大小

在这里插入图片描述

7、gdisk——命令

  • 用于磁盘分区

  • gdisk主要是用来划分容量大于2T的硬盘,大于2T fdisk搞不定两种类型的分区表:GPT和MBR

  • MBR不支持4T以上

五、挂载、解挂载

挂载规则

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

####查看是否为挂载点
# findmnt  查看 设备的详细信息
[root@localhost opt]# findmnt /sdb1 
TARGET SOURCE    FSTYPE OPTIONS
/sdb1  /dev/sdb1 xfs    rw,relatime,seclabel,attr2,inode64,noquota

选项功能
rw/ro是否对挂载的文件系统拥有读写权限,rw 为默认值,表示拥有读写权限;ro 表示只读权限。
async/sync此文件系统是否使用同步写入(sync)或异步(async)的内存机制,默认为异步 async。
dev/nodev是否允许从该文件系统的 block 文件中提取数据,为了保证数据安装,默认是 nodev。
auto/noauto是否允许此文件系统被以 mount -a 的方式进行自动挂载,默认是 auto。
suid/nosuid设定文件系统是否拥有 SetUID 和 SetGID 权限,默认是拥有。
exec/noexec设定在文件系统中是否允许执行可执行文件,默认是允许。
user/nouser设定此文件系统是否允许让普通用户使用 mount 执行实现挂载,默认是不允许(nouser),仅有 root 可以。
defaults定义默认值,相当于 rw、suid、dev、exec、auto、nouser、async 这 7 个选项。
remount重新挂载已挂载的文件系统,一般用于指定修改特殊权限。
####重新挂载
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

1、mount——挂载

格式:mount [ -t 类型] 存储设备 挂载点目录
在这里插入图片描述

2、umount——解挂载

卸载已挂载的文件系统
在这里插入图片描述

3、永久挂载

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

/dev/sdb2   /mnt   xfs   defaults 0 0

方法二:需要 将文件写入 /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 01 字段:设备名或设备卷标名。
第 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
uuid写错了 可以直接等待进入系统后,出现ctrl+D 报错 输入root密码,后修改  /etc/fstab.

总结

管理磁盘和分区、创建文件系统、挂载、卸载文件系统。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值