Linux服务器硬盘挂载小记录
Linux服务器硬盘挂载全攻略:从NTFS到ext4的最佳实践
背景
单位给给了台老设备用,存储非常有限,精叫唤后领导加了个硬盘。
本文将分享一个实际案例,详细介绍如何在Linux服务器上识别、格式化并挂载硬盘,特别是如何从Windows兼容的NTFS格式转换为Linux原生的ext4文件系统,以获得更好的性能和管理体验。
一、问题背景
在我们的Dell PowerEdge T640服务器上,有一块3.6TB的硬盘被识别出来但尚未挂载。该硬盘原先使用NTFS格式,可能来自Windows环境。我们需要将其挂载为Linux环境下的共享数据存储,并确保所有用户都能访问。
二、识别未挂载的硬盘
首先,使用lsblk
命令查看系统上的所有硬盘和分区情况:
lsblk
输出结果:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 893.8G 0 disk
├─sda1 8:1 0 1G 0 part /boot/efi
└─sda2 8:2 0 892.7G 0 part /var/snap/firefox/common/host-hunspell/
sdb 8:16 0 3.6T 0 disk
├─sdb1 8:17 0 16M 0 part
└─sdb2 8:18 0 3.6T 0 part
从输出中可以看到:
sda
是系统盘,已挂载sdb
是我们的目标硬盘,包含两个分区:sdb1
: 16MB分区,可能是系统保留分区sdb2
: 3.6TB分区,这是我们需要挂载的主要存储空间
接下来,我们要通过/dev/sdb2去查看这个设备
三、检查硬盘文件系统类型
使用blkid
命令查看硬盘的文件系统类型:
sudo blkid /dev/sdb2
blkid是Linux系统中的一个重要命令行工具,用于查询块设备(如硬盘、分区、U盘等)的属性信息。这个命令可以帮助系统管理员快速识别设备的文件系统类型、UUID、标签等关键信息,在硬盘挂载、系统配置和故障排查中发挥着重要作用。
blkid命令全称为"block id"(块设备标识),是util-linux软件包的一部分,几乎所有Linux发行版都预装了这个工具。它主要功能是显示块设备的属性,常用于自动挂载、编写fstab配置和系统管理
输出结果:
/dev/sdb2: BLOCK_SIZE="512" UUID="B45653375652FA16" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="0225aca4-713f-45dd-9429-9563d0f01bf9"
可以看到TYPE="ntfs"
,该分区为使用的是NTFS文件系统,这是Windows默认的文件系统。
四、文件系统选择的考量
在Linux服务器上使用硬盘时,我们需要在NTFS和ext4等Linux原生文件系统之间做出选择:
NTFS的优势:
- 与Windows系统兼容,可直接连接到Windows电脑使用
- 无需额外软件即可在Windows下读写
- 适合需要跨平台数据交换的环境
NTFS的劣势:
- 在Linux下性能较差
- 权限系统不兼容Linux
- 可靠性和恢复能力较弱
- 对Linux服务器环境不是最佳选择
ext4的优势:
- Linux原生支持,性能优异
- 完整的Linux权限支持
- 更好的稳定性和崩溃恢复能力
- 适合服务器长期运行环境
ext4的劣势:
- Windows默认不支持(需要额外软件)
- 跨平台兼容性较差
对于服务器环境,特别是纯Linux环境,ext4是更好的选择。这个根据你场景需求,我们这里将NTFS分区转换为ext4格式。
五、格式化硬盘为ext4
警告:格式化会删除分区上的所有数据,请确保备份重要信息!
- 确保分区未挂载:
其实这一步不需要,上面我们看到已经没有挂载了
sudo umount /dev/sdb2
- 格式化为ext4文件系统:
sudo mkfs.ext4 /dev/sdb2
mkfs.ext4命令是mkfs(make filesystem)命令族的一部分,专门用于创建ext4类型的文件系统。ext4是Linux中最常用的文件系统类型之一,是ext3的后继版本
- 查看新的UUID:
sudo blkid /dev/sdb2
输出结果:
/dev/sdb2: UUID="de7c334a-240a-499a-9d6b-e90c4ad98852" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="Basic data partition" PARTUUID="0225aca4-713f-45dd-9429-9563d0f01bf9"
注意到文件系统类型已变为ext4,并且UUID已经改变。同时,块大小从512字节增加到了4096字节,这将提高大文件操作的效率。
我们需要记录下这里的UUID de7c334a-240a-499a-9d6b-e90c4ad98852
,因为我们需要写入挂载的配置文件,不然重启后我们配置的硬盘就掉了。
六、创建挂载点
我们选择在根目录下创建/data
目录作为挂载点,使其易于访问和管理:
sudo mkdir -p /data
七、配置永久挂载
为了确保系统重启后硬盘能自动挂载,需要编辑/etc/fstab
文件:
sudo vim /etc/fstab
/etc/fstab是一个纯文本文件,包含了文件系统的静态信息。系统启动时,mount -a命令会读取该文件并挂载其中定义的所有文件系统。这使得用户不必在每次启动后手动挂载设备,也确保了系统各组件所需的存储资源能够自动可用。
在文件末尾添加以下行:
UUID=de7c334a-240a-499a-9d6b-e90c4ad98852 /data ext4 defaults 0 2
参数说明:
UUID=...
: 硬盘的唯一标识符/data
: 挂载点目录ext4
: 文件系统类型defaults
: 使用默认挂载选项0
: 不进行备份2
: fsck检查的顺序(0表示不检查,1通常用于根分区,2用于其他分区)
八、挂载硬盘并验证
上面修改后,并不会立即生效,你需要重载配置。
systemctl daemon-reload
然后,应用fstab
中的新设置并挂载所有配置的设备:
sudo mount -a
验证挂载是否成功:
df -h | grep /data
输出应当显示3.6TB的分区已挂载到/data目录。
九、设置适当的权限
根据需求,我们有两种主要的权限配置方案:
方案一:简单共享(适合小型团队或信任度高的环境)
sudo chmod 777 /data
这将允许所有用户对目录有完全控制权(读、写、执行)。
方案二:基于组的访问控制(推荐,更安全)
# 创建数据访问组
sudo groupadd datagrp# 设置目录所有权为root用户和datagrp组
sudo chown root:datagrp /data# 设置权限:所有者和组成员可读写执行,其他用户只读
sudo chmod 775 /data# 设置目录的SGID位,使新创建的文件继承组所有权
sudo chmod g+s /data# 将需要访问的用户添加到组
sudo usermod -aG datagrp 用户名1
sudo usermod -aG datagrp 用户名2
# 用户需要重新登录才能生效
这种方法提供了更精细的权限控制,只有经过授权的用户才能写入数据目录。
十、创建目录结构(可选)
根据实际需求,可以在/data下创建更多子目录,例如:
sudo mkdir -p /data/shared /data/backups /data/projects
sudo chown root:datagrp /data/*
sudo chmod 775 /data/*
sudo chmod g+s /data/*
小计一下,不是专业运维,但是感觉很多运维干的事情都太不专业了,哎。