磁盘挂载必须步骤
- 分区
- 格式化分区
- 写入fstab文件
- 挂载
1、分区parted
分区跟window的磁盘分区是样的,为了更便捷的使用磁盘
-
分区格式
window分区格式有多种NTFS centos的分区格式也有两种 MBR、GPT
MBR:仅支持最大四个主分区,而且不可以格式化2TB以上的磁盘
GPT:大磁盘更适合使用parted工具进行GPT的分区格式/usr/sbin/parted -s /dev/sda mklabel gpt #分区格式 /usr/sbin/parted -s ${i} mkpart primary 1 100% #分区大小设置 /usr/sbin/parted -s ${i} align-check optimal 1 #分区检查 /usr/sbin/parted -s ${i} print #输出 partprobe #不重启主机重载分区,也可以通过systemctl daemon-reload
2、磁盘格式化
格式名 | 说明 | 备注 |
---|---|---|
swap | 交换内存的固定格式,当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中 | |
EFI system partition | EFI 系统分区(也称为 ESP 或者 EFISYS)是一个 FAT32 格式的物理分区 (在硬盘主分区表上,而不是 LVM 或软件 RAID 等等) ,从这里 UEFI 固件启动 UEFI 引导器和应用程序。它与操作系统无关而是作为 EFI 固件要启动的引导器和应用程序的存储空间,是 UEFI 启动所必须。 | |
xfs | 是高度灵活性的高性能文件系统,最大可支持 16 EB(大约一千六百万 TB)的文件系统,大小为 8EB 的文件(大约八百万 TB),同时目录结构包含千百万条目。XFS 支持元数据日志,它可提高崩溃恢复速度。XFS 文件系统还可在挂载和激活的情况下清除磁盘碎片并重新定义大小。默认选择并推荐使用这个文件系统。XFS 最大支持分区大小为 500 TB。 | 常用的文件系统格式 |
ext4 | 基于 ext3 文件系统,并有大量改进。这些改进包括支持大文件系统和大文件;更迅速、有效的磁盘空间分配;目录中无限的子目录数;更快速的文件系统检查及更强大的日志功能。Red Hat Enterprise Linux 7 中目前支持的最大 ext4 文件系统为 50 TB | |
ext3 | 文件系统是基于 ext2 文件系统,其主要优点是日志功能(journaling)。使用记录日志的文件系统可减少崩溃后恢复文件系统所需时间,因为它不需要在每次发生崩溃时都运行 fsck 程序检查文件系统元数据一致性。 | |
ext2 | 文件系统支持标准的 Unix 文件类型,包括常规文件、目录、符号链接等等。可分配长文件名,最多有 255 个字符。 | |
vfat | 文件系统是一个 Linux 文件系统,它兼容 FAT 文件系统中的微软 Windows 长文件名。 |
格式化动作会导致磁盘的uuid发生变化
mkfs -t xfs /dev/sda1 #这里是格式化分区的符号。
mkfs -t xfs /dev/sda #格式化整个盘
3、写入分区文件fstab
/etc/fstab文件的作用: 当系统启动的时候,系统会自动地从这个文件读取信息,并且会自动将此文件中指定的文件系统挂载到指定的目录
/etc/fstab
---------------------------------------------------------------------------------------------------
# <file system> <dir> <type> <options> <dump> <pass>
/dev/mapper/centos-root / xfs defaults 0 0
-
<file systems> - 要挂载的分区或存储设备.
-
<dir> - <file systems>的挂载位置。
-
<type> - 要挂载设备或是分区的文件系统类型,支持许多种不同的文件系统:ext2, ext3, ext4, reiserfs, xfs, jfs, smbfs, iso9660, vfat, ntfs, swap 及 auto。
-
<options> - 挂载时使用的参数,注意有些mount 参数是特定文件系统才有的。一些比较常用的参数有
auto - 在启动时或键入了 mount -a 命令时自动挂载。
noauto - 只在你的命令下被挂载。
exec - 允许执行此分区的二进制文件。
noexec - 不允许执行此文件系统上的二进制文件。
ro - 以只读模式挂载文件系统。
rw - 以读写模式挂载文件系统。
user - 允许任意用户挂载此文件系统,若无显示定义,隐含启用 noexec, nosuid, nodev 参数。
users - 允许所有 users 组中的用户挂载文件系统.
nouser - 只能被 root 挂载。
owner - 允许设备所有者挂载.
sync - I/O 同步进行。
async - I/O 异步进行。
dev - 解析文件系统上的块特殊设备。
nodev - 不解析文件系统上的块特殊设备。
suid - 允许 suid 操作和设定 sgid 位。这一参数通常用于一些特殊任务,使一般用户运行程序时临时提升权限。
nosuid - 禁止 suid 操作和设定 sgid 位。
noatime - 不更新文件系统上 inode 访问记录,可以提升性能(参见 atime 参数)。
nodiratime - 不更新文件系统上的目录 inode 访问记录,可以提升性能(参见 atime 参数)。
relatime - 实时更新 inode access 记录。只有在记录中的访问时间早于当前访问才会被更新。(与 noatime 相似,但不会打断如 mutt 或其它程序探测文件在上次访问后是否被修改的进程。),可以提升性能(参见 atime 参数)。
flush - vfat 的选项,更频繁的刷新数据,复制对话框或进度条在全部数据都写入后才消失。
defaults - 使用文件系统的默认挂载参数,例如 ext4 的默认参数为:rw, suid, dev, exec, auto, nouser, async. -
<dump> dump 工具通过它决定何时作备份. dump 会检查其内容,并用数字来决定是否对这个文件系统进行备份。 允许的数字是 0 和 1 。0 表示忽略, 1 则进行备份。大部分的用户是没有安装 dump 的 ,对他们而言 <dump> 应设为 0。
-
<pass> fsck 读取 <pass> 的数值来决定需要检查的文件系统的检查顺序。允许的数字是0, 1, 和2。 根目录应
UUID_NUM=`/usr/sbin/blkid -s UUID /dev/sda1 | cut -d ' ' -f2` echo "${UUID_NUM} /data1 xfs defaults,noatime,nofail 0 0" >> /etc/fstab
4、挂载
mount -a #读取/etc/fstab 配置文件自动挂载
5、常见问题解决
1、 mount -a 执行正常无法报错,但是挂载不成功
查看系统日志有一下报错
Apr 19 10:09:29 data6-bigdata systemd: Unit data6.mount entered failed state.
Apr 19 10:10:23 data6-bigdata kernel: XFS (sdc1): Mounting V5 Filesystem
Apr 19 10:10:23 data6-bigdata kernel: XFS (sdc1): Ending clean mount
Apr 19 10:10:23 data6-bigdata systemd: Unit data6.mount is bound to inactive unit
dev-disk-by\x2duuid-2d3762ac\x2d61b3\x2d4ede\x2da99d\x2d6093720b7ce1.device. Stopping,too.
Apr 19 10:10:23 data6-bigdata systemd: Unmounting /data6...
Apr 19 10:10:23 data6-bigdata kernel: XFS (sdc1): Unmounting Filesystem
Apr 19 10:10:23 data6-bigdata systemd: Unmounted /data6
这是因为系统缓存的uuid与新生产的uuid不一致导致挂载不上,这时候重载一下分区再重新挂载即可
这两个其中一个都可以重载uuid
partprobe
systemctl daemon-reload
2、Structure needs cleaning
这是磁盘文件块损坏,可以通过对应的文件系统修复。如果可以格式化,直接格式化。因为修复过程很漫长还不一定能修复好
#ext4:
fsck.ext4 /dev/sda1
#xfs:
xfs_repair /dev/sda1
格式化参考2,注意格式化后uuid发生了变化需要重新载入磁盘分区信息uuid等。这也是为啥会有问题1的原因
附录:常用磁盘挂载脚本
#!/bin/bash
function SCAN {
echo -e "Scaning..."
sleep 1
> /tmp/mount.log
# FDISK=`which fdisk | awk -F: '{print $1}'`
ALL_DISK=`/usr/sbin/fdisk -l | grep -Ev "mapper|root|swap|docker" |grep ^"Disk /"|cut -d ' ' -f2 |cut -d: -f1`
# ALL_DISK=`${FDISK} -l | grep -Ev "mapper|root|swap|docker" |grep ^"Disk /"|cut -d ' ' -f2 |cut -d: -f1`
for i in ${ALL_DISK}
do
df -Th | grep ${i} &> /dev/null
if [ $? -eq 0 ];then
echo -e "Found Disk: ${i} - Used" | tee -a /tmp/mount.log
else
echo -e "Found Disk: ${i} - Useless" | tee -a /tmp/mount.log
fi
done
Used_Disk=`cat /tmp/mount.log | grep Used | cut -d ' ' -f3`
Useless_Disk=`cat /tmp/mount.log | grep Useless | cut -d ' ' -f3`
}
function INSTALL_PARTED {
INSTALLED=$(yum list installed | grep parted)
IS_INSTALLED=$(echo ${#INSTALLED})
if [ $IS_INSTALLED -lt 1 ]
then
yum install -y parted
fi
}
function PART {
for i in ${Useless_Disk}
do
echo -e "Formating ${i}...."
sleep 1
# PARTED=`which fdisk`
/usr/sbin/parted -s ${i} mklabel gpt
/usr/sbin/parted -s ${i} mkpart primary 1 100%
/usr/sbin/parted -s ${i} align-check optimal 1
/usr/sbin/parted -s ${i} print
partprobe
echo -e "Formating ${i} Done"
done
}
function MKFS {
for i in ${Useless_Disk}
do
echo -e "Mkfs ${i}...."
/usr/sbin/mkfs -t xfs ${i}1
UUID_NUM=`/usr/sbin/blkid -s UUID "${i}"1 | cut -d ' ' -f2`
if [ ! -n "$UUID_NUM" ]; then
echo -e "${i} Mkfs Failed!"
exit 2
fi
echo -e "Done"
sleep 1
done
}
INDEX=1
MOUNTED=`df -hl | awk '{print $6}'`
function MOUNT {
for i in ${Useless_Disk}
do
NEW_POINT="/data$INDEX"
while [[ "${MOUNTED[@]}" =~ "$NEW_POINT" ]]
do
let INDEX++
NEW_POINT="/data$INDEX"
done
if [ -d ${NEW_POINT} ];then
# read -p "${NEW_POINT} in uesd,Input new mount point again:" NEW_POINT
# mkdir ${NEW_POINT}
# UUID_NUM=`/usr/sbin/blkid | grep "${i}1" | cut -d ' ' -f2`
UUID_NUM=`/usr/sbin/blkid -s UUID "${i}"1 | cut -d ' ' -f2`
echo "${UUID_NUM} ${NEW_POINT} xfs defaults,noatime,nofail 0 0" >> /etc/fstab
mount -a
[ $? -eq 0 ] && echo "${i} Mount Finished."
else
mkdir ${NEW_POINT}
# UUID_NUM=`/usr/sbin/blkid | grep "${i}1" | cut -d ' ' -f2`
UUID_NUM=`/usr/sbin/blkid -s UUID "${i}"1 | cut -d ' ' -f2`
echo "${UUID_NUM} ${NEW_POINT} xfs defaults,noatime,nofail 0 0" >> /etc/fstab
mount -a
[ $? -eq 0 ] && echo "${i} Mount Finished."
fi
let INDEX++
done
}
function MAIN {
SCAN
if [ -z "${Useless_Disk}" ];then
echo -e "Not Fount Useless Disk.Exited..." && exit 0
fi
INSTALL_PARTED
PART
MKFS
MOUNT
rm -fr /tmp/mount.log
}
MAIN
网友评论