Linux 挂载多块大容量硬盘

前言

最近实验室采购了十台服务器,每台服务器配备了4块4T机械硬盘,本文记录了硬盘的挂载过程,以及虚拟存储工具 mhddfs 的使用。

4块机械硬盘分别为 /dev/sda, /dev/sdb, /dev/sdc, /dev/sdd.

步骤

  • 查看硬盘信息
  • 查看挂载信息
  • 分区命令
  • 格式化分区
  • 开机自动挂载
  • 多硬盘合并挂载 mhddfs

查看硬盘信息

可以使用 fdisk 命令,fdisk 命令可以观察硬盘实体使用情况。

# sudo fdisk -lh

通过命令可以看到目前系统中有哪些硬盘,以及它们各自的分区。

查看挂载信息

通过 df 命令可以查看硬盘的挂载信息。

# df -lh
Filesystem                   Size  Used Avail Use% Mounted on
udev                          32G     0   32G   0% /dev
tmpfs                        6.3G   18M  6.3G   1% /run
/dev/mapper/ubuntu--vg-root  869G   63G  763G   8% /
tmpfs                         32G     0   32G   0% /dev/shm
tmpfs                        5.0M  4.0K  5.0M   1% /run/lock
tmpfs                         32G     0   32G   0% /sys/fs/cgroup
/dev/nvme0n1p2               473M  149M  301M  34% /boot
/dev/nvme0n1p1               511M  3.6M  508M   1% /boot/efi
tmpfs                        6.3G     0  6.3G   0% /run/user/1000

可以看到目前系统中仅挂载了一块固态硬盘。

分区命令

fdisk 命令不仅可以用于观察硬盘实体使用情况,也可以对硬盘进行分区。但 fdisk 命令进行分区最多仅支持2T容量。所以对于4T硬盘,可以使用 parted 命令进行分区。

parted 命令是由GNU组织开发的一款功能强大的磁盘分区和分区大小调整工具,与 fdisk 不同,它支持调整分区的大小。作为一种设计用于Linux的工具,它没有构建成处理与 fdisk 关联的多种分区类型,但是,它可以处理最常见的分区格式,包括:ext2、ext3、fat16、fat32、NTFS、ReiserFS、JFS、XFS、UFS、HFS以及Linux交换分区。

# sudo parted /dev/sda
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt
(parted) unit TB
(parted) mkpart primary 0 4
(parted) p
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
Model: ATA ST4000NM0035-1V4 (scsi)
Disk /dev/sda: 4001GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name     Flags
1      1049kB  4001GB  4001GB               primary

格式化分区

使用 mkfs 命令,将创建好的分区格式化为 ext4 格式。

# sudo mkfs.ext4 /dev/sda1

开机自动挂载

通过 blkid 命令查看硬盘UUID

# sudo blkid
/dev/nvme0n1p1: UUID="6062-5002" TYPE="vfat" PARTUUID="23340a62-728f-4a13-855d-12783a6745d9"
/dev/nvme0n1p2: UUID="058309c1-a4f4-42d4-a011-9c59f331d327" TYPE="ext2" PARTUUID="c3b8246a-4753-414d-be15-1dd85840a949"
/dev/nvme0n1p3: UUID="wr77H2-n6Qt-BKuF-4IdY-IE2S-4fFk-Du7c06" TYPE="LVM2_member" PARTUUID="4f0227e4-d948-4dee-9e54-ba022051073b"
/dev/mapper/ubuntu--vg-root: UUID="5fb8ed79-a83b-4d34-a6d3-d554dfeb3d2e" TYPE="ext4"
/dev/sda1: UUID="a520f550-1807-475d-8737-72733444d48f" TYPE="ext4" PARTLABEL="primary" PARTUUID="94dbf9bb-924d-40a5-99b1-a1116801aeaa"
/dev/sdb1: UUID="085423aa-4578-4dda-a7d5-5c6b85feadb2" TYPE="ext4" PARTLABEL="primary" PARTUUID="47eee203-601d-48d4-937c-ff45a9a17222"
/dev/sdc1: UUID="ade474c4-e8b2-4cc6-804d-802a283f164d" TYPE="ext4" PARTLABEL="primary" PARTUUID="2885a317-a2b4-4d0c-aebb-97c6fb8c56e3"
/dev/sdd1: UUID="ce9dda21-86ac-4c6b-aac3-5d464d348e52" TYPE="ext4" PARTLABEL="primary" PARTUUID="f48c33d8-3170-4802-bab5-ee1e0add763c"
/dev/mapper/ubuntu--vg-swap_1: UUID="4f617909-ed55-45ba-85ce-b1d211b44fca" TYPE="swap"
/dev/nvme0n1: PTUUID="2fff60a6-1c9d-43f2-9b4f-182dced404e2" PTTYPE="gpt"

修改 /etc/fstab 文件,加入表项

UUID= /mnt/A ext4 defaults 0 2

将挂载硬盘的UUID填入。在相应位置创建挂载点(/mnt/A)并修改权限。 使用命令 mount 挂载硬盘

# sudo mount /dev/sda1

多硬盘合并挂载 mhddfs

现在已经将4块硬盘都挂载在了相应的文件夹下 (/mnt/A /mnt/B /mnt/C /mnt/D) 但是由于过多的挂载点导致文件分散在不同的目录下,对于访问文件十分不利。所以可以使用 mhddfs 将多个硬盘挂载在一个路径下。也称作 Linux 分区合并,即 Linux 挂载点合并。

mhddfs 是一个 FUSE 系统模块,它可以将多个 Linux 分区(挂载点)或硬盘组合成一个虚拟驱动器。这样我们就可以将文件丢到 mhddfs 创建的虚拟驱动器中,它会自动将文件分布到不同的挂载点中,而用户看起来就像是放到了一个统一的路径。

mhddfs 安装

# sudo apt install mhddfs

创建挂载点并修改权限后,使用命令

# sudo mhddfs /mnt/A,/mnt/B,/mnt/C,/mnt/D /extend -o allow_other

在 /etc/fstab 中写入

mhddfs#/mnt/A,/mnt/B,/mnt/C,/mnt/D /extend fuse defaults,allow_other 0 0

以实现开机自动挂载