Linux磁盘管理与文件系统、以及fdisk、mkfs、mkswap、mount、df、du的操作用法

一、磁盘的分区表示

1、MBR

MBR 是主引导记录(Master Boot Record),位于硬盘第一个物理扇区处,MBR 中包含硬盘的主引导程序和硬盘分区表。分区表有 4 个分区记录区,每个分区记录区占 16 个字节.。

2磁盘分区的表示

常见的硬盘可以划分为主分区、扩展分区和逻辑分区,通常情况下主分区只有四个,而扩展分区可以看成是一个特殊的主分区类型,在扩展分区中可以建立逻辑分区。主分区一般 用来安装操作系统,扩展分区则多用来存储文件数据。

3、Linux 中使用的文件系统类型

文件系统(File System)类型决定了向分区中存放、读取文件数据的方式和效率,在对分区进行格式化时需要选择所使用的文件系统类型。在 Windows 操作系统中,经常使用的文件系统类型包括 FAT32、NTFS 等格式;而在 Linux 系统中,最常使用的文件系统主要包括以下几种格式。

  • XFS:是一种高性能的日志文件系统,特别擅长于处理大文件,可支持上百万 T 字节的存储空间。由于 XFS 文件系统开启日志功能,所以即便发生宕机也不怕数据遭到破坏,这种文件系统可以根据日志记录在短时间内进行数据恢复。
  • SWAP:交换文件系统,用于为 Linux 系统建立交换分区。交换分区的作用相当于虚拟内存,能够在一定程度上缓解物理内存不足的问题。一般建议将交换分区的大小设置为物理内存的 1.5~2 倍。例如,对于拥有 512MB 物理内存的主机,其交换分区的大小建议设置为 1024MB。如果服务器的物理内存足够大(如 8GB 以上),也可以不设置交换分区。交换分区不用于直接存储用户的文件和目录等数据。
  • EXT4:第 4 代扩展文件系统,用于存放文件和目录数据的分区,是 Linux 系统中默认使用的文件系统(CentOS 7 默认使用 XFS)。EXT4 是典型的日志型文件系统,其特点是保存有磁盘存取记录的日志数据,便于恢复,在存取性能和稳定性方面更加出色。
  • Linux 系统还广泛支持其他各种类型的文件系统,如 JFS、FAT16、FAT32、NTFS 等。

二、管理磁盘及分区

  • 在 Linux 服务器中,当现有硬盘的分区规划不能满足要求(例如,根分区的剩余空间过少,无法继续安装新的系统程序)时,就需要对硬盘中的分区进行重新规划和调整,有时候还需要添加新的硬盘设备来扩展存储空间。
  • 操作需要用到 fdisk 磁盘及分区管理工具,fdisk 是大多数 Linux 操作系统中自带的基本工具之一。

1、fdisk 命令–查看磁盘分区

执行“fdisk -l”命令可以查看、确认新增硬盘的设备名称和位置。“fdisk -l”命令的作用是列出当前系统中所有硬盘设备及其分区的信息

[root@www ~]# fdisk -l

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

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

2、管理磁盘分区

在硬盘设备中创建、删除、更改分区等操作同样通过 fdisk 命令进行,只需使用硬盘的设备文件作为参数。执行“fdisk /dev/sda2”命令,即可进入交互式的分区管理界面中,在该操作界面中的“Command (m for help):”提示符后,输入特定的分区操作指令, 可以完成各项分区管理任务。输入“m”指令后,可以查看各种操作指令的帮助信息。

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

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

Device does not contain a recognized partition table
使用磁盘标识符 0x15136e37 创建新的 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    //查看分区对应的系统ID号
   m   print this menu
   n   add a new partition    //创建新分区
   o   create a new empty DOS partition table
   p   print the partition table //列出硬盘中的分区情况,信息显示的格式与执行"fdisk -l"命令相同
   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)

3、新建分区

1)新建主分区
  • 使用“n”指令可以进行创建分区的操作,包括主分区和扩展分区。根据提示继续输入“p” 选择创建主分区,输入“e”选择创建扩展分区。之后依次选择分区序号、起始位置、结束位置或分区大小即可完成新分区的创建。
  • 选择分区号时,主分区和扩展分区的序号只能为 1~4。为保证分区连续,分区起始位置一般由 fdisk 默认识别即可,结束位置或大小可以使用“+sizeM”或“+sizeG”的形式,如“+20G”表示将该分区的容量设置为 20GB。
