目录
实验环境:
虚拟机:VMware Workstation Pro
OS:Anolis 7.9
机器配置:1核CPU,1GB内存
一、查看磁盘分区
语法结构:
lsblk
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
└─ao-root 253:0 0 19G 0 lvm /
sdb 8:16 0 10G 0 disk
├─sdb1 8:17 0 2G 0 part
├─sdb2 8:18 0 1G 0 part
├─sdb3 8:19 0 1K 0 part
└─sdb5 8:21 0 4G 0 part
sr0 11:0 1 1.2G 0 rom
输出结果解释说明:
- NAME:磁盘名,通常以/dev开头,sr0表示系统上的光驱(CD/DVD 驱动器)
- MAJ:MIN:主设备号和次设备号,用于唯一标识设备
- RM:如果是可移动设备(如 USB 驱动器),此列显示 "1";否则为 "0"
- SIZE:设备的总容量
- RO:如果是只读设备,此列会显示 "1";否则为 "0"
- TYPE:设备的类型,如 disk(硬盘)、part(分区)、lvm(卷组)
- MOUNTPOINT:如果设备被挂载到文件系统上,这一列会显示挂载点;否则为空白
二、磁盘格式化
为什么要做磁盘格式化?
磁盘格式化是准备磁盘存储空间以供使用的过程,它创建了文件系统和磁盘上数据的组织结构。磁盘格式化就像是给你的新硬盘或分区做一次“大扫除”和“装修”,让它准备好存东西。这个过程会清空硬盘上的所有旧文件,然后设置好架子和抽屉(也就是文件系统),让你的电脑能认出这块硬盘,知道怎么在里边存文件。但要注意,格式化会删掉硬盘里所有的东西,所以在格式化之前一定要做好备份。简单来说,格式化就是让硬盘变得干净、有序,准备好存新数据。
什么是磁盘文件系统?
磁盘文件系统是用于管理硬盘驱动器或其他持久存储设备上数据存储和访问的系统。它定义了数据如何在磁盘上组织、命名和访问。磁盘文件系统就像是一个图书馆的图书分类系统,它帮助电脑把文件(比如文档、照片和视频)整齐地存放在硬盘这个“大书架”上。这样,当你想要找到某个文件时,文件系统就能快速地帮你定位到它的位置,让你能够轻松读取或者修改。同时,它还确保每个文件都安全地保存着,即使电脑关闭了,文件也不会丢失。不同的文件系统就像不同的图书分类方法,有的适合快速查找,有的适合存储大量数据,各有特点,适用于不同的场景。
常见的磁盘文件系统包括:
- XFS:高性能文件系统,特别适合大量数据和高并发操作。
- ext系列:ext2、ext3、ext4,Linux系统的主要文件系统,以高可靠性和性能著称。
- FAT系列:FAT12、FAT16、FAT32,广泛用于Windows系统和移动设备。
- NTFS:Windows的先进文件系统,支持大容量硬盘和高级数据管理功能。
- APFS:苹果文件系统,用于macOS High Sierra及更高版本,优化了闪存和固态硬盘的性能。
1. 查看磁盘文件系统
语法结构:
lsblk -f
# lsblk -f,f参数代表输出文件系统类型
[root@localhost ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 01f7b6b8-98d3-4690-ba56-38b8845fbe04 /boot
└─sda2 LVM2_member 4hpQJP-0DCZ-MXO4-xej7-Bhc9-PXAp-op5Ugm
└─ao-root xfs b257bddf-34c7-4ec5-9c2f-ee2da057cf84 /
sdb
├─sdb1
├─sdb2
├─sdb3
└─sdb5
sr0 iso9660 anolis-7-x86_64-dvd 2022-05-27-10-32-18-00
输出结果解释说明:
- NAME:磁盘名,通常以/dev开头,sr0表示系统上的光驱(CD/DVD 驱动器)
- FSTYPE:文件系统类型,包括xfs、ext4、ext3等,没有文件系统此列为空
- LABEL:分区的标签,如果有标签是用户为分区设置的可读标识
- UUID:分区的唯一标识符,UUID 是分区在系统上唯一标识的字符串
- MOUNTPOINT:分区挂载的位置,如果分区未挂载,此列可能为空
2. 格式化磁盘
2.1 xfs文件系统
语法结构:
mkfs.xfs -f /dev/磁盘名
# f参数代表输出文件系统类型
[root@localhost ~]# mkfs.xfs -f /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=131072 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=0
data = bsize=4096 blocks=524288, 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
# 验证/dev/sdb1的FSTYPE列格式化为xfs
[root@localhost ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 01f7b6b8-98d3-4690-ba56-38b8845fbe04 /boot
└─sda2 LVM2_member 4hpQJP-0DCZ-MXO4-xej7-Bhc9-PXAp-op5Ugm
└─ao-root xfs b257bddf-34c7-4ec5-9c2f-ee2da057cf84 /
sdb
├─sdb1 xfs 0ad61bc8-1683-4428-9606-3923882b3001
├─sdb2
├─sdb3
└─sdb5
sr0 iso9660 anolis-7-x86_64-dvd 2022-05-27-10-32-18-00
输出结果解释说明:
- meta-dat行:显示文件系统元数据的信息,包括文件系统的设备路径、inode大小(isize)、分配组数量(agcount)、分配组大小(agsize)等
- data行:显示数据块的信息,包括块大小(bsize)、总块数(blocks)、inode最大百分比(imaxpct)等
- naming行:指定文件命名方案的版本和相关的信息
- log行:显示日志的信息,包括日志块大小(bsize)、总块数(blocks)等
- realtime行:显示实时子卷(realtime volume)的信息,此示例中未使用
2.2 ext4文件系统
语法结构:
mkfs.ext4 /dev/磁盘名
[root@localhost ~]# mkfs.ext4 /dev/sdb2
mke2fs 1.43.5 (04-Aug-2017)
Creating filesystem with 262144 4k blocks and 65536 inodes
Filesystem UUID: 4596cbb6-8bc6-45db-9e5c-a3cdf9a8ee85
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
# 验证/dev/sdb2的FSTYPE列格式化为ext4
[root@localhost ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 01f7b6b8-98d3-4690-ba56-38b8845fbe04 /boot
└─sda2 LVM2_member 4hpQJP-0DCZ-MXO4-xej7-Bhc9-PXAp-op5Ugm
└─ao-root xfs b257bddf-34c7-4ec5-9c2f-ee2da057cf84 /
sdb
├─sdb1 xfs 0ad61bc8-1683-4428-9606-3923882b3001
├─sdb2 ext4 4596cbb6-8bc6-45db-9e5c-a3cdf9a8ee85
├─sdb3
└─sdb5
sr0 iso9660 anolis-7-x86_64-dvd 2022-05-27-10-32-18-00
输出结果解释说明:
- mke2fs 1.43.5 (04-Aug-2017)行:显示正在使用的 mke2fs 版本和日期
- Creating filesystem行:显示正在创建文件系统,包含多少个4KB
- Filesystem UUID行:显示新创建文件系统的UUID
- Superblock backups stored on blocks行:显示文件系统超级块备份位置 ,用于文件系统的恢复和修复
- Allocating group tables行:分配组表完成
- Writing inode tables行:写入inode表完成
- Creating journal (65536 blocks)行:创建日志完成
- Writing superblocks and filesystem accounting information行:写入超级块和文件系统账号信息完成
2.3 ext3文件系统
语法结构:
mkfs.ext3 /dev/磁盘名
[root@localhost ~]# mkfs.ext3 /dev/sdb5
mke2fs 1.43.5 (04-Aug-2017)
Creating filesystem with 1048576 4k blocks and 262144 inodes
Filesystem UUID: 6f96af42-ae5c-42c7-9730-7483f4165964
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
# 验证/dev/sdb5的FSTYPE列格式化为ext3
[root@localhost ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 01f7b6b8-98d3-4690-ba56-38b8845fbe04 /boot
└─sda2 LVM2_member 4hpQJP-0DCZ-MXO4-xej7-Bhc9-PXAp-op5Ugm
└─ao-root xfs b257bddf-34c7-4ec5-9c2f-ee2da057cf84 /
sdb
├─sdb1 xfs 0ad61bc8-1683-4428-9606-3923882b3001
├─sdb2 ext4 4596cbb6-8bc6-45db-9e5c-a3cdf9a8ee85
├─sdb3
└─sdb5 ext3 6f96af42-ae5c-42c7-9730-7483f4165964
sr0 iso9660 anolis-7-x86_64-dvd 2022-05-27-10-32-18-00
三、磁盘挂载
为什么要进行磁盘挂载?
Linux OS中一切皆文件。如果要访问存储设备中的文件,必须将文件挂载到一个已存在的目录上,通过访问目录来访问存储设备。磁盘挂载就是将设备放在一个目录上,让系统可以使用此设备中的文件。
可挂载的设备通常是磁盘上的分区,但在某些情况下,整个磁盘(如果没有分区或只有一个分区)也可以被挂载。挂载点可以是系统中的/mnt目录或创建的目录。一个目录只允许挂载一个设备,多个设备挂载到同一个挂载点无意义。
磁盘设备只有先格式化后才能挂载,挂载设备就是使用此设备。 磁盘挂载前未进行格式化,报如下错误:
# /dev/sdb3未被格式化
[root@localhost ~]# lsblk -f /dev/sdb3
NAME FSTYPE LABEL UUID MOUNTPOINT
sdb3
# 临时挂载/dev/sdb3到新建的/music报错
[root@localhost ~]# mount /dev/sdb3 /music
mount: /dev/sdb3 is write-protected, mounting read-only
mount: unknown filesystem type '(null)'
1. 临时挂载
语法结构:
mount [参数] 挂载设备 挂载点
[常用参数]:
-t:指定文件系统类型(如未指定 mount 命令将自动检测并确定)
-o:指定文件系统属性(rw 读写、ro 只读、remount 重新挂载)
-a:检测挂载是否成功(永久挂载时使用,为了使永久挂载生效)
案例1
挂载/dev/sdb1设备到/date目录
a. 格式化/dev/sdb1(已经格式化过不需要重复操作):
[root@localhost ~]# mkfs.xfs -f /dev/sdb1
b. 挂载/dev/sdb到/date目录:
# 创建/date目录
[root@localhost ~]# mkdir /date
# 临时挂载/dev/sdb1分区到/date
[root@localhost ~]# mount /dev/sdb1 /date
c. 检查挂载成功:
# 验证sdb1的MOUNTPOINT已挂载到/date目录
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
└─ao-root 253:0 0 19G 0 lvm /
sdb 8:16 0 10G 0 disk
├─sdb1 8:17 0 2G 0 part /date
├─sdb2 8:18 0 1G 0 part
├─sdb3 8:19 0 1K 0 part
└─sdb5 8:21 0 4G 0 part
sr0 11:0 1 1.2G 0 rom
案例2
以只读的方式挂载/dev/sdb2到/music
a. 格式化/dev/sdb2(已经格式化过不需要重复操作):
[root@localhost ~]# mkfs.ext4 /dev/sdb2
b. 以只读的方式临时挂载:
# 创建/music目录
[root@localhost ~]# mkdir /music
# -o参数指定文件系统属性为ro只读,将/dev/sdb2分区挂载到/music
[root@localhost ~]# mount -o ro /dev/sdb2 /music
# 验证sdb2的MOUNTPOINT已挂载到/music目录
[root@localhost ~]# lsblk -f /dev/sdb2
NAME FSTYPE LABEL UUID MOUNTPOINT
sdb2 ext4 4596cbb6-8bc6-45db-9e5c-a3cdf9a8ee85 /music
c. 验证磁盘是否只读:
[root@localhost ~]# touch /date/{a,b}
touch: cannot touch ‘/date/a’: Read-only file system
touch: cannot touch ‘/date/b’: Read-only file system
案例3
NFS共享挂载到本地文件系统
a. 安装NFS软件及依赖,创建共享目录/shared并赋予权限:
# 安装nfs软件包和其依赖项
[root@localhost ~]# yum -y install nfs-utils nfs-utils-lib
# 创建共享目录
[root@localhost ~]# mkdir /shared
# 赋予读写执行权限
[root@localhost ~]# chmod -R 777 /shared
b. 配置文件添加信息,并启动nfs服务:
# 设置NFS(网络文件系统)的共享目录
[root@localhost ~]# echo "/shared 127.0.0.1(rw,sync,no_subtree_check)" >> /etc/exports
# 重新加载NFS配置,如以下报错需启动nfs服务
[root@localhost ~]# exportfs -r
exportfs: 127.0.0.1:/shared: Function not implemented
# 启动服务
[root@localhost ~]# systemctl start nfs-server
/etc/exports文件内容解释说明:
- /shared:要共享的目录路径,指定一个已经存在的目录,以便将其共享给网络上的其他计算机。
- 127.0.0.1:允许访问共享目录的客户端的 IP 地址。
- (rw,sync,no_subtree_check):一组选项,定义共享目录的权限和行为
- rw:允许读写权限,客户端可以读取共享目录中的文件,也可以向其中写入文件。
- sync:同步写入,NFS 服务器在回复客户端之前会确保所有的写操作都已经同步到磁盘上,确保数据的一致性。
- no_subtree_check:禁用子树检查(subtree_check),可以提高性能,但可能会在某些情况下带来安全风险,特别是当共享目录被移动或重命名时。
c. 将nfs服务器中的/shared目录挂载到/date目录共于本地使用:
# 创建/mnt/date目录,不能将NFS共享挂载到设备文件上
[root@localhost ~]# mkdir /mnt/date
# 挂载本地/shared NFS网络文件系统到/mnt/date目录
[root@localhost ~]# mount -t nfs localhost:/shared /mnt/date
# 查看本地/shared已经被挂载到/mnt/date目录
[root@localhost ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 474M 0 474M 0% /dev
tmpfs tmpfs 487M 0 487M 0% /dev/shm
tmpfs tmpfs 487M 7.7M 479M 2% /run
tmpfs tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/ao-root xfs 19G 1.7G 18G 9% /
/dev/sda1 xfs 1014M 142M 873M 14% /boot
tmpfs tmpfs 98M 0 98M 0% /run/user/0
localhost:/shared nfs4 19G 1.7G 18G 9% /mnt/date
挂载NFS文件系统命令解释说明:
- -t nfs:
- -t :指定挂载的文件系统类型
- nfs :指定文件系统类型为NFS
- localhost/shared:NFS服务器上的共享目录路径
localhost:NFS服务器是本地/shared:NFS服务器上配置好的共享目录- /mnt/date:本地文件系统中的挂载点,即 NFS 共享将被挂载到的本地目录路径
d. 验证:
# 查看/shared和/mnt/date目录为空
[root@localhost ~]# ls /shared/
[root@localhost ~]# ls /mnt/date/
# /mnt/date目录下创建test_1.txt文件,查看两个目录都存在
[root@localhost ~]# touch /mnt/date/test_1.txt
[root@localhost ~]# ls /mnt/date/
test_1.txt
[root@localhost ~]# ls /shared/
test_1.txt
# 将/share目录下test_1.txt改名为test_3txt,查看两个目录都已改名
[root@localhost ~]# mv /shared/test_1.txt /shared/test_3.txt
[root@localhost ~]# ls /mnt/date/
test_3.txt
[root@localhost ~]# ls /shared/
test_3.txt
注意:
如果将磁盘格式化为特定类型,在挂载时就应该使用相应的文件系统类型。
2. 永久挂载
永久挂载设备的文件:
/etc/fstab
[root@localhost ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Tue Dec 3 17:08:01 2024
#
# 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/ao-root / xfs defaults 0 0
UUID=01f7b6b8-98d3-4690-ba56-38b8845fbe04 /boot xfs defaults 0 0
参数列解释说明:
- 第1列:指定要挂载的文件系统的设备或者特殊文件名。如设备文件路径、UUID、LABEL(分区标签)、NFS/其他网络文件系统的地址
- 第2列:指定文件系统被挂载到的目录路径。一个已存在的目录,用于访问文件系统的内容
- 第3列:指定文件系统的类型,例如ext3、ext4、xfs、nfs等
- 第4列:指定文件系统的挂载,包括控制文件系统行为的各种参数
- ro:只读挂载
- rw:读写挂载
- noexec:不允许执行二进制文件
- nosuid:不允许setuid和setgid位
- 第5列:选择对文件系统进行备份,0表示不备份,1表示1天备份1次,2代表2天备份1次
- 第6列:选择是否对文件系统进行检查,0表示不检查,1表示先检查,2表示后检查
案例
以只读的方式挂载/dev/sdb1到/date
a. /etc/fstab配置文件添加最后一行参数:
[root@localhost ~]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Tue Dec 3 17:08:01 2024
#
# 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/ao-root / xfs defaults 0 0
UUID=01f7b6b8-98d3-4690-ba56-38b8845fbe04 /boot xfs defaults 0 0
/dev/sdb1 /date xfs ro 0 0
b. 重新加载配置:
[root@localhost ~]# mount -a
或者
[root@localhost ~]# reboot
c. 验证:
[root@localhost ~]# touch /date/test1
touch: cannot touch ‘/date/test1’: Read-only file system
四、卸载挂载
1. 取消临时挂载
语法结构:
umount 挂载点
案例
a. 临时挂载设备:
[root@localhost ~]# mkdir /music
[root@localhost ~]# mount /dev/sdb2 /music
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
└─ao-root 253:0 0 19G 0 lvm /
sdb 8:16 0 10G 0 disk
├─sdb1 8:17 0 2G 0 part /date
├─sdb2 8:18 0 1G 0 part /music
├─sdb3 8:19 0 1K 0 part
└─sdb5 8:21 0 4G 0 part
sr0 11:0 1 1.2G 0 rom
b. 取消挂载:
[root@localhost ~]# umount /music
c. 验证取消挂载成功:
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
└─ao-root 253:0 0 19G 0 lvm /
sdb 8:16 0 10G 0 disk
├─sdb1 8:17 0 2G 0 part /date
├─sdb2 8:18 0 1G 0 part
├─sdb3 8:19 0 1K 0 part
└─sdb5 8:21 0 4G 0 part
sr0 11:0 1 1.2G 0 rom
2. 取消永久挂载
案例
a. 注释或删除/etc/fstab文件添加行:
[root@localhost ~]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Tue Dec 3 17:08:01 2024
#
# 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/ao-root / xfs defaults 0 0
UUID=01f7b6b8-98d3-4690-ba56-38b8845fbe04 /boot xfs defaults 0 0
# /dev/sdb1 /date xfs ro 0 0
b. 重新加载配置:
[root@localhost ~]# mount -a
c. 重启服务器:
[root@localhost ~]# reboot
本文介绍了Linux系统下磁盘操作,包括查看磁盘分区(lsblk)、磁盘格式化(涉及xfs、ext4、ext3等文件系统)、磁盘挂载(临时和永久挂载)以及卸载挂载。详细说明了各操作的语法结构、输出结果解释和相关案例,还提及实验环境和注意事项。
3954

被折叠的 条评论
为什么被折叠?



