Linux系统管理之磁盘管理与文件系统

一、前言

管理磁盘是管理员的重要工作内容,本文主要介绍以下几个方面

  1. 磁盘结构及分区表示
  2. 管理磁盘及分区
  3. 管理文件系统

二、磁盘(无尘环境制造)结构及分区

1.物理结构

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

2.数据结构

  1. 扇区:盘片被分为多个扇形区域,每个扇区存放512字节的数据
  2. 磁道:同一盘片不同半径的同心圆
  3. 柱面:不同盘片相同半径构成的圆柱面

多个扇区组成磁道,多个相同直径的磁道组成柱面

笔记本的磁盘一般是2.5英寸,7mm厚度和9.5mm厚度,台式机一般是3.5英寸,SSD 2.5英寸 厚度7mm ,固态硬盘,电子芯片存储,数据丢失无法恢复,速度快。

3.存储容量=磁头数柱面每道扇区数*每扇区字节数

4.磁盘接口类型

  1. IDE 基本不用
  2. SATA 目前是SATA3
  3. SCSI 服务器专用的

5.MBR与磁盘分区表示

MBR最多4个分区,GPT支持128分区

1)主引导记录

  1. MBR位于硬盘第一个物理扇区处
  2. MBR中包含硬盘的主引导程序和硬盘分区表
  3. 分区表有4个分区记录区,每个分区记录占16字节

2)Linux中将硬盘、分区等设备均表示为文件

/dev/hda5 hd——IDE设备接口 ,sd——SCSI设备 a——第一块 5——序列号

3)磁盘分区结构

硬盘中的主分区2数目只有四个主分区和扩展分区的序号为1~4

扩展分区(MBR必须有一个主分区才可以创建主分区)可以分为逻辑分区,序号从5开始

三、文件系统

1.文件系统类型

1)XFS文件系统

高性能的日志文件系统,擅长处理大文件,支持百万级T字节的存储空间。

存放文件和目录数据的分区,有日志功能,宕机也可以进行数据恢复

2)swap

SWAP,交换文件系统——用于Linux系统建立交换分区,相当于虚拟内存,缓解物理内存不足的问题(但是有上限,只是缓解,而不是解决)该区不用于直接存储用户的文件和目录等数据!!!

3)Linux支持的其他文件系统类型

FAT16、FAT32(不安全)、NTFS

EXT4(Centos6) EXT3(Centos5)

四、管理磁盘、分区及文件系统

1.lsblk命令

用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,但是它不会列出RAM盘的信息

2.检测并确认新硬盘——分区

fdisk命令——(fdisk -l )查看或(fdisk 设备)管理磁盘分区

交互模式中的常用命令:m(帮助信息)、p(显示)、n(新建)、d(删除)、t(变更分区类型)、w(保存,考虑清楚操作)、q(不保存退出)

[root@lokott ~]# fdisk -l

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

   设备   Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    12584959     6291456   83  Linux
/dev/sda2        12584960    54527999    20971520   83  Linux
/dev/sda3        54528000    62916607     4194304   82  Linux swap / Solaris
/dev/sda4        62916608    83886079    10484736    5  Extended
/dev/sda5        62918656    83886079    10483712   83  Linux
 设备  *代表引导分区    起始位置 结束位置  分区大小(kb)系统ID号 分区类型                           

3.格式化文件系统类型

  1. mkfs -t 文件系统类型(如xfs) 分区设备(/dev/sdbn,n表示序号)例如:mkfs -t xfs /dev/sdb1
  2. mkfs.xfs /dev/sdb1 mkfs一般用于格式化XFS、EXT4、FAT等不同类型的分区
  3. mkswap 格式化Swap交换分区

4.挂载

mount /dev/sdb1 /mnt

总结:首先我们要先添加一块到多块磁盘,在VMware上可以进行添加,后面给出具体操作,其次进行分区、格式化、挂载操作,但是目前挂载是一次有效,虚拟机重启后是无效的,需要手动操作进行再次挂载,这样是非常不方便的,所以下面介绍永久挂载的操作

