前言
最近实验室采购了十台服务器,每台服务器配备了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
以实现开机自动挂载