磁盘分区和文件系统管理
Posted mylive
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了磁盘分区和文件系统管理相关的知识,希望对你有一定的参考价值。
在linxu系统中,如果需要在某个磁盘上存储数据。需按照以下流程:
- 将磁盘进行分区
- 创建文件系统
- 将文件系统挂载到目录下
- 在安装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
- 设备:第一列的内容是设备,可以使用设备名和UUID来指定设备
- 挂载目录:第二列是设备的挂载目录(挂载点).
- 文件系统类型:第三列指定了设备和磁盘分区的文件系统类型
- 挂载选项:第四列列出了对于每一个设备或者磁盘分区的所有挂载选项。
- 储选项:第五列是dump选项,用于检查文件系统并用一个数字来决定该我呢见系统是否需要备份。如果它是0,dump将会忽略该文件系统,不做备份。
- 文件系统检查选项:第六列是fsck选项,是通过第六列中的数字来决定以何种顺序来检查文件系统。如果他是0,fsck将不会检查该文件系统。
设置开机自动挂载文件系统
- 使用设备名:编辑/etc/fstab文件,在该文件末尾添加下列内容
/dev/sda5 /mnt/www xfs defaults 1 2
- 使用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
- 使用卷标
- 先使用以下命令查看磁盘分区/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
使用交换空间
使用交换分区
- 添加交换分区
- 创建磁盘分区
[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
- 删除交换分区
- 禁用交换分区:使用swapoff命令可以用来禁用linux系统的交换分区 在shell提示下以root用户身份输入以下命令禁用交换分区(这里的交换分区就是/dev/sda5)
[root@localhost ~]# swapoff /dev/sda5
- 编辑/etc/fstab文件 目的是让系统在下次启动时,不会启用交换分区
/dev/sda5 swap swap defaults 0 0
使用交换文件
- 添加交换文件
- 创建/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
- 删除交换文件
- 禁用交换文件
[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实用教程》人民邮电出版社出版发行 於岳编著
以上是关于磁盘分区和文件系统管理的主要内容,如果未能解决你的问题,请参考以下文章