5.永久挂载

  1. 在root用户下先vim /etc/fstab文件,
  2. 添加设备名称 挂载点 文件系统类型 文件权限功能(一般是defaults) 0 (容灾处理) 0(启动优先级,0表示正常顺序进行加载)
  3. 保存退出后,一般服务器是不能重启(宕机的),所以一般不会重启来使系统加载,而是使用mount -a命令进行挂载

6.查看磁盘使用情况

df -hT

具体操作过程如下:

(1)首先在VMware上添加三块新的硬盘

Linux系统管理之磁盘管理与文件系统

Linux系统管理之磁盘管理与文件系统

Linux系统管理之磁盘管理与文件系统

Linux系统管理之磁盘管理与文件系统

Linux系统管理之磁盘管理与文件系统

Linux系统管理之磁盘管理与文件系统

(2)重启Centos7

​ [root@lokott ~]# init 6

(3)lsblk查看块设备信息

[root@lokott ~]# lsblk                              //查看原本有sda,添加了sdb、sdc和sdd
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   40G  0 disk 
├─sda1   8:1    0    6G  0 part /boot
├─sda2   8:2    0   20G  0 part /
├─sda3   8:3    0    4G  0 part [SWAP]
├─sda4   8:4    0    1K  0 part 
└─sda5   8:5    0   10G  0 part /home
sdb      8:16   0   20G  0 disk 
sdc      8:32   0   20G  0 disk 
sdd      8:48   0   20G  0 disk 
sr0     11:0    1  4.2G  0 rom  /run/media/root/CentOS 7 x86_64

[root@lokott ~]# fdisk -l                        //也可以用fdisk -l 查看详细信息

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

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    12584959     6291456   83  Linux
/dev/sda2        12584960    54527999    20971520   83  Linux
/dev/sda3        54528000    62916607     4194304   82  Linux swap / Solaris
/dev/sda4        62916608    83886079    10484736    5  Extended
/dev/sda5        62918656    83886079    10483712   83  Linux

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

磁盘 /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 字节

(4)fdisk /dev/sdn 进入交互模式下进行硬盘分区

[root@lokott ~]# fdisk /dev/sdb            //分区操作开始
欢迎使用 fdisk (util-linux 2.23.2)。

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

Device does not contain a recognized partition table
使用磁盘标识符 0x4b4b9f25 创建新的 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 partition's 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            //将硬盘分区,分出一个extend区来建立逻辑分区,但是必须先有主分区
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+5G
分区 1 已设置为 Linux 类型,大小设为 5 GiB

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

命令(输入 m 获取帮助):w

[root@lokott ~]# fdisk -l /dev/sdb            //查看sdb硬盘信息

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

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    10487807     5242880   83  Linux
/dev/sdb2        10487808    20973567     5242880    5  Extended
/dev/sdb3        20973568    31459327     5242880   83  Linux
/dev/sdb4        31459328    41943039     5241856   83  Linux
/dev/sdb5        10489856    14684159     2097152   83  Linux
/dev/sdb6        14686208    18880511     2097152   83  Linux
/dev/sdb7        18882560    20973567     1045504   83  Linux

(5)mkfs进行格式化操作

[root@lokott ~]# mkfs -t 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

(6)进行磁盘挂载并且用df -hT检查是否成功挂载

[root@lokott ~]# mkdir /sdb1_mount
[root@lokott ~]# ls /sdb1_mount/
[root@lokott ~]# mount /dev/sdb1 /sdb1_mount/
[root@lokott ~]# df -hT
文件系统       类型      容量  已用  可用 已用% 挂载点
/dev/sda2      xfs        20G  4.5G   16G   23% /
devtmpfs       devtmpfs  474M     0  474M    0% /dev
tmpfs          tmpfs     489M     0  489M    0% /dev/shm
tmpfs          tmpfs     489M  7.2M  481M    2% /run
tmpfs          tmpfs     489M     0  489M    0% /sys/fs/cgroup
/dev/sda1      xfs       6.0G  158M  5.9G    3% /boot
/dev/sda5      xfs        10G   37M   10G    1% /home
tmpfs          tmpfs      98M  4.0K   98M    1% /run/user/42
tmpfs          tmpfs      98M   20K   98M    1% /run/user/0
/dev/sr0       iso9660   4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
/dev/sdb1      xfs       5.0G   33M  5.0G    1% /sdb1_mount

