【Linux系统】第五章 - 第七章 -1 磁盘分区与挂载


1、 MBR与磁盘分区

1.1 为什么要分区

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

1.2 MBR分区

MBR磁盘采用MBR分区表,由于MBR用4个字节存储分区总扇区数,最大可以表示2的32次方,一个扇区512字节,那么分区的容量或者磁盘容量都不能超过2TB。常见的硬盘可以划分为主分区、扩展分区和逻辑分区,通常情况下主分区只有四个,而
扩展分区可以看成是一个特殊的主分区类型,在扩展分区中可以建立逻辑分区。主分区一般
用来安装操作系统,扩展分区则多用来存储文件数据

MBR(主引导记录):Master Boot Record,1982年,使用32位表示扇区数,分区不超过2T

  1. 446bytes: boot loader 启动相关
  2. 64bytes:分区表,其中每16bytes标识一个分区 4 主分区 *16=64
  3. 2bytes: 55AA

因此总的来说,硬盘分区有 3 种,分别是主分区、扩展分区和逻辑分区。对于一个硬盘来说,主分区至少有 1 个,最多有 4 个;扩展分区可以没有,最多只能有 1 个,且主分区+扩展分区总共不能超过 4 个;逻辑分区可以有若干个。

主分区可以直接存储数据

扩展分区不可以直接存储数据,还需要再分区

1.3 GPT分区

GPT:GUID(Globals Unique Identifiers) partition table 支持128个分区,使用64位,支持8Z(512Byte/block )64Z ( 4096Byte/block)

使用128位UUID(Universally Unique Identifier) 表示磁盘和分区 GPT分区表自动备份在头和尾两份,并有CRC校验位UEFI (Unified Extensible Firmware Interface 统一可扩展固件接口)硬件支持GPT,使得操作系统可以启动

2、 分区工具

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



 parted 命令
注意:parted的操作都是实时生效的,小心使用
parted [选项]... [设备 [命令 [参数]...]...]
parted /dev/sdb mklabel gpt|msdos
parted /dev/sdb print 
parted /dev/sdb mkpart primary 1 200 (默认M)
parted /dev/sdb rm 1
parted -l   列出所有硬盘分区信息

2.1 fdisk

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

fdisk [磁盘设备]

  • m 打印出菜单

  • p 打印出当前分区表

  • n 新建一个分区

  • d 删除一个分区

  • t 改变分区的属性,系统ID

  • w 保存

  • q 不保存退出

实例:

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

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

   设备     Boot      Start         End      Blocks     Id   System
/dev/sda1   *        2048     2099199    1048576   83   Linux
/dev/sda2         2099200    83886079    40893440   8e   Linux LVM

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



[root@localhost data]#fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助):
输入 n 后
      p 主分区 e扩展分区  1逻辑分区
      设置分区:1(范围1-4 ,如按回车代表默认值)
      设置分区大小:+20G (指定大小为20G ,回车代表默认使用全部空间)


#####创建后分区如果分区未出现可以使用 partprobe 刷新检测分区表。

2.2 blkid

可以查看块设备属性信息

[root ~]# blkid 
/dev/sda1: UUID="dd924c21-db72-4fc2-bb50-a1b807e11707" TYPE="xfs" 
/dev/sda2: UUID="seCmIX-Qnsm-936E-LFi7-iycT-aW69-170SMy" TYPE="LVM2_member" 
/dev/sr0: UUID="2017-09-06-10-51-00-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 
/dev/mapper/centos-root: UUID="a186c243-8403-4d1e-826a-668de463529f" TYPE="xfs" 
/dev/mapper/centos-swap: UUID="ad062e10-f14a-4cd6-ae86-963bbcea5829" TYPE="swap" 

2.3 mkfs

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

-t {ext2|ext3|ext4|xfs} 指定文件系统类型
-b {1024|2048|4096} 指定块 block 大小
-LLABEL’ 设置卷标
-j 相当于 -t ext3, mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3-i 
-i    # 为数据空间中每多少个字节创建一个inode;不应该小于block大小
-N  # 指定分区中创建多少个inode
-I 一个inode记录占用的磁盘空间大小,128---4096
-m  # 默认5%,为管理人员预留空间占总空间的百分比
-O FEATURE[,...] 启用指定特性-O ^FEATURE 关闭指定

[root ~]# mkfs         mkfs -t ext4=mkfs.ext4 
mkfs         mkfs.cramfs  mkfs.ext3    mkfs.fat     mkfs.msdos   mkfs.xfs
mkfs.btrfs   mkfs.ext2    mkfs.ext4    mkfs.minix   mkfs.vfat


