当前位置: 首页 > 工具软件 > Util-linux > 使用案例 >

Linux磁盘管理

时修贤
2023-12-01

目录

1. 磁盘基础

1.1 硬盘的物理结构

1.2 硬盘的数据结构

1.3硬盘存储容量

1.4 硬盘接口的类型

2.规划硬盘中的分区

2.1 为什么分区

2.2 硬盘分区

2.2.1 MBR 分区

2.2.2 主分区、逻辑分区、扩展分区

2.2.3 gpt分区

2.3  fdisk(磁盘分区)

2.4 建立特殊分区(swap)

3.创建文件系统

3.1文件系统的组成

3.2 建立文件系统

3.2.1 mkfs

3.2.2 mkswap 分区名(特殊分区)

4.挂载、卸载文件系统

4.1 临时挂载:

4.2 永久挂载


1. 磁盘基础

1.1 硬盘的物理结构

盘片: 硬盘有多个盘片,每盘片有2面(正反两面)

磁头: 每面一个磁头,并不是只有一个磁头,磁头也不会碰到盘面,磁头等于盘片数量

1.2 硬盘的数据结构

扇区: 盘片被分为多个扇形区域,每个扇区存放512字节的数据(扇区越多容量越大)

磁道: 同一盘片不同半径的同心圆

柱面: 不同盘片相同半径构成的圆(柱面和磁道数量相同) 

1.3硬盘存储容量

硬盘存储容量=磁头数(8个2进制)×磁道(柱面)数×每道扇区数(6个二进制)×每扇区字节数

1柱面=512 * 扇区数/磁头数×磁道=51263255=7.84M

可以用柱面/磁头/扇区来唯一定位磁盘上每一个区域

1.4 硬盘接口的类型

硬盘接口类

IDE: 133MB/s,并行接口,早期家用电脑

SCSI: 640MB/s,并行接口,早期服务器

SATA: 6Gbps,SATA数据端口与电源(长的,数据线短的)端口是分开的,即需要两条线,一条数据线,一条电源线

SAS: 6Gbps,SAS是一整条线,数据端口与电源端口是一体化的,SAS中是包含供电线的,而SATA中不包含供电线。SATA标准其实是SAS标准的一个子集,二者可兼容,SATA硬盘可以插入SAS主板上,反之不行。

M.2

光纤接口

服务器硬盘大小

LFF: 3.5寸,一般见到的那种台式机硬盘的大小
SFF: Small Form Factor 小形状因数,2.5寸,注意不同于2.5寸的笔记本硬盘
L、S分别是大、小的意思,目前服务器或者盘柜采用sff规格的硬盘主要是考内虑
增大单位密度内的磁盘容量、增强散热、减小功耗机械与固态

  机械硬盘(HDD): Hard Disk Drive,即是传统普通硬盘,主要由:盘片,磁头,盘片转轴及控制电 机,磁头控制器,数据转换器,接口,缓存等几个部分组成。

固态硬盘(SSD): Solid State Drive,用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单 元(FLASH芯片、DRAM芯片)组成。

2.规划硬盘中的分区

2.1 为什么分区

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

2.2 硬盘分区

2.2.1 MBR 分区

MBR磁盘采用MBR分区表,由于MBR用4个字节存储分区总扇区数,最大可以表示2的32次方,一个扇区512字节,那么分区的容量或者磁盘容量都不能超过2TB。

主分区可以直接存储数据
扩展分区不可以直接存储数据,还需要再分区
前 446  是引导程序 

2.2.2 主分区、逻辑分区、扩展分区

  • 主分区:可以直接使用,可以装系统

  • 扩展分区:不可以直接使用,必须要分逻辑分区

  • 逻辑分区:依托于扩展分区,使用的是扩展分区中的空间(装操作系统的)

      主分区 序号1-4
      逻辑分区  序号 从5 开始
      扩展分区 一定是主分区
      主分区不一定是扩展分区
      逻辑分区一定不是主分区
    