Command (m for help): n	//开始创建第 1 个分区
Partition type:
p	primary (0 primary, 0 extended, 4 free) e	extended
Select (default p): p		//选择创建的为主分区Partition number (1-4, default 1): 1	//设置第一个主分区的编号为 1 First sector (2048-209715199, default 2048):	//直接按Enter 键接受默认值Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-209715199, default 209715199): +20G
Partition 1 of type Linux and of size 20 GiB is set
2)新建扩展分区
Command (m for help): n
Partition type:
p	primary (2 primary, 0 extended, 2 free) e	extended
Select (default p): e		//选择创建的为扩展分区Partition number (3,4, default 3): 4	//选择 4 作为扩展分区的编号
First sector (83888128-209715199, default 83888128):
Using default value 83888128
Last sector, +sectors or +size{K,M,G} (83888128-209715199, default 209715199): Using default value 209715199
Partition 4 of type Extended and of size 60 GiB is set
3)新建逻辑分区
Command (m for help): n
Partition type:
p	primary (2 primary, 0 extended, 2 free) e	extended
Select (default p): e		//选择创建的为扩展分区Partition number (3,4, default 3): 4	//选择 4 作为扩展分区的编号
First sector (83888128-209715199, default 83888128):
Using default value 83888128
Last sector, +sectors or +size{K,M,G} (83888128-209715199, default 209715199): Using default value 209715199
Partition 4 of type Extended and of size 60 GiB is set
4)删除分区

使用“d”指令可以删除指定的分区,根据提示继续输入需要删除的分区序号即可。在执行删除分区时一定要慎重,应首先使用 p 指令查看分区的序号,确认无误后再进行删除。需要注意的是,若扩展分区被删除,则扩展分区之下的逻辑分区也将同时被删除。因此建议从最后一个分区开始删除,以免 fdisk 识别的分区序号发生紊乱。

Command (m for help): d		//进入删除指定分区的操作
Partition number (1,2,4-6, default 6): 6	//选择需要删除的分区序号
Partition 6 is deleted
5)变更分区的类型
  • 在 fdisk 分区工具中,新建的分区默认使用的分区类型为 Linux,一般不需要更改。但是若新建的分区需要用作 Swap 交换分区或其他类型的分区,则需要对分区类型进行变更以保持一致性,以避免在管理分区时产生混淆。
  • 使用“t”指令可以变更分区的 ID 号。操作时需要依次指定目标分区序号、新的 ID 号。不同类型的 ID 号对应不同的分区类型,不同的分区类型支持不同类型的文件系统,以十六进制数表示,在 fdisk 交互环境中可以输入“l”指令进行列表查看。
  • 最常用的 XFS、Swap 文件系统对应的 ID 号分别为 83、82,而用于 Windows 中的 NTFS 文件系统对应的 ID 号一般为 86。

将逻辑分区“dev/sdb5”的类型更改为 Swap,通过“p”指令可以确认分区/dev/sdb5 的分区 ID 已由默认的 83 变为 82即可。

Command (m for help): t
Partition number (1,2,4,5, default 5): 5 Hex code (type L to list all codes): 82
Changed type of partition 'Linux' to 'Linux swap / Solaris' 
6)分区完成退出 fdisk 分区工具
  • 成对硬盘的分区操作以后,可以执行“w”或“q”指令退出 fdisk 分区工具。其中“w”指令将保存分区操作,而“q”指令不会保存对硬盘所做的分区操作。对已包含数据的硬盘进行分区时,一定要做好数据备份,保存之前要确保操作无误,以免损坏数据。若无法确定本次分区操作是否正确,建议使用“q”指令不保存退出。
  • 变更硬盘(特别是正在使用的硬盘)的分区设置以后,建议最好将系统重启一次,或者执行“partprobe”命令使操作系统检测新的分区表情况。在某些 Linux 操作系统中,若不进行这些操作,可能会导致格式化分区时损坏硬盘中已有的数据,严重者甚至引起系统崩溃。
Command (m for help): w
The partition table has been altered!
 Calling ioctl() to re-read partition table. 
 Syncing disks.

 [root@localhost ~]# partprobe /dev/sdb

三、管理文件系统

在 Linux 操作系统中,使用 fdisk 工具在硬盘中建立分区以后,还需要对分区进行格式化并挂载到系统中的指定目录,然后才能用于存储文件、目录等数据。

1、创建文件系统

创建文件系统的过程即格式化分区的过程,在 Linux 操作系统中使用 mkfs(Make Filesystem,创建文件系统)命令工具可以将分区格式化成 XFS、EXT4、FAT 等不同类型的文件系统,而 Swap 交换分区是使用 mkswap 命令来进行格式化的。

1) mkfs 命令的使用

mkfs 命令使用基本的命令格式:
mkfs -t 文件系统类型 分区设备

  • 使用mkfs创建 XFS 文件系统
[root@localhost ~]# mkfs -t xfs /dev/sdb1		//或执行mkfs.xfs /dev/sdb1 meta-data=/dev/sdb1	
2)mkswap 命令的使用
  • 在 Linux 操作系统中,Swap 分区的作用类似于 Windows 操作系统中的“虚拟内存”,可以在一定程度上缓解物理内存不足的情况。当 Linux 主机运行的服务较多,需要更多的交换空间支撑应用时,可以为其增加新的交换分区。
  • 使用 mkswap 命令工具可以在指定的分区上创建交换文件系统,目标分区应先通过fdisk 工具将 ID 号设为 82。
  • 对于新增加的交换分区,需要使用 swapon 命令进行启用,反之使用 swapoff 命令停用指定的交换分区。