注意!重启之后不会自动挂载的

[root@lokott ~]# init 6
Connection closing...Socket close.

Connection closed by foreign host.

Disconnected from remote host(centos7-1) at 22:25:16.

Type `help' to learn how to use Xshell prompt.
[c:\~]$ 

Connecting to 192.168.189.133:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.

Last login: Fri Nov  1 22:26:01 2019
[root@lokott ~]# df -hT
文件系统       类型      容量  已用  可用 已用% 挂载点
/dev/sda2      xfs        20G  4.5G   16G   23% /
devtmpfs       devtmpfs  474M     0  474M    0% /dev
tmpfs          tmpfs     489M     0  489M    0% /dev/shm
tmpfs          tmpfs     489M  7.2M  481M    2% /run
tmpfs          tmpfs     489M     0  489M    0% /sys/fs/cgroup
/dev/sda1      xfs       6.0G  158M  5.9G    3% /boot
/dev/sda5      xfs        10G   37M   10G    1% /home
tmpfs          tmpfs      98M  4.0K   98M    1% /run/user/42
tmpfs          tmpfs      98M   16K   98M    1% /run/user/0
/dev/sr0       iso9660   4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64

(8)设置永久挂载设置操作

[root@lokott ~]# cat /etc/fstab                 //查看一下文件的内容然后vim 写入命令

#
# /etc/fstab
# Created by anaconda on Wed Oct 23 12:15:45 2019
#
# 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
#
UUID=d0f8b702-0aa9-4857-9551-2e1283d2f5f9 /                       xfs     defaults        0 0
UUID=4d632b10-c77d-438f-a9f4-8b4b0aeee9a9 /boot                   xfs     defaults        0 0
UUID=a12d80a9-1b44-487a-996f-b57fbca184b5 /home                   xfs     defaults        0 0
UUID=af672794-14a8-433a-a9c9-c3c263de9243 swap                    swap    defaults        0 0

[root@lokott ~]# vim /etc/fstab         
[root@lokott ~]# cat /etc/fstab         
#
# /etc/fstab
# Created by anaconda on Wed Oct 23 12:15:45 2019
#
# 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
#
UUID=d0f8b702-0aa9-4857-9551-2e1283d2f5f9 /                       xfs     defaults        0 0
UUID=4d632b10-c77d-438f-a9f4-8b4b0aeee9a9 /boot                   xfs     defaults        0 0
UUID=a12d80a9-1b44-487a-996f-b57fbca184b5 /home                   xfs     defaults        0 0
UUID=af672794-14a8-433a-a9c9-c3c263de9243 swap                    swap    defaults        0 0
/dev/sdb1   /sdb1_mount xfs defaults    0 0
[root@lokott ~]# df -hT                     //添加之后一般是需要重启才会加载的,但是我们知道服务器
                                          //一般是不允许允许宕机的,因此需要用mount -a使其立即生效
文件系统       类型      容量  已用  可用 已用% 挂载点
/dev/sda2      xfs        20G  4.5G   16G   23% /
devtmpfs       devtmpfs  474M     0  474M    0% /dev
tmpfs          tmpfs     489M     0  489M    0% /dev/shm
tmpfs          tmpfs     489M  7.2M  481M    2% /run
tmpfs          tmpfs     489M     0  489M    0% /sys/fs/cgroup
/dev/sda1      xfs       6.0G  158M  5.9G    3% /boot
/dev/sda5      xfs        10G   37M   10G    1% /home
tmpfs          tmpfs      98M  4.0K   98M    1% /run/user/42
tmpfs          tmpfs      98M   20K   98M    1% /run/user/0
/dev/sr0       iso9660   4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
[root@lokott ~]# mount -a
[root@lokott ~]# df -hT | tail -1 
/dev/sdb1      xfs       5.0G   33M  5.0G    1% /sdb1_mount
[root@lokott ~]# 

小结:

在理解原理的基础上进行实际操作,需要多熟悉体会并且真正理解操作过程,巧用一些命令可以简化一些问题提高效率,例如上面的管道符号(|)的使用,可以更加直观地查看信息,提高效率。所以我们需要学以致用,多思多用。