Linux系统安装过程中的步骤之一就是磁盘分区、格式化和挂载。可采用Disk Druid、RAID和LVM等方式进行分区。除此之外,在Linux系统中还有fdisk、cfdisk、parted等分区工具用于磁盘分区;使用mkfs指令进行磁盘格式化操作;使用mount命令挂载。
通常在进行磁盘挂载之前会对一块或者多块硬盘进行磁盘划分以及格式化,在对磁盘进行格式化之前需要了解磁盘文件的具体类型。在Linux中,常用的文件类型有XFS、Swap和Ext这三种。
XFS文件系统
XFS文件系统是存放文件和目录数据的分区,属于高性能的日志型文件系统,是CentOS 7系统中默认使用的文件系统。
Swap文件系统
Swap文件系统是Linux系统建立的交换分区,即存放临时数据的场所,交换分区相当于虚拟内存,能够在一定程度上缓解内存不足的问题,一般建议将交换分区的大小设置为物理内存的1.5~2倍。
Ext文件系统
Ext(Linux extended file system),即Linux扩展文件系统,分为Ext2、Ext3、Ext4。其中,Ext2称为索引式文件系统,Ext3/4称为日志式文件系统。
磁盘分区
(1)fdisk
在进行磁盘分区之前,可使用fdisk –l命令查看磁盘分布及使用情况。
fdisk -l
fdisk语法:
fdisk [必要参数] [选择参数]
必要参数:
-
-l:列出素所有分区表;
-
-u:与-l搭配使用,显示分区数目。
菜单操作说明:
-
m:显示菜单和帮助信息;
-
a:活动分区标记/引导分区;
-
d:删除分区;
-
l:显示分区类型;
-
n:新建分区;
-
p:显示分区信息;
-
q:退出不保存;
-
t:设置分区号;
-
w:保存修改;
-
x:扩展应用,高级功能。
(2)parted
也可使用parted进行磁盘分区,具体语法如下。
parted [参数] [设备]
常用参数:
-
-i:交互式模式;
-
-s:脚本模式,不提示用户;
-
-l:列出所有块设备上的分区布局;
-
-h:显示帮助信息。
例如,列出所有块设备上的分区布局
parted -l
磁盘格式化
磁盘格式是指将分区格式化成不同的文件系统。
使用命令mkfs.+Tab+Tab查看文件类型。
mkfs.
Linux mkfs命令用于在特定的分区上建立Linux文件系统。mkfs语法为:
mkfs [-V] [-t fstype] [fs-options] filesys [blocks]
参数说明:
-
device:预备检查的硬盘分区,例如:/dev/sda1;
-
-V:详细显示模式;
-
-t:给定文件系统的型式,Linux的默认值为Ext2;
-
-c:在制做档案系统前,检查该分区是否有坏道;
-
block:给定块的大小;
-
-L:建立lable。
例如,下列指令表示在/dev/sdb1上建一个ext4的文件系统,并且将过程详细列出来:
mkfs -V -t ext4 –c /dev/sdb1
磁盘的挂载
(1)挂载点目录
将磁盘切到根目录,media和mnt这两个目录叫做挂载点目录。除此之外,也可以新建一个目录作为一个挂载点目录。
(2)临时挂载
将指定的一个目录作为挂载点目录时,如果挂载点的目录有文件,那么文件会被隐藏。因此当我们需要挂载目录时,最好新建一个空文件夹来作为挂载点目录(重启后失效)。具体有以下步骤:
① 首先在根下创建一个test目录用于测试;
② 使用mount命令挂载;
(3)永久挂载
使用永久挂载,就意味着它开机会自动挂载。
① 使用blkid命令查看对应分区的UUID,UUID唯一标识每一个分区,防止错误的挂载;
② 编辑/etc/fstab文件,将挂载信息填入配置文件中;
③ 使用mount -a命令生效。
blkid命令详解
在Linux下可以使用blkid命令对查询设备上所采用文件系统的类型进行查询。blkid主要用来对系统的块设备(包括交换分区)所使用的文件系统类型、LABEL、UUID等信息进行查询。
常用语法:
blkid -L | -Ublkid [-c ] [-ghlLv] [-o] [-s ][-t ] -[w ] [ ...]blkid -p [-s ] [-O ] [-S ][-o] ...blkid -i [-s ] [-o] ...
选项参数解析:
-
-c :指定cache文件;
-
-h:显示帮助信息;
-
-o :指定输出格式;
-
-s :显示指定信息,默认显示所有信息;
-
-v:显示版本信息。
查看磁盘可用空间
(1)df
Linux中df命令的功能是用来检查Linux服务器的文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。其语法格式为:
df [选项] [文件]
df命令显示指定磁盘文件的可用空间。如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间将被显示。默认情况下,磁盘空间将以 1KB 为单位进行显示,除非环境变量 POSIXLY_CORRECT 被指定,那样将以512字节为单位进行显示。
必要参数:
-
-a:全部文件系统列表
-
-h:方便阅读方式显示
-
-H:等于“-h”,但是计算式,1K=1000,而不是1K=1024
-
-i:显示inode信息
-
-k:区块为1024字节
-
-l:只显示本地文件系统
-
-m:区块为1048576字节
-
–no-sync:忽略 sync 命令
-
-P:输出格式为POSIX
-
–sync:在取得磁盘信息前,先执行sync命令
-
-T:文件系统类型
可选参数:
-
–block-size=:指定区块大小;
-
-t:只显示选定文件系统的磁盘信息;
-
-x:不显示选定文件系统的磁盘信息;
-
–help:显示帮助信息;
-
–version:显示版本信息。
例如,
[root@xxx ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 4051608 0 4051608 0% /dev
tmpfs 4067612 0 4067612 0% /dev/shm
tmpfs 4067612 9192 4058420 1% /run
tmpfs 4067612 0 4067612 0% /sys/fs/cgroup
/dev/mapper/centos-root 95373824 1878260 93495564 2% /
/dev/mapper/centos-home 508580 25824 482756 6% /home
/dev/sda1 201380 124100 77280 62% /boot
tmpfs 813520 0 813520 0% /run/user/0
说明:
df命令的输出清单的第1列是代表文件系统对应的设备文件的路径名(一般是硬盘上的分区);第2列给出分区包含的数据块(1024字节)的数目;第3、4列分别表示已用的和可用的数据块数目(缺省的每个分区都留了少量空间供系统管理员使用,即使遇到普通用户空间已满的情况,管理员仍能登录和留有解决问题所需的工作空间);第5列“已用%” 表示普通用户空间使用的百分比,即使这一数字达到100%,分区仍然留有系统管理员使用的空间;最后一列表示文件系统的挂载点(Mounted on)。
(2)du
du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看。具体命令语法如下:
du [选项][文件]
命令参数:
-
-a或-all:显示目录中个别文件的大小。
-
-b或-bytes:显示目录或文件大小时,以byte为单位。
-
-c或–total:除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
-
-k或–kilobytes:以KB(1024bytes)为单位输出。
-
-m或–megabytes:以MB为单位输出。
-
-s或–summarize:仅显示总计,只列出最后加总的值。
-
-h或–human-readable:以K,M,G为单位,提高信息的可读性。
-
-x或–one-file-xystem:以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
-
-L或–dereference:显示选项中所指定符号链接的源文件大小。
-
-S或–separate-dirs:显示个别目录的大小时,并不含其子目录的大小。
-
-X或–exclude-from=:在指定目录或文件。
-
–exclude=:略过指定的目录或文件。
-
-D或–dereference-args:显示指定符号链接的源文件大小。
-
-H或—si:与-h参数相同,但是K,M,G是以1000为换算单位。
-
-l或–count-links:重复计算硬件链接的文件。
fdisk分区挂载实践
(1) 查看磁盘分区情况
[root@xxx ~]# fdisk -l
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 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 /dev/sda: 100 GiB, 107374182400 bytes, 209715200 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
Disklabel type: dos
Disk identifier: 0x000c4000
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 411647 409600 200M 83 Linux
/dev/sda2 411648 209070079 208658432 99.5G 8e Linux LVM
Disk /dev/mapper/centos-root: 91 GiB, 97710505984 bytes, 190840832 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 /dev/mapper/centos-swap: 8 GiB, 8589934592 bytes, 16777216 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 /dev/mapper/centos-home: 500 MiB, 524288000 bytes, 1024000 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
(2)查看块设备
[root@xxx ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 200M 0 part /boot
└─sda2 8:2 0 99.5G 0 part
├─centos-root 253:0 0 91G 0 lvm /
├─centos-swap 253:1 0 8G 0 lvm [SWAP]
└─centos-home 253:2 0 500M 0 lvm /home
sdb 8:16 0 20G 0 disk
sr0 11:0 1 7.7G 0 rom
(3) 使用fidsk命令进行分区
[root@xxx ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.32.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0xf79c6a8b.
Command (m for help): p
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 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
Disklabel type: dos
Disk identifier: 0xf79c6a8b
Command (m for help):
(4)出现等待输入命令,我们可以使用m查看选项
Command (m for help): m
Help:
DOS (MBR)
a toggle a bootable flag
b edit nested BSD disklabel
c toggle the dos compatibility flag
Generic
d delete a partition
F list free unpartitioned space
l list known partition types
n add a new partition
p print the partition table
t change a partition type
v verify the partition table
i print information about a partition
Misc
m print this menu
u change display/entry units
x extra functionality (experts only)
Script
I load disk layout from sfdisk script file
O dump disk layout to sfdisk script file
Save & Exit
w write table to disk and exit
q quit without saving changes
Create a new label
g create a new empty GPT partition table
G create a new empty SGI (IRIX) partition table
o create a new empty DOS partition table
s create a new empty Sun partition table
(5)常用参数解释
m 打印菜单
p 打印分区
n 新建分区
d 删除分区
w 保存退出
(6)新建分区
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p):
依次输入p,编号,回车,设置磁盘大小,设置完成后可以进行查看,然后进行保存。
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-41943039, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-41943039, default 41943039): +10G
Created a new partition 1 of type 'Linux' and of size 10 GiB.
Command (m for help): p
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 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
Disklabel type: dos
Disk identifier: 0x10197e56
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 20973567 20971520 10G 83 Linux
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
(7)可格式化类型及格式化
mkfs. +tab+tab查看可格式化类型
[root@xxx ~]# mkfs.
mkfs.btrfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.minix mkfs.xfs
格式化sdb1
[root@xxx ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.45.4 (23-Sep-2019)
Creating filesystem with 2621440 4k blocks and 655360 inodes
Filesystem UUID: b29b5f71-7f3c-4f5d-82ec-b66b7ba85afe
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
(8)查看格式化后磁盘信息
[root@xxx ~]# ll /dev/sdb1
brw-rw----. 1 root disk 8, 17 Jun 12 18:48 /dev/sdb1
(9)临时挂载创建
创建挂载点,使用mount命令进行挂载,查看挂在情况
[root@xxx ~]# mkdir /test
[root@xxx ~]# mount /dev/sdb1 /test
[root@xxx ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 3.9G 0 3.9G 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/mapper/centos-root xfs 91G 1.8G 90G 2% /
/dev/mapper/centos-home xfs 497M 26M 472M 6% /home
/dev/sda1 xfs 197M 122M 76M 62% /boot
tmpfs tmpfs 795M 0 795M 0% /run/user/0
/dev/sdb1 ext4 9.8G 37M 9.3G 1% /test
(10)开机自动挂载
uudi方式
查看磁盘uuid,写入/etc/fstab
[root@xxx ~]# blkid
/dev/sr0: UUID="2020-06-08-22-08-25-00" LABEL="CentOS-8-2-2004-x86_64-dvd" TYPE="iso9660" PTUUID="545ce9a4" PTTYPE="dos"
/dev/sdb1: UUID="b29b5f71-7f3c-4f5d-82ec-b66b7ba85afe" TYPE="ext4" PARTUUID="10197e56-01"
/dev/sda1: UUID="84a8d57f-d656-4b7f-8bb0-3ca385cd6b04" TYPE="xfs" PARTUUID="000c4000-01"
/dev/sda2: UUID="9Pa9EI-MEQ1-mXYv-PO2e-bmh8-zY04-ydncVa" TYPE="LVM2_member" PARTUUID="000c4000-02"
/dev/mapper/centos-root: UUID="60f9c108-b1eb-4347-8739-94034599329c" TYPE="xfs"
/dev/mapper/centos-swap: UUID="2e29e708-8201-4d6f-8f18-09e670c48a5c" TYPE="swap"
/dev/mapper/centos-home: UUID="d70b04a1-1e50-4384-9a46-b06f506e484a" TYPE="xfs"
[root@xxx ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Mon Oct 23 12:02:53 2023
#
# 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=84a8d57f-d656-4b7f-8bb0-3ca385cd6b04 /boot xfs defaults 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
b29b5f71-7f3c-4f5d-82ec-b66b7ba85afe /test defaults ext4 0 0
磁盘名称方式挂载
[root@xxx ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Mon Oct 23 12:02:53 2023
#
# 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=84a8d57f-d656-4b7f-8bb0-3ca385cd6b04 /boot xfs defaults 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/dev/sdb1 /test ext4 defaults 0 0