磁盘分区和文件系统管理

Posted mylive

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了磁盘分区和文件系统管理相关的知识,希望对你有一定的参考价值。

在linxu系统中,如果需要在某个磁盘上存储数据。需按照以下流程:

  1. 将磁盘进行分区
  2. 创建文件系统
  3. 将文件系统挂载到目录下
  4. 在安装linux系统后需要添加更多的交换空间,可以通过添加一个交换分区或添加一个交换文件来实现。
磁盘分区和格式化简介
磁盘分区:是指对硬盘物理介质的逻辑划分。将磁盘分成多个分区,不仅有利与对文件的管理,而且不同的分区可以建立不同的文件系统,这样才能在不同的分区上安装不同的操作系统。

分区就是磁盘的"段落",如果用户希望在计算机上安装多个操作系统,将需要更多的分区。而不同的操作系统原则上才有不同的文件系统。如果几个操作系统都支持相同的文件系统,通常为了避免在一个分区下有相同的系统目录,而将条目安装在不同的磁盘分区上。在linux系统中,情况又有所不同,它本身又需要更多的磁盘分区,比如根分区"/"和swap分区。

磁盘分区一共有三种

  • 主分区
  • 扩展分区
  • 逻辑驱动器

扩展分区只不过是逻辑驱动器的容器,实际上只有主分区和逻辑驱动器才能进行数据存储。在一块磁盘上最多之内有四个主分区,可以另外建立一个扩展分区来代替四个主分区中的一个,任何在扩展分区下可以建立更多的逻辑驱动器。

在计算机启动时,首先读取MBR中的硬盘分区表,从中选择唯一一个具有活动标记的分区,引导该分区上的操作系统。无论有几个主分区,其中必须由一个分区是活动的。 不同的操作系统具有不同的磁盘分区工具,windowns系统下非常有名的分区工具是fdisk,在linux系统中进行分区可以使用fdisk和parted等命令,或者使用相同功能的图像界面程序。

格式化:对磁盘分区进行初始化的一种操作(创建文件系统)。简单的说,就是把一张空白的磁盘划分成一个个小区域并编号,供计算机存储和读取数据使用。这种操作通常会导致现有的分区中所有的数据被清除。所以在此之前一定要对数据进行备份。

格式化数字磁盘中建立磁道和扇区,建立好之后,计算机才可以使用磁盘来存储数据。格式的动作通常是在磁盘的开端写入启动扇区的数据、在根目录记录磁盘卷标、为文件分配表保留一些空间,以及检查磁盘上是否有损坏的扇区,如果有的话啧啧文件分配表标上损毁的记号,表示该扇区并不用来存储数据。

每个主分区和逻辑驱动器都会被存储为一个识别文件系统的附加信息。操作系统能通过这些信息非常容易地识别和确认应该使用哪个分区,不能识别的分区将会被忽略。

分区只是对磁盘上的磁盘空间进行了保留,还不能直接使用,在此之后分区必须要进行格式。在windowns系统下可以通过资源管理器下的文件菜单或者format程序来执行,而在linux系统中大多使用mkfs命令来完成。

linux系支持不同的文件系统,目前应用最广泛的就是xfs和ext4

linux磁盘分区

使用fdisk命令可以用来对磁盘进行分区,它采用传统的问答式界面,除此之外还可以用来查看磁盘分区的详细信息,也能为每个分区指定分区的类型。

命令语法:fdisk [选项] [设备]

选项含义
-b<扇区大小> 指定磁盘的扇区大小,有效的值是512、1024、2048或4096
-l 列出指定磁盘的分区表信息
-s<分区> 显示分区大写,单位为块
-C<柱面数> 指定柱面数
-H<磁头数> 指定磁头数
-S 指定磁盘每磁道的扇区数

在fdisk命令的交互式操作方式下有许多子命令

子命令功能
m 显示所以能在fdisk中使用的子命令
p 显示磁盘分区信息
a 显示磁盘启动分区
n 创建新的分区
e 创建扩展分区
p 创建主分区
t 更改分区的系统ID(也就是分区类型ID)
d 删除磁盘分区
q 退出fdisk,不保存磁盘分区设置
l 列出已知的分区类型
v 验证分区表
w 保存磁盘分区设置并退出fdisk

