目录
实验环境:
虚拟机:VMware Workstation Pro
OS:Anolis 7.9
机器配置:1核CPU,1GB内存
一、查看磁盘分区状况
- 系统磁盘设备文件:
ls /dev/sd*
[root@localhost ~]# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sdb
输出结果解释说明:
- /dev/sda1和/dev/sda2是/dev/sda磁盘的分区(使用MBR分区表)
- /dev/sdb:新添加的磁盘未进行分区
- 以树状型的形式显示磁盘分区:
lsblk
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 49G 0 part
├─ao-root 253:0 0 45G 0 lvm /
└─ao-home 253:1 0 4G 0 lvm /home
sdb 8:16 0 50G 0 disk
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:如果设备被挂载到文件系统上,这一列会显示挂载点;否则为空白
- 显示MBR分区的磁盘详细信息:
fdisk -l /dev/sd*
[root@localhost ~]# fdisk -l /dev/sd*
Disk /dev/sda: 53.7 GB, 53687091200 bytes, 104857600 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: 0x000833fe
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 104857599 51379200 8e Linux LVM
Disk /dev/sda1: 1073 MB, 1073741824 bytes, 2097152 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/sda2: 52.6 GB, 52612300800 bytes, 102758400 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/sdb: 53.7 GB, 53687091200 bytes, 104857600 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和Disk /dev/sdb:表示两个硬盘设备。“:”后分别表示磁盘容量、字节数、扇区总数(硬盘上的最小数据存储单元)
- 显示MBR分区的磁盘详细信息:
gdisk -l /dev/sd*
[root@localhost ~]# gdisk -l /dev/sd* #默认未安装
-bash: gdisk: command not found
[root@localhost ~]# yum -y install gdisk
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package gdisk.x86_64 0:0.8.10-3.an7 will be installed
--> Finished Dependency Resolution
......
Installed:
gdisk.x86_64 0:0.8.10-3.an7
Complete!
[root@localhost ~]# gdisk -l /dev/sd* #没有使用GPT分区
GPT fdisk (gdisk) version 0.8.10
Usage: gdisk [-l] device_file
磁盘分区的分配采用MBR和GPT分区表具体流程可跳转至:
Linux磁盘管理:分配磁盘分区和格式化磁盘-2_linux分配磁盘空间-CSDN博客
二、格式化磁盘
作用:为磁盘或者分区添加文件系统
1. 查看磁盘文件系统格式
lsblk -f #-f参数表示输出文件系统相关信息
[root@localhost ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs cf57b02b-e917-4b47-8f84-df02e6d3f8a1 /boot
└─sda2 LVM2_member 3CHfwi-D5ru-KrRW-cPfJ-u0Oe-3Nk0-h5eaem
├─ao-root xfs 7f75d2f9-81c9-4eb5-9157-5adf4acda6e8 /
└─ao-home xfs 46bfc22c-1a68-455e-acbb-1fc4664f816a /home
sdb
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:分区挂载的位置,如果分区未挂载,此列可能为空
扩展:什么是文件系统?
详情请转至Linux磁盘管理:磁盘相关基础知识-1-CSDN博客
2. 格式化磁盘命令
- 创建xfs文件系统:
mkfs.xfs -f 磁盘名 #-f参数表示输出文件系统相关信息
[root@localhost ~]# mkfs.xfs -f /dev/sdb
meta-data=/dev/sdb isize=512 agcount=4, agsize=3276800 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=0
data = bsize=4096 blocks=13107200, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=6400, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost ~]# lsblk -f #查看sdb的FSTYPE为xfs
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs cf57b02b-e917-4b47-8f84-df02e6d3f8a1 /boot
└─sda2 LVM2_member 3CHfwi-D5ru-KrRW-cPfJ-u0Oe-3Nk0-h5eaem
├─ao-root xfs 7f75d2f9-81c9-4eb5-9157-5adf4acda6e8 /
└─ao-home xfs 46bfc22c-1a68-455e-acbb-1fc4664f816a /home
sdb xfs 2b7977fc-b99c-45ae-83f7-af9950623675
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行:显示实时子卷的信息,但在此示例中未使用
- 创建ext4文件系统:
mkfs.ext4 磁盘名
[root@localhost ~]# mkfs.ext4 /dev/sdb
mke2fs 1.43.5 (04-Aug-2017)
/dev/sdb contains a xfs file system
Proceed anyway? (y,N) y
Creating filesystem with 13107200 4k blocks and 3276800 inodes
Filesystem UUID: 9722a9b8-b825-41f8-b8f3-33055e6ee61e
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424
Allocating group tables: done
Writing inode tables: done
Creating journal (65536 blocks): done
Writing superblocks and filesystem accounting information: done
[root@localhost ~]# lsblk -f #查看sdb的FSTYPE为ext4
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs cf57b02b-e917-4b47-8f84-df02e6d3f8a1 /boot
└─sda2 LVM2_member 3CHfwi-D5ru-KrRW-cPfJ-u0Oe-3Nk0-h5eaem
├─ao-root xfs 7f75d2f9-81c9-4eb5-9157-5adf4acda6e8 /
└─ao-home xfs 46bfc22c-1a68-455e-acbb-1fc4664f816a /home
sdb ext4 9722a9b8-b825-41f8-b8f3-33055e6ee61e
sr0 iso9660 anolis-7-x86_64-dvd 2022-05-27-10-32-18-00
输出结果解释说明:
- mke2fs 1.43.5 (04-Aug-2017):显示正在使用的 mke2fs 版本和日期
- Creating filesystem with行:显示正在创建文件系统,包含多少个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行:写入超级块和文件系统账号信息完成
- 创建cext3文件系统:
mkfs.ext3 磁盘名
[root@localhost ~]# mkfs.ext3 /dev/sdb
mke2fs 1.43.5 (04-Aug-2017)
/dev/sdb contains a ext4 file system
created on Mon Jan 8 16:46:55 2024
Proceed anyway? (y,N) y
Creating filesystem with 13107200 4k blocks and 3276800 inodes
Filesystem UUID: 2bada593-2706-4652-a37c-bfc2224852d0
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424
Allocating group tables: done
Writing inode tables: done
Creating journal (65536 blocks): done
Writing superblocks and filesystem accounting information: done
[root@localhost ~]# lsblk -f #查看sdb的FSTYPE为ext3
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs cf57b02b-e917-4b47-8f84-df02e6d3f8a1 /boot
└─sda2 LVM2_member 3CHfwi-D5ru-KrRW-cPfJ-u0Oe-3Nk0-h5eaem
├─ao-root xfs 7f75d2f9-81c9-4eb5-9157-5adf4acda6e8 /
└─ao-home xfs 46bfc22c-1a68-455e-acbb-1fc4664f816a /home
sdb ext3 2bada593-2706-4652-a37c-bfc2224852d0
sr0 iso9660 anolis-7-x86_64-dvd 2022-05-27-10-32-18-00
三、磁盘挂载
Linux OS中一切皆文件。如果要访问存储设备中的文件,必须将文件挂载到一个已存在的目录上,通过访问目录来访问存储设备。磁盘挂载就是将设备放在一个目录上,让系统可以使用此设备中的文件。
磁盘设备只有先格式化后才能挂载,挂载设备就是使用此设备。可挂载的设备为磁盘/分区,如果将磁盘进行了分区,那么只能挂载分区。挂载点可以是系统中的/mnt目录或创建的目录。一个目录只允许挂载一个设备,多个设备挂载到同一个挂载点无意义。
磁盘挂载前未进行格式化,报如下错误:
[root@localhost ~]# mount /dev/sdb /
mount: /dev/sdb is write-protected, mounting read-only
mount: unknown filesystem type '(null)'
1. 临时挂载
语法结构:
mount [参数] 挂载设备 挂载点
[常用参数]:
-t:指定文件系统类型(如未指定 mount 命令将自动检测并确定)
-o:指定文件系统属性(rw 读写、ro 只读、remount 重新挂载)
-a:检测挂载是否成功(永久挂载时使用,为了使永久挂载生效)
案例
1.挂载/dev/sdb设备到/date目录:
a.格式化/dev/sdb:
[root@localhost ~]# mkfs.xfs -f /dev/sdb
meta-data=/dev/sdb isize=512 agcount=4, agsize=3276800 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=0
data = bsize=4096 blocks=13107200, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=6400, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
b.挂载/dev/sdb到/date目录:
[root@localhost ~]# mkdir /date
[root@localhost ~]# mount /dev/sdb /date
c.检查挂载成功:
[root@localhost ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 2.1G 0 2.1G 0% /dev
tmpfs tmpfs 2.1G 0 2.1G 0% /dev/shm
tmpfs tmpfs 2.1G 12M 2.1G 1% /run
tmpfs tmpfs 2.1G 0 2.1G 0% /sys/fs/cgroup
/dev/mapper/ao-root xfs 45G 1.6G 44G 4% /
/dev/sda1 xfs 1014M 142M 873M 14% /boot
/dev/mapper/ao-home xfs 4.0G 33M 4.0G 1% /home
tmpfs tmpfs 423M 0 423M 0% /run/user/0
/dev/sdb xfs 50G 33M 50G 1% /date
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 49G 0 part
├─ao-root 253:0 0 45G 0 lvm /
└─ao-home 253:1 0 4G 0 lvm /home
sdb 8:16 0 50G 0 disk /date
sr0 11:0 1 1.2G 0 rom
2.以只读的方式挂载/dev/sdb到/date:
a.取消被挂载的/dev/sdb磁盘(注意如有数据需备份数据):
[root@localhost ~]# umount /dev/sdb
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 49G 0 part
├─ao-root 253:0 0 45G 0 lvm /
└─ao-home 253:1 0 4G 0 lvm /home
sdb 8:16 0 50G 0 disk
sr0 11:0 1 1.2G 0 rom
b.以只读的方式挂载:
[root@localhost ~]# mount -o ro /dev/sdb /date
[root@localhost ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 2.1G 0 2.1G 0% /dev
tmpfs tmpfs 2.1G 0 2.1G 0% /dev/shm
tmpfs tmpfs 2.1G 12M 2.1G 1% /run
tmpfs tmpfs 2.1G 0 2.1G 0% /sys/fs/cgroup
/dev/mapper/ao-root xfs 45G 1.6G 44G 4% /
/dev/sda1 xfs 1014M 142M 873M 14% /boot
/dev/mapper/ao-home xfs 4.0G 33M 4.0G 1% /home
tmpfs tmpfs 423M 0 423M 0% /run/user/0
/dev/sdb xfs 50G 240K 50G 1% /date
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.使用-t参数访问nfs文件系统:
a.本地安装nfs软件包,并创建共享目录/shared:
[root@localhost ~]# yum -y install nfs-utils nfs-utils-lib #安装nfs软件包和其依赖项
[root@localhost ~]# mkdir /shared #创建共享目录
[root@localhost ~]# chmod -R 777 /shared #赋予权限
b.配置文件添加信息,并启动nfs服务:
[root@localhost ~]# echo "/shared 127.0.0.1(rw,sync,no_subtree_check)" >> /etc/exports
[root@localhost ~]# exportfs -a #重新加载NFS配置报错如下
exportfs: localhost:/shared: Function not implemented
[root@localhost ~]# systemctl start nfs-server #启动服务
/etc/exports文件内容解释说明:
- /shared:允许访问nfs共享的目录
- 127.0.0.1:允许访问nfs共享的客户端IP地址
- rw:读写权限
- sync:同步写入
- no_subtree_check:禁用子树检查
c.将nfs服务器中的/shared目录挂载到/date目录共于本地使用:
[root@localhost ~]# umount /dev/sdb #取消/dev/sdb磁盘的挂载(上述实验挂载到了/date目录)
[root@localhost ~]# mount -t nfs localhost:/shared /date
[root@localhost ~]# df -TH
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 2.2G 0 2.2G 0% /dev
tmpfs tmpfs 2.3G 0 2.3G 0% /dev/shm
tmpfs tmpfs 2.3G 13M 2.3G 1% /run
tmpfs tmpfs 2.3G 0 2.3G 0% /sys/fs/cgroup
/dev/mapper/ao-root xfs 49G 1.8G 47G 4% /
/dev/sda1 xfs 1.1G 149M 916M 14% /boot
/dev/mapper/ao-home xfs 4.3G 34M 4.3G 1% /home
tmpfs tmpfs 443M 0 443M 0% /run/user/0
localhost:/shared nfs4 49G 1.8G 47G 4% /date
挂载nfs文件系统命令解释说明:
- localhost:nfs服务器地址
- /shared:nfs服务器共享目录
- /date:本地系统上用于挂载远程共享目录的目录
d.挂载正常使用,/shared挂载完成后可以在本地文件系统中使用/date访问和操作远程文件,任何对/date目录的操作都会影响到远程共享目录:
[root@localhost ~]# ls /shared/
[root@localhost ~]# ls /date/
[root@localhost ~]# touch /date/a
[root@localhost ~]# ls /shared/
a
注意:如果将磁盘格式化为特定类型,在挂载时就应该使用相应的文件系统类型。
2. 永久挂载
永久挂载设备的文件:/etc/fstab
[root@localhost ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Fri Dec 22 09:41:17 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/ao-root / xfs defaults 0 0
UUID=cf57b02b-e917-4b47-8f84-df02e6d3f8a1 /boot xfs defaults 0 0
/dev/mapper/ao-home /home xfs defaults 0 0
文件参数列解释说明:
- 第1列:指定要挂载的文件系统的设备或者特殊文件名。如设备文件路径(如/dev/mapper/ao-root)、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表示后检查
案例
1.将/dev/sdb以只读的方式永久挂载到/date:
a.在/etc/fstab配置文件添加参数:
[root@localhost ~]# vim /etc/fstab
/dev/sdb /date xfs ro 0 0
b.生效挂载:
[root@localhost ~]# mount -a
或者
[root@localhost ~]# reboot
c.检测是否以只读的方式挂载:
[root@localhost ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 2.1G 0 2.1G 0% /dev
tmpfs tmpfs 2.1G 0 2.1G 0% /dev/shm
tmpfs tmpfs 2.1G 12M 2.1G 1% /run
tmpfs tmpfs 2.1G 0 2.1G 0% /sys/fs/cgroup
/dev/mapper/ao-root xfs 45G 1.7G 44G 4% /
/dev/sda1 xfs 1014M 142M 873M 14% /boot
/dev/mapper/ao-home xfs 4.0G 33M 4.0G 1% /home
tmpfs tmpfs 423M 0 423M 0% /run/user/0
/dev/sdb xfs 50G 240K 50G 1% /date
[root@localhost ~]# touch /date/a
touch: cannot touch ‘/date/a’: Read-only file system
四、卸载挂载
1. 取消临时挂载
语法结构:
umount 挂载设备/挂载点
案例
a.查看挂载设备:
[root@localhost ~]# mount /dev/sdb /date
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 49G 0 part
├─ao-root 253:0 0 45G 0 lvm /
└─ao-home 253:1 0 4G 0 lvm /home
sdb 8:16 0 50G 0 disk /date
sr0 11:0 1 1.2G 0 rom
b.取消挂载:
[root@localhost ~]# umount /date
c.检测挂载取消成功:
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 49G 0 part
├─ao-root 253:0 0 45G 0 lvm /
└─ao-home 253:1 0 4G 0 lvm /home
sdb 8:16 0 50G 0 disk
sr0 11:0 1 1.2G 0 rom
2. 取消永久挂载
删除或注释/etc/fstab文件中添加信息,执行mount -a后再重启服务器
案例
a.注释/etc/fstab文件手动添加的行:
[root@localhost ~]# vim /etc/fstab #删除该配置文件中手动添加的此行或注释此行
#/dev/sdb /date xfs ro 0 0
b.生效挂载:
[root@localhost ~]# mount -a
c.重启服务器:
[root@localhost ~]# reboot