#文件系统检测和修复
fsck.FS_TYPE
fsck -t FS_TYPE

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

e2fsck:ext系列文件专用的检测修复工具
xfs_repair:xfs文件系统专用检测修复工具

[root@centos ~]#mount /dev/sdb2 /mnt
[root@centos ~]#cp /etc/fstab /mnt/f1
[root@centos ~]#cp /etc/fstab /mnt/f2
[root@centos ~]#ls /mnt
f1 f2 lost+found
[root@centos ~]#dd if=/dev/zero of=/dev/sdb2 bs=1M count=1
1+0 records in
1+0 records out
1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.00128317 s, 817 MB/s
[root@centos ~]#ls /mnt
[root@centos ~]#tune2fs -l /dev/sdb2
tune2fs 1.44.6 (5-Mar-2019)
tune2fs: Bad magic number in super-block while trying to open /dev/sdb2
[root@centos ~]#df
[root@centos ~]#umount /mnt
[root@centos ~]#e2fsck /dev/sdb2
[root@centos~]#e2fsck /dev/sdb2 -y

2.4 mkswap

swap - 特殊的分区

特殊的文件系统,缓解内存不足,为了个别应为程序加内存有点浪费

添加交换分区的空间

mkswap + 分区

swapon +分区 开启 -a 全部

swapoff +分区 关闭 -a 全部

[root ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助):t
分区号 (1-3,默认 3)3   
Hex 代码(输入 L 列出所有代码)82
已将分区“Linux”的类型更改为“Linux swap / Solaris”

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root ~]# cat /proc/meminfo |grep "SwapTo"   //先查看现有交换分区容量
SwapTotal:       2097148 kB

[root ~]# mkswap /dev/sdb3
mkswap: /dev/sdb3: warning: wiping old swap signature.
正在设置交换空间版本 1,大小 = 20971516 KiB
无标签,UUID=2b417485-49bd-4b72-9fce-89594647fcd1
[root ~]# swapon /dev/sdb3
[root ~]# cat /proc/meminfo |grep "SwapT"
SwapTotal:      23068664 kB
[root ~]# swapoff /dev/sdb3
[root ~]# cat /proc/meminfo |grep "SwapT"
SwapTotal:       2097148 kB

4.5 文件系统检测和修复

fsck.FS_TYPE
fsck -t FS_TYPE

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

e2fsck:ext系列文件专用的检测修复工具
xfs_repair:xfs文件系统专用检测修复工具

[root@centos ~]#mount /dev/sdb2 /mnt
[root@centos ~]#cp /etc/fstab /mnt/f1
[root@centos ~]#cp /etc/fstab /mnt/f2
[root@centos ~]#ls /mnt
f1 f2 lost+found
[root@centos ~]#dd if=/dev/zero of=/dev/sdb2 bs=1M count=1
#破坏文件系统
1+0 records in
1+0 records out
1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.00128317 s, 817 MB/s
[root@centos ~]#ls /mnt
[root@centos ~]#tune2fs -l /dev/sdb2
tune2fs 1.44.6 (5-Mar-2019)
tune2fs: Bad magic number in super-block while trying to open /dev/sdb2
[root@centos ~]#df
[root@centos ~]#umount /mnt
[root@centos~]#e2fsck /dev/sdb2
[root@centos~]#e2fsck /dev/sdb2 -y

3、挂载与解挂载

3.1 mount

mount [ -t 类型 ] 存储设备 挂载点目录
mount -o loop ISO镜像文件 挂载点目录

device:指明要挂载的设备

  • 设备文件:例如:/dev/sda5

  • 卷标:-L ‘LABEL’, 例如 -L ‘MYDATA’

  • UUID: -U ‘UUID’:例如 -U ‘0c50523c-43f1-45e7-85c0-a126711d406e’

  • 伪文件系统名称:proc, sysfs, devtmpfs, configfs

    mountpoint:挂载点目录必须事先存在,建议使用空目录

挂载规则

  • 一个挂载点同一时间只能挂载一个设备
  • 一个挂载点同一时间挂载了多个设备,只能看到最后一个设备的数据,其它设备上的数据将被隐藏
  • 一个设备可以同时挂载到多个挂载点
  • 通常挂载点一般是已存在空的目录