下面以实例方式讲述在linux系统磁盘/dev/sda中创建、删除、查看分区和转换分区类型

1.进入fdisk界面,显示磁盘分区信息

[root@localhost ~]# fdisk /dev/sda
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p

Disk /dev/sda: 32.2 GB, 32212254720 bytes, 62914560 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000ba4d2

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    62914559    30407680   8e  Linux LVM

磁盘分区的表示方法如下:

  • 设备:磁盘分区设备名,比如/dev/sda1
  • Boot:表示引导分区,在上面的例子中/dev/sda1是引导分区
  • Star:表示一个分区的开始扇区
  • End:表示一个分区的结束扇区
  • Blocks:表示分区容量,单位是块,默认一个块是1KB
  • Id:一个两位的十六进制,表示分区类型
  • System:ID所定义的分区类型

2.创建和删除主分区 在创建磁盘分区时,需要指定结束扇区。

格式功能
n 使用结束扇区,n代表数字
+n 在开始扇区的基础上,加上n个扇区,n代表数字
+nM 在开始扇区的基础上,加上nMB容量,n代表数字。还可以使用K、G
回车键 使用默认的扇区,也就是这个分区的结束扇区就是最后一个扇区

3.创建扩展分区和逻辑驱动器

4.查看并转换分区类型

ID分区类型描述
83 linux linux普通分区
fd linux raid自动 RAID使用的分区
8e linux LVM LVM使用的分区
82 linux swap/solaris swap分区
[root@localhost ~]# fdisk /dev/sda
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): l

 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        
 1  FAT12           27  Hidden NTFS Win 82  Linux swap / 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 hidden C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux extended  c7  Syrinx         
 5  Extended        41  PPC PReP Boot   86  NTFS volume set da  Non-FS data    
 6  FAT16           42  SFS             87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux plaintext de  Dell Utility   
 8  AIX             4e  QNX4.x 2nd part 8e  Linux LVM       df  BootIt         
 9  AIX bootable    4f  QNX4.x 3rd part 93  Amoeba          e1  DOS access     
 a  OS/2 Boot Manag 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 hi eb  BeOS fs        
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT            
 f  W95 Ext‘d (LBA) 54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC b
11  Hidden FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor      
12  Compaq diagnost 5c  Priam Edisk     a9  NetBSD          f4  SpeedStor      
14  Hidden FAT16 <3 61  SpeedStor       ab  Darwin boot     f2  DOS secondary  
16  Hidden FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS    
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fe  LANstep        
1c  Hidden W95 FAT3 75  PC/IX           be  Solaris boot    ff  BBT            
1e  Hidden W95 FAT1 80  Old Minix      

Command (m for help): t
Partition number (1,2, default 2): 2
Hex code (type L to list all codes): 6

WARNING: If you have created or modified any DOS 6.xpartitions, please see the fdisk manual page for additionalinformation.

Changed type of partition ‘Linux LVM‘ to ‘FAT16‘

Command (m for help): p

Disk /dev/sda: 32.2 GB, 32212254720 bytes, 62914560 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000ba4d2

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    62914559    30407680    6  FAT16

5.保存分区设置信息,并退出fdisk

Command (m for help): w

6.在非交互式界面下显示当前磁盘的分区信息

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

7.查看分区情况

使用partprobe更新新分区表,使内核识别分区

[root@localhost ~]# partprobe

使用以下命令查看磁盘分区情况

[root@localhost ~]# ls /dev/sda*
/dev/sda  /dev/sda1  /dev/sda2
创建文件系统

linux主流文件系统类型

  • XFS
  • ext4
  • JFS
  • ReiserFS

文件系统:是指文件在磁盘上的存储方法好排列序列。在linux系统中最重要的特征之一就是支持多种文件系统,这样它就更加灵活,可以和其他操作系统共存。

XFS:一款非常优秀的日志文件系统。由SGI于20世纪90年代初开发的一款开源的全64位、快速、稳固的日志文件系统。