新增swap交换分区

[root@localhost ~]# mkswap /dev/sdb5
Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=9673550e-9dfd-4fa8-8683-255680230f10
[root@localhost ~]# cat /proc/meminfo | grep "SwapTotal:"
SwapTotal:	8257532 kB            //查看总交换空间的大小
[root@localhost ~]# swapon /dev/sdb5	//启用交换分区/dev/sdb5
 [root@localhost ~]# cat /proc/meminfo | grep "SwapTotal"
 SwapTotal:	10354680 kB     //确认交换空间大小已增加
[root@localhost ~]# swapoff /dev/sdb5	//停用交换分区/dev/sdb5

2、挂载、卸载文件系统

1)挂载文件系统

mount 命令的基本使用格式如下:
mount [ -t 文件系统类型 ] 存储设备 挂载点

  • 使用不带任何参数或选项的 mount 命令时,将显示当前系统中已挂载的各个分区(文件系统)的相关信息,最近挂载的文件系统将显示在最后边。
2)卸载文件系统

需要卸载文件系统时使用的命令为 umount,使用挂载点目录或对应设备的文件名作为卸载参数。Linux 操作系统中,由于同一个设备可以被挂载到多个目录下,所以一般建议通过挂载点的目录位置来进行卸载。
[root@localhost ~]# umount /mnt //通过挂载点目录卸载对应的分区
[root@localhost ~]# umount /dev/cdrom //通过设备文件卸载光盘

3、设置文件系统的自动挂载

系统中的/etc/fstab 文件可以视为 mount 命令的配置文件,其中存储了文件系统的静态挂载数据。Linux 操作系统在每次开机时,会自动读取这个文件的内容,自动挂载所指定的文件系统。默认的 fstab 文件中包括了根分区、/boot 分区、交换分区挂载配置。

[root@www ~]# cat /etc/fstab
······            
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=ae0e9ea5-ff46-4135-bacb-fa9263a34dab /boot                   xfs     defaults        0 0
/dev/mapper/centos-home /home                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
                 /dev/cdrom   /mnt     iso9660   defaults     0      0
//字段位置     1                 2         3               4            5       6       

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

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

4、查看磁盘使用情况

df命令查看磁盘使用情况
  • df命令检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
    语法格式:
    df 选项 [目录或文件名]
    常用选项:
  • -a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
  • -k :以 KBytes 的容量显示各文件系统;
  • -m :以 MBytes 的容量显示各文件系统;
  • -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
  • -H :以 M=1000K 取代 M=1024K 的进位方式;
  • -T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
  • -i :不用硬盘容量,而以 inode 的数量来显示
查看当前系统中挂载的各文件系统的磁盘使用情况
[root@www ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        50G  8.2G   42G   17% /
devtmpfs                devtmpfs  3.8G     0  3.8G    0% /dev
tmpfs                   tmpfs     3.9G     0  3.9G    0% /dev/shm
tmpfs                   tmpfs     3.9G  9.0M  3.9G    1% /run
tmpfs                   tmpfs     3.9G     0  3.9G    0% /sys/fs/cgroup
/dev/sr0                iso9660   4.3G  4.3G     0  100% /mnt
/dev/sda1               xfs      1014M  179M  836M   18% /boot
/dev/mapper/centos-home xfs       142G   33M  142G    1% /home
tmpfs                   tmpfs     781M   28K  781M    1% /run/user/0

查看/etc 底下的可用的磁盘容量
[root@www ~]# df -h /etc
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   50G  8.2G   42G   17% /

5、查看目录与文件的使用情况

  • du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看。
    语法格式:
    du 选项 文件或目录名称
    常用选项:
  • -a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
  • -h :以人们较易读的容量格式 (G/M) 显示;
  • -s :列出总量而已,而不列出每个各别的目录占用容量;
  • -S :不包括子目录下的总计,与 -s 有点差别。
  • -k :以 KBytes 列出容量显示;
  • -m :以 MBytes 列出容量显示;
检查根目录底下每个目录所占用的容量
[root@www ~]# du -sm /*
1	/1.txt
0	/bin
146	/boot
0	/dev
37	/etc
1	/home
0	/lib
0	/lib64
0	/media
4308	/mnt
123	/opt
du: 无法访问"/proc/10750/task/10750/fd/4": 没有那个文件或目录
du: 无法访问"/proc/10750/task/10750/fdinfo/4": 没有那个文件或目录
du: 无法访问"/proc/10750/fd/4": 没有那个文件或目录
du: 无法访问"/proc/10750/fdinfo/4": 没有那个文件或目录
0	/proc
24	/root
9	/run
0	/sbin
0	/srv
0	/sys
1	/tmp
3433	/usr
4641	/var

猜你喜欢

转载自blog.csdn.net/wulimingde/article/details/109300508