-t fstype 指定要挂载的设备上的文件系统类型,:ext4,xfs
-r readonly,只读挂载
-w read and write, 读写挂载,此为默认设置,可省略
-n 不更新/etc/mtab,mount不可见
-a 自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有
auto功能)
-L 'LABEL' 以卷标指定挂载设备
-U 'UUID'UUID指定要挂载的设备
-B, --bind 绑定目录到另一个目录上
-o options:(挂载文件系统的选项),多个选项使用逗号分隔
 async   异步模式,内存更改时,写入缓存区buffer,过一段时间再写到磁盘中,效率高,但不安全
 sync   同步模式,内存更改时,同时写磁盘,安全,但效率低下
 atime/noatime 包含目录和文件
 diratime/nodiratime 目录的访问时间戳
 auto/noauto 是否支持开机自动挂载,是否支持-a选项
 exec/noexec 是否支持将文件系统上运行应用程序
 dev/nodev 是否支持在此文件系统上使用设备文件
 suid/nosuid 是否支持suid和sgid权限
 remount 重新挂载
 ro/rw 只读、读写   
 user/nouser 是否允许普通用户挂载此设备,/etc/fstab使用
 acl/noacl 启用此文件系统上的acl功能
 loop 使用loop设备
 _netdev   当网络可用时才对网络资源进行挂载,如:NFS文件系统
 defaults 相当于rw, suid, dev, exec, auto, nouser, async



[root ~]# mount /dev/sr0 /opt
mount: /dev/sr0 写保护,将以只读方式挂载
[root ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   37G  5.7G   32G   16% /
devtmpfs                 977M     0  977M    0% /dev
tmpfs                    993M     0  993M    0% /dev/shm
tmpfs                    993M  9.0M  984M    1% /run
tmpfs                    993M     0  993M    0% /sys/fs/cgroup
/dev/sda1               1014M  161M  854M   16% /boot
tmpfs                    199M   12K  199M    1% /run/user/42
tmpfs                    199M     0  199M    0% /run/user/0
/dev/sr0                 4.3G  4.3G     0  100% /opt

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

重新挂载

#重新挂载

[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

永久挂载

需要将文件写入 /etc/fstab

使用UUID的方式挂载可以确保挂载的唯一性

[root@localhost opt]# blkid
/dev/sda1: UUID="e9364e9b-a85b-49d7-9652-3a56202e14c8" TYPE="xfs" 
/dev/sda2: UUID="2b3XJj-lWF0-peVn-pI09-xRPq-RF5D-1PCWHs" TYPE="LVM2_member" 
/dev/sda3: UUID="U6aPoo-6qm9-MdVr-Kdhx-ORuu-JCPK-7oRxlU" TYPE="LVM2_member" 
/dev/sr0: UUID="2017-09-06-10-51-00-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 
/dev/mapper/centos-root: UUID="a0a45ee1-62c2-4107-895a-a0ad9d01e21f" TYPE="xfs" 
/dev/mapper/centos-swap: UUID="9c443edd-5cd4-4b29-8f22-d7f935eff0af" TYPE="swap" 
/dev/sdb1: UUID="2a1e1ac7-7462-4fc3-b644-43813660276f" TYPE="xfs" 

[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
~

:r!blkid /dev/sdb1
##使用vi编辑器功能读入UUID
[root@localhost opt]# mount -a


#####uuid写错了 可以直接等待进入系统后,出现ctrl+D 报错 输入root密码,后修改  /etc/fstab

3.2 解挂载

umount 设备名|挂载点
卸载时:可使用设备,也可以使用挂载点
fuser -v MOUNT_POINT
查看正在访问指定文件系统的进程
fuser -km MOUNT_POINT
终止所有在正访问指定的文件系统的进程

3.3 df

格式:df [OPTION] [file]

[root@centos8 ~]#df -Th
Filesystem     Type     Size Used Avail Use% Mounted on
devtmpfs       devtmpfs 887M     0 887M   0% /dev
tmpfs         tmpfs     903M     0 903M   0% /dev/shm
tmpfs         tmpfs     903M  8.7M 894M   1% /run
tmpfs         tmpfs     903M     0 903M   0% /sys/fs/cgroup
/dev/sda2     xfs       100G  2.7G   98G   3% /
/dev/sda3     xfs       50G  1.4G   49G   3% /data
/dev/sda1     ext4     976M 128M 781M  15% /boot
tmpfs         tmpfs     181M     0 181M   0% /run/user/0
[root@centos8 ~]#lsblk -f
NAME   FSTYPE LABEL                     UUID                                 
MOUNTPOINT
sda                                                                            
├─sda1 ext4                               5c2216e3-ae34-444e-aa60-83cbaebb47e7 
/boot
├─sda2 xfs                               f7f53add-b184-4ddc-8d2c-5263b84d1e15 /
├─sda3 xfs                               9a2293a8-9277-4b18-bae1-498e0b9da145 
/data
├─sda4                                                                         
├─sda5 swap                               eebe3bc7-6d52-4ad9-86aa-916f1a123fd4 
[SWAP]
└─sda6                                                                         
sdb     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值