ext4:它是一种针对ext3文件系统的扩展日志式文件系统。linux内核自2.6.28开始正式支持ext4

JFS:是一种提供日志的字节级文件系统。该文件系统 主要是为了满足服务器的高吞吐量和可靠性需求而设计开发的。与非日志文件系统相比,它的突出优点是快速重启能力,使用数据库日志处理技术,JFS能在几秒或几分钟内把文件系统恢复到一致状态。而在非日志文件系统中,文件恢复可能划分几小时甚至几天。JFS的缺点是系统性能上会有一定损失,系统资源占有率偏高。

ReiserFS:使用特殊的、优化的平衡树来组织所有的文件系统数据,根据需要动态第分配索引节,而不必在文件系创建时建立固定的索引节。缺点是每升级一个版本都要将磁盘程序格式化一次,而且它的安全性和稳定性与ext3相比有一定的差距。还不能正确处理超长的文件目录。

命令语法:mkfs [选项] [设备]

选项含义
-t<文件系统类型> 指定文件系统类型
-v 显示详细信息

例如:使用mkfs命令格式化/dev/sda3分区,创建xfs文系统系统

[root@localhost ~]# mkfs -t xfs /dev/sda3
挂载和卸载文件系统

使用mount命令可以将指定分区、光盘、U盘或者是移动硬盘挂载到linux系统的目录下

命令语法:mount [选项] [设备] [挂载目录]

选项含义
-t<文件系统类型> 指定设备的文件系统类型,如xfs、autofs、cifs、ext、ext2、ext3、ext4、hfs、iso9660、jfs、msdos、nfs、nfs4、reiserfs、smbfs、tmpfs、vfat、xfs等
-a 挂载/etc/fstab文件系统中定义的所有文件系统
-o<挂载选项> 指定挂载文件系统时的挂载选项,有些挂载选项也可以用/etc/fstab文件中
-r 以只读方式挂载文件系统,相当于-o ro选项
-w 以读写方式挂载文件系统,相当于-o rw选项
-L<卷标> 以卷标方式挂载文件系统
-U<UUID> 以UUID方式挂载文件系统
-n 不把挂载信息记录在/etc/mtab文件中

mount目录常用挂载选项如下

挂载选项描述
defaults 相当于rw、suid、dev、exec、auto、nouser、async、relatime挂载选项
ro 以只读方式挂载
rw 以读写方式挂载
nouser 禁止普通用户(即非root]挂载文件系统
user 允许普通用户挂载文件系统
users 允许每一位用户挂载和卸载文件系统
remount 尝试重新挂载一个已经挂载的文件系统
owner 如果用户是设备的所有者,允许一个普通的用户挂载该文件系统
exec 在挂载的文件系统上允许直接执行二进制文件
noexec 在挂载的文件系统上不允许之间执行任何二进制文件
atime 在文件系统上更新inode访问时间
noatime 在文件系统上不更新inode访问时间
owner 如果用户是普通所有者,允许普通用户挂载文件系统
group 如果用户的其中一个组群匹配设备的组群,则允许普通的用户挂载文件系统
auto 能够使用-a选项挂载
noauto 只能显式挂载(使用-a选项将不会导致文件系统被挂载)
suid 允许设置用户标识或设置组标识符位才能生效
nosuid 不允许设置用户标识或设置组标识符位才能生效

例子:挂载磁盘分区/dev/sda5到/mnt/www目录中

[root@localhost ~]# mkdir /mnt/www
[root@localhost ~]# mount -t xfs /dev/sda5 /mnt/www

以只读方式挂载/dev/sda5磁盘分区到/mnt/www

[root@localhost ~]# mount -t xfs -o ro /dev/sda5 /mnt/www
卸载文件系统

命令语法:umount [选项] [设备|挂载目录]

选项含义
-a 卸载/etc/mtab中记录的所有文件系统
-n 卸载时不要将信息存入/etc/mtab文件中
-r 若无法成功卸载,则尝试以只读的方式重新挂载该文件系统
-f 强制卸载文件系统
-t<文件系统类型> 只卸载指定类型文件系统