lsblk 列出块设备

[root@localhost ~]#lsblk

NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   60G  0 disk
├─sda1            8:1    0    4G  0 part /boot
└─sda2            8:2    0   54G  0 part
  ├─centos-root 253:0    0   50G  0 lvm  /
  └─centos-swap 253:1    0    4G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk
└─sdb1            8:17   0   10G  0 part
sdc               8:32   0   20G  0 disk
sdd               8:48   0   20G  0 disk
sde               8:64   0   20G  0 disk
sr0              11:0    1  4.2G  0 rom

partprobe 重新设置内存中的内核分区表版本 

2.2.3 gpt分区

可以有128个分区表 可以对2T 以上的硬盘进行分区

2.3  fdisk(磁盘分区)

能加硬盘在linux 系统使用起来就行    

  • 建立普通分区
  • 建立逻辑分区
  • 建立swap分区

基本用法 :fdisk  硬盘名 

[root@localhost ~]#fdisk -l /dev/sda   ##只看sda硬盘

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

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     8390655     4194304   83  Linux
/dev/sda2         8390656   121653247    56631296   8e  Linux LVM

[root@localhost ~]#fdisk -l   ##看所有

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

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     8390655     4194304   83  Linux
/dev/sda2         8390656   121653247    56631296   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:4294 MB, 4294967296 字节,8388608 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xec52196b

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    20973567    10485760   83  Linux
磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
 
磁盘 /dev/sdd:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

磁盘 /dev/sde:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
[root@localhost ~]#fdisk /dev/sdc

欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0xf79f6663 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):m
命令操作
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types  
   m   print this menu
   n   add a new partition   '#新建'
   o   create a new empty DOS partition table
   p   print the partition table  '##打印当前分区表'
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partitions system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit   '##保存退出'
   x   extra functionality (experts only)
   
########################主分区###########################
   
命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): ' ##回车默认 p  主分区'  
Using default response p
分区号 (1-4,默认 1): '##回车默认从序号1分区  开始分区'
起始 扇区 (2048-41943039,默认为 2048): '##回车默认开始的扇区'
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+10G  ##分区10G
分区 1 已设置为 Linux 类型,大小设为 10 GiB

#########################扩展分区#########################

命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): e               
分区号 (2-4,默认 2):2
起始 扇区 (20973568-41943039,默认为 20973568):
将使用默认值 20973568
Last 扇区, +扇区 or +size{K,M,G} (20973568-41943039,默认为 41943039):+5G   
分区 2 已设置为 Extended 类型,大小设为 5 GiB

########################逻辑分区#######################

命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 1 extended, 2 free)
   l   logical (numbered from 5)
Select (default p): l
添加逻辑分区 5
起始 扇区 (20975616-31459327,默认为 20975616):
将使用默认值 20975616
Last 扇区, +扇区 or +size{K,M,G} (20975616-31459327,默认为 31459327):+2G
分区 5 已设置为 Linux 类型,大小设为 2 GiB

命令(输入 m 获取帮助):W  ##保存退出
The partition table has been altered!
Calling ioctl() to re-read partition table.

正在同步磁盘。

2.4 建立特殊分区(swap)

分区一定要将分区类型改为82(swap分区)
t改变分区类型
82
[root@localhost ~]# fdisk /dev/sdc 
欢迎使用 fdisk (util-linux 2.23.2)。

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

Device does not contain a recognized partition table
使用磁盘标识符 0xa10952d4 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n  '## 选择分区'
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): e    '##先建立扩展分区' 
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+10G  '##分10G'
分区 1 已设置为 Extended 类型,大小设为 10 GiB

命令(输入 m 获取帮助):n   '## 选择分区'
Partition type:
   p   primary (0 primary, 1 extended, 3 free)
   l   logical (numbered from 5)
Select (default p): l   '##创建逻辑分区'
添加逻辑分区 5
起始 扇区 (4096-20973567,默认为 4096):
将使用默认值 4096
Last 扇区, +扇区 or +size{K,M,G} (4096-20973567,默认为 20973567):+5G  '##分5G'
分区 5 已设置为 Linux 类型,大小设为 5 GiB

