引言
和朋友讨论搭建网站时,无意中聊到 Linux 系统需要手动挂载数据磁盘。朋友突然发现虽然购买了云硬盘,但却从未挂载使用,导致资源被白白浪费。今天我将以最简单易懂的方式教大家如何在 Linux 系统中挂载磁盘。
重要提示
-
以下教程是以无数据的数据盘基础上编写,如果服务器已经存在数据,请先保存好数据后再尝试操作。
-
若对命令行完全不熟悉,建议使用文末提供的一键挂载脚本,效果等同。
-
本文中的磁盘 /dev/vdb 为作者测试服务器上的磁盘命名,在您的服务器中可能是/dev/xdb、/dev/vdb、/dev/xvdb等,请根据实际情况对代码进行修改。
创建磁盘挂载目录
mkdir -p /www
查询服务器磁盘信息
fdisk -l
[root@tencentos ~]# fdisk -l
Disk /dev/vda: 65 GiB, 69793218560 bytes, 136314880 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 262144 bytes / 262144 bytes
Disklabel type: dos
Disk identifier: 0xbd11af09
Disk /dev/vdb: 100 GiB, 107374182400 bytes, 209715200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 262144 bytes / 262144 bytes
Disklabel type: dos
Disk identifier: 0xc293dd74
[root@TencentOS ~]
#
若,上述代码中红色部分为空,则说明尚未分区,未分区的磁盘是/dev/vdb,在您的服务器中可能是/dev/vdb,请注意按照实际名称修改。
查询服务器磁盘信息
如果上述代码中存在红色部分内容,则表示已经分区成功,则跳过此步骤。
fdisk /dev/vdb
[root@tencentos ~]# fdisk /dev/vdb
Welcome to fdisk (util-linux 2.32.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x811d7be1.
Command (m for help)
:
~
输入 n 开始创建分区
Command (m for help):n
Partition type:
p primary (0 primary, 0 extended, 4 Free)
e extended
n
输入 1 设定分区编号
Partition number (1-4, default 1)
:
1
直接 回车 确认分区起始位置
First sector (2048-41943039, default 2048)
:
~
直接 回车 确认分区结束位置
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039)
:
~
输入 wq 结束分区
First sector (2048-41943039, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039):
Using default value 41943039
Partition 1 of type Linux and of size 100 GiB is set
Command (m for help): wq
The partition table has been alterrd!
Calling ioctrl() to re-read partition table.
Syncing disks.
检查分区是否成功
fdisk -l
[root@tencentos ~]# fdisk -l
Disk /dev/vda: 65 GiB, 69793218560 bytes, 136314880 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 262144 bytes / 262144 bytes
Disklabel type: dos
Disk identifier: 0xbd11af09
Disk /dev/vdb: 100 GiB, 107374182400 bytes, 209715200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 262144 bytes / 262144 bytes
Disklabel type: dos
Disk identifier: 0xc293dd74
[root@TencentOS ~]
#
如果出现上述红色部分信息,说明已经分区成功。
格式化分区
mkfs.ext4 /dev/vdb1
这里输入看到的磁盘加分区号,如上一步红色部分信息,/dev/vdb1
[root@tencentos ~]# mkfs.ext4 /dev/vdb1
mke2fs 1.42.9(28-Dec-2013)
Discarding device blocks: done
Filesystem label=
OS type: Linux
Block size=4096 (1og=2)
Fragment size=4096 (1og=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes,5242624 blocks
262131 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2153775104
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768,98304,163840,229376,294912,819200,884736,1605632,2654208,4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
开机自动挂载磁盘
echo "/dev/sdb1 /www ext4 defaults 0 0" >> /etc/fstab
将分区挂载信息添加到配置文件 /etc/fstab 中,实现开机/重启自动挂载。
[root@TencentOS ~] # echo "/dev/sdb1 /www ext4 defaults 0 0" >> /etc/fstab
[root@TencentOS ~]
#
重新挂载所有分区
mount -a
检查是否挂载成功
df -h
[root@TencentOS~]
#
一键挂载脚本
工具使用说明
-
本工具默认将数据盘挂载到/www目录;
-
若您的磁盘已分区,且未挂载,工具会自动将分区挂载到/www;
-
若您的磁盘是新磁盘,工具会自动分区并格式化成xfs/ext4文件系统。
【1.5】 更新内容
1:添加文字提醒;
2:只有一个磁盘或www目录已被挂载的情况下,自动退出脚本,不执行任何操作;
3:修复对宝塔面板6.x/7.x的支持
【1.4】更新内容
1:对宝塔面板提供迁移支持,当已安装面板时,暂停所有服务,自动重命名/www,并迁移数据到新硬盘(全新硬盘未挂载分区) 。
注: 仅限3.x/4.x/5.x/6.x/7.x面板支持迁移;
注:迁移过程中会将系统盘原有面板数据备份至/bt-backup目录。
【1.3】更新内容
1:修正在中文版系统下无法分区的问题。
【1.2】更新内容
1:修正腾讯云部分节点自动挂载为只读的问题。
【1.1】更新内容
1:增加指定挂载目录功能;
2:修正部分有独立引导分区的系统无法正确挂载的问题。
Centos
yum install wget -y && wget -O auto_disk.sh http://download.bt.cn/tools/auto_disk.sh && bash auto_disk.sh
Ubuntu
wget -O auto_disk.sh http://download.bt.cn/tools/auto_disk.sh && sudo bash auto_disk.sh
Debian
wget -O auto_disk.sh http://download.bt.cn/tools/auto_disk.sh && bash auto_disk.sh