例如:卸载/mnt/www目录所在的磁盘分区文件系统

[root@localhost ~]# umount /mnt/www
查看磁盘分区挂载情况

命令语法:df [选项] [文件]

选项含义
-a 显示所有文件系统,包括虚拟文件系统
-i 显示inode信息而不是块使用量
-k 以KB为单位显示(即块大小为1KB)
-x<文件系统类型> 只显示文件系统不是指定类型的信息
-T 显示文件系统类型
--sync 取得使用量数据前先进行同步动作
--no-sync 取得使用量数据前不进行同步动作(默认)
-t<文件系统类型> 只显示指定文件系统类型
-l 只显示本机文件系统
-h 以可读性较高的方式显示信息
-H 与-h选项相同,但是在计算时以1000字节为换算单位而不是1024字节

例如:在显示磁盘空间使用情况时也显示文件系统的类型

[root@localhost ~]# df -T
Filesystem              Type     1K-blocks    Used Available Use% Mounted on
/dev/mapper/centos-root xfs       28289540 1252916  27036624   5% /
devtmpfs                devtmpfs    485780       0    485780   0% /dev
tmpfs                   tmpfs       497948       0    497948   0% /dev/shm
tmpfs                   tmpfs       497948    7824    490124   2% /run
tmpfs                   tmpfs       497948       0    497948   0% /sys/fs/cgroup
/dev/sda1               xfs        1038336  135376    902960  14% /boot
tmpfs                   tmpfs        99592       0     99592   0% /run/user/0

查看/dev/sda2磁盘分区的磁盘空间使用情况

[root@localhost ~]# df /dev/sda2
Filesystem     1K-blocks  Used Available Use% Mounted on
devtmpfs          485780     0    485780   0% /dev
开机自动挂载文件系统

只有将某个分区或是设备进行挂载后才能使用,但是计算机重启后又需要重新挂载,这时通过修改/etc/fstab文件可以实现开机自动挂载文件系统。

  • /etc/fstab

下面进行详细分析

[root@localhost ~]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Sun Jun  9 14:17:14 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
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=3a97ef4b-da93-4fb3-bc6d-8a674df636cf /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
  1. 设备:第一列的内容是设备,可以使用设备名和UUID来指定设备
  2. 挂载目录:第二列是设备的挂载目录(挂载点).
  3. 文件系统类型:第三列指定了设备和磁盘分区的文件系统类型
  4. 挂载选项:第四列列出了对于每一个设备或者磁盘分区的所有挂载选项。
  5. 储选项:第五列是dump选项,用于检查文件系统并用一个数字来决定该我呢见系统是否需要备份。如果它是0,dump将会忽略该文件系统,不做备份。
  6. 文件系统检查选项:第六列是fsck选项,是通过第六列中的数字来决定以何种顺序来检查文件系统。如果他是0,fsck将不会检查该文件系统。
设置开机自动挂载文件系统
  1. 使用设备名:编辑/etc/fstab文件,在该文件末尾添加下列内容
/dev/sda5    /mnt/www    xfs     defaults        1 2
  1. 使用UUID(Universally Unique Identifier,全局唯一标识符) 其由以下几部分组合:当前日期和时间、时钟序列、全局唯一的IEEE机器识别号
[root@localhost ~]# ls -l /dev/disk/by-uuid
total 0
lrwxrwxrwx. 1 root root 10 Jul 26 21:06 14b6321d-b8fc-499e-ab6b-13680c75774d -> ../../dm-0
lrwxrwxrwx. 1 root root  9 Jul 26 18:48 2018-11-26-14-22-58-00 -> ../../sr0
lrwxrwxrwx. 1 root root 10 Jul 26 21:06 3a97ef4b-da93-4fb3-bc6d-8a674df636cf -> ../../sda1
lrwxrwxrwx. 1 root root 10 Jul 26 21:06 999789a3-908d-4f83-b71d-e518109e64ae -> ../../dm-1

然后编辑/etc/fstab文件,在该文件末尾添加下列内容