命令(输入 m 获取帮助):p   '##查看分区情况'

磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xa10952d4

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048    20973567    10485760    5  Extended
/dev/sdc5            4096    10489855     5242880   83  Linux

命令(输入 m 获取帮助):t  '##改变分区'
分区号 (1,5,默认 5):5  '##第一个逻辑分区是5'
Hex 代码(输入 L 列出所有代码):L  '##查看所有的代码,82是swap类型'

 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  '##所以这里是82'
已将分区“Linux”的类型更改为“Linux swap / Solaris”

命令(输入 m 获取帮助):P  '##'

磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xa10952d4

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048    20973567    10485760    5  Extended
/dev/sdc5            4096    10489855     5242880   82  Linux swap / Solaris
                                                        '这里可以看到逻辑分区的类型改好了'

3.创建文件系统

3.1文件系统的组成

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

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

[root@localhost ~]#ll /dev/sd*
brw-rw---- 1 root disk 8,  0 7月  31 09:28 /dev/sda
brw-rw---- 1 root disk 8,  1 7月  31 09:28 /dev/sda1
brw-rw---- 1 root disk 8,  2 7月  31 09:28 /dev/sda2
brw-rw---- 1 root disk 8, 16 8月   1 10:59 /dev/sdb
brw-rw---- 1 root disk 8, 17 8月   1 10:59 /dev/sdb1
brw-rw---- 1 root disk 8, 32 8月   1 10:55 /dev/sdc
brw-rw---- 1 root disk 8, 48 8月   1 10:55 /dev/sdd
brw-rw---- 1 root disk 8, 64 8月   1 10:55 /dev/sde

3.2 建立文件系统

3.2.1 mkfs

两种方式:

[root@localhost ~]#mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=655360 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=2621440, 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@localhost ~]#mkfs -t ext4 /dev/sdc1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 2621440 blocks
131072 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2151677952
80 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

3.2.2 mkswap 分区名(特殊分区)

root@localhost ~]#mkswap /dev/sdb1
mkswap: /dev/sdb1: warning: wiping old xfs signature.
正在设置交换空间版本 1,大小 = 10485756 KiB
无标签,UUID=deba866d-3234-4dff-858a-e256a23a35dc
启用:swapon   分区名
     swapon  -a   启用所有
停用:swapoff  分区名
     swapoff -a   停用所有

4.挂载、卸载文件系统

4.1 临时挂载:

通式:mount   分区名    文件夹名
复制代码
[root@localhost ~]#mount /dev/sdb1 /mnt/
[root@localhost ~]#cd /mnt/
[root@localhost mnt]#touch 1.txt
[root@localhost mnt]#ls
1.txt
[root@localhost mnt]#cd
[root@localhost ~]#umount /mnt/
[root@localhost ~]#ls /mnt/

4.2 永久挂载

[root@localhost ~]#vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Fri Jul 22 00:55:36 2022
#
# 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=d4892f01-2262-4577-90af-db5a19c5d272 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
UUID=deba866d-3234-4dff-858a-e256a23a35dc /mnt       xfs     defaults   0 0

[root@localhost ~]#mount -a   重新加载  报错 千万不要重启

df -Th(文件系统的类型人性化显示)

[root@localhost ~]#df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        50G  1.8G   49G    4% /
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G  8.6M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1               xfs       4.0G  143M  3.9G    4% /boot
tmpfs                   tmpfs     378M     0  378M    0% /run/user/0
/dev/sdc1               ext4      9.8G   37M  9.2G    1% /mnt

挂载规则

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

如果有用户正在挂载目录 无法解挂 

想重新挂载

mount -o remount  /dev/sdb1 /mnt/
mount -o remount,ro  /dev/sdb1 /mnt/  ##重新挂载并且只读
fuser -km /mnt/    ###直接杀死
 类似资料: