Linux磁盘挂载
Linux磁盘挂载
硬盘分区表
硬盘分区表是存储在硬盘上的一种数据结构,它定义了硬盘上各个分区的位置、大小、类型和其他属性。硬盘分区表是操作系统识别和管理硬盘分区的基础,它对于硬盘的使用和维护起到关键作用。
分区表类型
主要有两种类型的硬盘分区表
- MBR(Master Boot Record-主引导记录): 传统的分区方案,广泛用于PC兼容机上。
- GPT(GUID Partition Table-全局唯一标识分区表): 较新的分区方案,提供更多的功能和更好的兼容性。
MBR(Master Boot Record)
组成:
主引导记录(MBR): 位于硬盘的第一个扇区,包含引导加载程序和分区表。
分区表: 位于MBR中,最多可以包含4个主分区的记录。
引导扇区: 对于活动分区,包含操作系统的引导程序。
特点:
最多支持4个主分区,或者3个主分区加上一个扩展分区(扩展分区可以包含多个逻辑分区)。
支持的最大磁盘容量为2TB。
MBR只有一个分区表,如果此表损坏,可能会导致整个硬盘上的数据无法访问。
MBR与几乎所有操作系统和旧硬件兼容,包括Windows XP及其更早版本、Mac OS X 10.4及更早版本。
GPT(GUID Partition Table)
组成:
保护MBR(Protective MBR): 为了兼容不支持GPT的引导程序,GPT硬盘通常在第一个扇区包含一个保护MBR。
GPT头: 位于硬盘的第二个扇区,定义了分区表的布局。
分区表: 位于GPT头之后,可以包含多个分区记录。
备份GPT头和分区表: 位于硬盘的末尾,用于冗余和恢复。
特点:
最多支持128个主分区。
理论上支持的最大磁盘容器可达9.4ZB
GPT备份了多个分区表的副本,提高了数据的安全性。
使用GUID(全局唯一标识符)来唯一标识每个分区。
GPT不被所有操作系统和旧硬件支持,如Windows XP 32位版本。
分区表的作用
- 定义分区边界: 指定每个分区的起始和结束位置。
- 标识分区类型: 告诉操作系统每个分区的用途,如系统分区、数据分区等。
- 引导加载: 对于活动分区,分区表包含引导记录,用于启动操作系统。
分区表的管理
分区表的管理通常使用工具来创建、删除、调整分区大小,以及更改分区的类型和属性
- MBR: fdisk
- GPT: gdisk,diskpart(windows)
磁盘挂载的相关命令
lsblk
是linux系统中用于列出所有可用或已挂载的块设备(硬盘、固态硬盘、CD-ROM驱动器等)的命令
lsblk 选项
-a: 列出所有设备,包括未挂载的。
-b: 以字节未单位显示大小
-d: 仅显示磁盘,不显示分区
-f: 显示文件系统信息
-i: 使用ASCII字符来绘制树状结构
-l: 使用列表格式显示信息
-m: 显示设备挂载信息
注:正常使用此命令不用加选项,默认会列出所有设备。
eg: 列出所有设备
lsblk
fdisk
磁盘分区管理命令,用于MBR分区表
fdisk [选项] device
如果不加选项会进入交互模式
device是要进行管理的硬件设备文件
常用选项
-l: 列出指定设备的分区表信息。如果不指定设备,则列出所有可用的磁盘信息
-v: 显示fdisk的版本信息
交互模式下的命令
p: 显示当前分区表
n: 创建一个新的分区
d: 删除一个分区
t: 更改分区的类型
l: 列出所有可用的分区类型
w: 保存更改并退出
q: 不保存更改并退出
eg:
列出所有可用的磁盘信息
fdisk -l
对/dev/sda磁盘进行分区操作
fdisk /dev/sda
gdisk
磁盘分区管理命令,用于GPT分区表
gdisk [选项] device
如果不加选项会进入交互模式
device是要进行管理的硬件设备文件
常用选项
-l: 列出指定设备的分区表信息
交互模式下的命令
b: 备份GPT数据到一个文件
c: 更改分区名称
d: 删除一个分区
i: 显示分区详细信息
l:列出已知分区类型
n: 添加一个新的分区
o: 创建一个新的空白的GPT分区表
p: 显示当前磁盘的分区表
r: 恢复GPT备份
w: 将分区表写入磁盘并保存退出
q: 不保存更改退出
eg:
显示/dev/sda硬盘的分区表信息
gdisk -l /dev/sda
对/dev/sda硬盘进行分区操作
gdisk /dev/sda
mkfs
是一个用于创建文件系统的命令。它允许用户在磁盘分区上创建文件系统,这样分区就可以用来存储文件和目录
mkfs [选项] device [block-count]
device是需要格式化的设备文件
block-count是指定文件系统的块数(通常不需要手动指定,mkfs会自动使用整个分区)
常用选项
-t fstype: 指定文件系统类型(如: ext4,xfs,ntfs)
-L label: 设置文件系统的卷标
-v: 显示详细信息
eg:在/dev/sda1分区上创建一个xfs文件系统
mkfs -t xfs /dev/sda1
注:mkfs命令通常与文件系统类型特定的工具一起使用,允许用户创建特定类型的文件系统。以下是常见的文件系统类型及其mkfs工具
ext2/ext3/ext4
mkfs.ext2: 创建ext2文件系统
mkfs.ext3: 创建ext3文件系统
mkfs.ext4: 创建ext4文件系统,ext3的改进版,支持更大的文件系统和更快的文件系统检查
XFS
mkfs.xfs: 创建XFS文件系统,适用于大型文件系统和高性能环境
Btrfs
mkfs.btrfs: 创建Btrfs文件系统,支持写时复制、快照和校验和
VFAT
mkfs.vfat: 创建VFAT文件系统,通常用于创建可移动存储设备(U盘)上的FAT32文件系统
NTFS
mkfs.ntfs: 创建NTFS文件系统,常用于与Windows系统兼容的分区
ReiserFS
mkfs.reiserfs: 创建ReiserFS文件系统,虽然不如ext4和xfs流行,但仍在某些环境中使用
JFS
mkfs.jfs: 创建JFS文件系统,适用于服务器和存储设备
eg:
在/dev/sda2分区上创建一个XFS文件系统
mkfs.xfs /dev/sda2
mount
用于挂载文件系统的命令。将一个文件系统与一个特定的目录(挂载点)关联起来,使得用户可以访问该文件系统中的文件和目录
mount [选项] device mount_point
device是要挂载的设备(/dev/sda)
mount_point是文件系统在系统目录树的挂载位置(如 /mnt/data)
常用选项
-a: 挂载设备文件中列出所有文件系统
-t type: 指定文件系统的类型(如: ext4、xfs)
-o options: 指定挂载选项,多个选项之间用逗号分隔。
常见挂载选项:
ro: 以只读方式挂载
rw: 以读写方式挂载(默认)
nosuid: 不解析文件系统中的setuid位
nodev: 不解释字符设备或块设备文件
noexec: 不允许执行二进制文件
eg:
挂载/dev/sda1到/mnt/data目录
mount /dev/sda1 /mnt/data
注如果想要卸载文件系统可以使用unmount命令,如果显示系统忙,则可能有进程正在使用文件系统,或者文件系统中有打开的文件。可以通过 fuser命令和lsof命令查询并kill掉
磁盘挂载实例
1.查看新的磁盘名称
使用lsblk命令查看
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1T 0 disk
├─sda1 8:1 0 200M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 1022.8G 0 part
├─centos-root 253:0 0 50G 0 lvm /
├─centos-swap 253:1 0 15.8G 0 lvm [SWAP]
└─centos-home 253:2 0 957G 0 lvm /home
sdb 8:16 1 4T 0 disk
通过结果可以看到sdb设备文件没有被挂载
2.使用分区管理工具进行分区
由于硬盘大于2TB,所以使用gdisk进行分区
进入交互模式
gdisk /dev/sdb
输入o创建一个空白的GPT分区表
输出n新建分区
选择默认的分区和起始扇区
设置结束扇区(默认是所有扇区)
选择默认的分区类型(默认是Linux filesystem)
输入W保存更改并退出,成功创建4TB大小的Linux文件系统分区
再次使用lsblk查看,就会看到新建的分区
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1T 0 disk
├─sda1 8:1 0 200M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 1022.8G 0 part
├─centos-root 253:0 0 50G 0 lvm /
├─centos-swap 253:1 0 15.8G 0 lvm [SWAP]
└─centos-home 253:2 0 957G 0 lvm /home
sdb 8:16 1 4T 0 disk
└─sdb1 8:17 1 4T 0 part
3.格式化分区,创建XFS文件系统
直接输入对应文件系统类型的mkfs命令,创建文件系统
mkfs.xfs /dev/sdb1
4.挂载分区
在根目录下新增一个文件夹作为挂载点
mkdir shen-data
mount /dev/sdb1 /shen-data
再次输入lsblk就会发现分区已挂载
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1T 0 disk
├─sda1 8:1 0 200M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 1022.8G 0 part
├─centos-root 253:0 0 50G 0 lvm /
├─centos-swap 253:1 0 15.8G 0 lvm [SWAP]
└─centos-home 253:2 0 957G 0 lvm /home
sdb 8:16 1 4T 0 disk
└─sdb1 8:17 1 4T 0 part /shen-data
5.配置开机自动挂载
由于使用mount命令挂载,重启系统后,不会自动挂载,需要修改/etc/fstab文件
vi /etc/fstab
添加并保存
/dev/sdb1 /shen-data xfs defaults 0 0
/dev/sdb1 分区设备
/shen-data 挂载点
xfs 文件系统类型
defaults 挂载选项(默认是以读写方式挂载)
0 0 挂载时间(0 0是保证在系统启动时自动挂载)