UUID=3a97ef4b-da93-4fb3-bc6d-8a674df636cf /boot                   xfs     defaults        1 2
  1. 使用卷标
  2. 先使用以下命令查看磁盘分区/dev/sda5
[root@localhost ~]# xfs_admin -l /dev/sda5
label = "www"

查出卷标后,编辑/etc/fstab文件

LABEL=www      /mnt/www    xfs     defaults        1 2

为xfs文件系统/dev/sda5设置卷标使用命令xfx_admin -L www /dev sda5

为ext4文件系统/dev/sda6设置卷标使用命令e2label /dev/sda6 ftp

使用交换空间
使用交换分区
  1. 添加交换分区
  • 创建磁盘分区
[root@localhost ~]# fdisk -l /dev/sda5
  • 创建交换分区:使用mkswap命令可以用来将磁盘分区或文件设置为linux系统的交换分区 假设将分区/dev/sda5创建为交换分区,在shell提示下以root用户身份输入以下命令
[root@localhost ~]# mkswap /dev/sda5
[root@localhost ~]# free
  • 启用交换分区:使用swapon命令
[root@localhost ~]# mkswap /dev/sda5
  • 确认已经启用交换分区
[root@localhost ~]# cat /proc/swaps
  • 编辑/etc/fstab文件 如果需要在系统启动引导时启用交换分区,编辑/etc/fstab文件添加以下内容,然后在系统下次引导时就会启用新建的交换分区。
/dev/sda5    swap    swap    defaults        0 0
  1. 删除交换分区
  • 禁用交换分区:使用swapoff命令可以用来禁用linux系统的交换分区 在shell提示下以root用户身份输入以下命令禁用交换分区(这里的交换分区就是/dev/sda5)
[root@localhost ~]# swapoff /dev/sda5
  • 编辑/etc/fstab文件 目的是让系统在下次启动时,不会启用交换分区
/dev/sda5    swap    swap    defaults        0 0
使用交换文件
  1. 添加交换文件
  • 创建/swapfile文件 例如:在shell提示下以root用户身份输入以下命令创建/swapfile文件,其中的bs表示块大小。
[root@localhost ~]# dd if=/dev/zero of=/swapfile bs=1G count=1
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB) copied, 24.3387 s, 44.1 MB/s
[root@localhost ~]# ls -l /swapfile
-rw-r--r--. 1 root root 1073741824 Jul 26 23:29 /swapfile
  • 创建交换文件
[root@localhost ~]# mkswap /swapfile
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=a26a836d-1f10-4fc5-9c83-914dc6da2fc0
  • 启用交换文件
[root@localhost ~]# swapon /swapfile
swapon: /swapfile: insecure permissions 0644, 0600 suggested.
  • 查看交换文件是否启用
[root@localhost ~]# free
              total        used        free      shared  buff/cache   available
Mem:         995896       75484      825060         860       95352      782896
Swap:       3145720       71168     3074552
[root@localhost ~]# cat /proc/swaps
Filename				Type		Size	Used	Priority
/dev/dm-1                               partition	2097148	71168	-2
/swapfile                               file		1048572	0	-3
  • 编辑/etc/fstab文件(目的是让系统下此重启后会自动启用新建的交换文件)
/swapfile   swap     swap     defaults  0 0
  1. 删除交换文件
  • 禁用交换文件
[root@localhost ~]# swapoff /swapfile
[root@localhost ~]# free
              total        used        free      shared  buff/cache   available
Mem:         995896       75012      824612         860       96272      782912
Swap:       2097148       70912     2026236
  • 删除/swapfile文件
[root@localhost ~]# rm -rf /swapfile
  • 编辑/etc/fstab文件(目的是让系统下次启动时不启用交换文件。
/swapfile    swap     swap     defaults  0 0

摘自:《Linux实用教程》人民邮电出版社出版发行 於岳编著

以上是关于磁盘分区和文件系统管理的主要内容,如果未能解决你的问题,请参考以下文章

磁盘和文件系统管理笔记

磁盘和文件系统管理笔记

磁盘管理和文件系统

Linux系统的磁盘管理

认识文件存储与磁盘管理

磁盘和文件系统管理实验