整体操作是:先对磁盘进行格式化,格式化后挂载到需要的挂载点,最后添加分区启动表,以便下次系统启动时自动挂载。
一、linux分区
1、Linux来说wulun有几个分区,分给哪一目录使用,他归根结底只有一个根目录,一个独立且唯一的文件结构,Linux中每个分区都是用来组成整个文件系统的一部分。
2、Linux采用了一种叫"载入"的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来,这是要载入的一个分区将使它的存储空间在一个,目录下获得。
分区和文件关系示意图:
硬盘说明:
1、Linux硬盘分IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘
2、对于IDE硬盘,驱动器标识符为"hdx~",其中"hd"表明分区所在设备的类型,这里是指IDE硬盘了。"x"为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),"~"代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。例,hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分区。
3、对于SCSI硬盘则标识为"sdx~",SCSI硬盘是用"sd"来表示分区所在设备的类型的,其余则和IDE硬盘的表示方法一样(x可以为abcd分别对应第1、2、3、4块硬盘)。
二、分区挂载
准备工作:查看当前所有设备挂载情况:
指令:lsblk 或者lsblk -f
这里sda1、2、3分别代表第一块硬盘的第一分区第二分区...
步骤1:新建/安装一块硬盘(虚拟机/云服务)
在虚拟机菜单中,设置增加一块硬盘,完成后重启可以生效识别
安装好后可以通过命令查看到闲置的磁盘:
lsblk命令查看磁盘信息:
其中sdb就是新加的磁盘
或 :fdisk -l 查看磁盘信息
步骤2:虚拟机硬盘分区
不需要分区 可以跳过步骤2-3
分区指令:fdisk /dev/sdb
开始对sdb分区
m 显示命令列表
p 显示磁盘分区同fdisk -l
n 新增分区
d 删除分区
w 写入并退出
说明:开始分区后输入n,新增分区,然后选择p,分区类型为主分区。两次回车默认剩余全部空间,最后输入w写入分区并退出,若不保存退出输入q
[root@kongchao03 ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0xdf03b737 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):m
命令操作
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-2097151,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-2097151,默认为 2097151):
将使用默认值 2097151
分区 1 已设置为 Linux 类型,大小设为 1023 MiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@kongchao03 ~]#
步骤3:虚拟机硬盘分区格式化
找到未使用的磁盘,对其进行格式化。
(操作数据盘符前,请自行确认磁盘是否有使用过,如有重要数据请谨慎操作,以免导致数据丢失,带来不必要的麻烦)。
格式化命令为:
格式化指令: mkfs -t ext4 /dev/sdb1 或 mkfs.ext4 /dev/sdb1
其中ext4是分区类型。
格式化磁盘,格式化之后才会分配UUID。
mkfs -t ext4 /dev/sdb1
lsblk -f
步骤4:磁盘挂载
挂载前,先在服务器上创建一个需要挂载的挂载点。
例:将磁盘挂载到根目录下的newdisk目录下
mount挂载
挂载语法:mount 设备名称 挂载目录 (挂载目录是任意的)
[root@kongchao03 ~]# cd /
[root@kongchao03 /]# mkdir newdisk
[root@kongchao03 /]# mount /dev/sdb1 /newdisk
[root@kongchao03 /]# lsblk -f
如果挂载不成功显示的错误提示:/dev/vdb is write-protected, mounting read-only 这个是说明dev/vdb为只读状态,可以先执行第2部操作,先格式化磁盘就可以啦。
步骤5:实现永久挂载(即重启不消失)
修改fstab,使得系统启动时自动挂载磁盘,通过修改 /etc/fstab实现自动挂载。
添加完成后执行mount -a或reboot即可生效
[root@kongchao03 /]# vim /etc/fstab
[root@kongchao03 /]# mount -a
步骤6:查看磁盘分配结果
df -h查询磁盘使用情况
[root@kongchao03 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda2 17G 5.8G 11G 37% /
devtmpfs 978M 0 978M 0% /dev
tmpfs 993M 0 993M 0% /dev/shm
tmpfs 993M 9.0M 984M 1% /run
tmpfs 993M 0 993M 0% /sys/fs/cgroup
/dev/sdb1 991M 2.6M 922M 1% /newdisk
/dev/sda1 991M 128M 797M 14% /boot
tmpfs 199M 20K 199M 1% /run/user/0
/dev/sr0 730M 730M 0 100% /run/media/root/20210907_143734
[root@kongchao03 ~]#
du -h查询指定目录磁盘占用情况
指令: du [参数] /目录(查询指定目录的磁盘占用情况,默认为当前目录)
参数选项:
-s 指定目录占用大小汇总
-h 带计量单位
-a 含文件
--max-depth=1 子目录的深度
-c 列出明细的同时,增加汇总值
参数可以联合使用
示例:查询/opt目录的磁盘占用情况,深度为1
[root@kongchao03 /]# cd /opt
[root@kongchao03 opt]# ls
rh
[root@kongchao03 opt]# du -h --max-depth=1 /opt
4.0K/opt/rh
8.0K/opt
[root@kongchao03 opt]#
参数联合起来使用:
[r...]# du -hac --max-depth=1 /opt
4.0K /opt/rh
8.0K /opt
8.0K 总用量
步骤7(可忽略):输入:sync 将缓存写入服务器;
步骤8(可忽略):执行 init -6 重启服务器,后再查看挂载情况;
重启服务器后,输入命令: df -lh 查看该磁盘是否正常挂载。或者使用 lsblk
步骤9:取消挂载
umount取消挂载
语法:
umount 挂载点 或 umount 设备名
umount /dev/sdb1lsblk -f
用命令行挂载(mount /dev...),重启后会失效,即重启后挂载点消失
三、异常处理:
1、umount卸载挂载出现"target is busy"报错解决办法
我们在挂载数据硬盘的过程中应该会有看到有原本已经挂载的目录需要先卸载。这里一般用到 umount 命令卸载。但是这里会有时候出现"target is busy"报错的问题,这个问题根本问题在于当前要卸载的目录还有软件在运行。
我们要解决的办法就是停止当前运行的软件。这里有几个解决办法,我们可以参考。
1、通过lsof命令处理
老蒋一般会通过lsof命令检查当前是否有运行的软件绑定在对应的目录。
lsof /www/
比如我这里检查www目录是否有软件在运行,如果有的话,我们可以对应PID先停止或者提前停止对应的软件,比如php、mysql等。
只有lsof检测到没有软件运行,那我们去umount卸载就没有问题报错。
2、使用fuser命令处理
在使用 fuser命令之前需要安装组件支持。
yum install psmisc -y
然后一样需要类似lsof一样查看是否有在运行的进程。
fuser -mv /www/
如果有的话,然后针对进程去停止。
fuser -kv /www/
一个命令删除全部进程。
这样,我们通过2个办法检测和删除占用进程后,再卸载和挂载。
2、umount卸载光盘提示 umount: /mnt: target is busy. 怎么办?
一、红色下划线:df -h 查看设备信息。/dev/sr0 是光盘,/mnt是挂载点的路径。
黄色下划线:umount /mnt 卸载的时候出现 umount: /mnt: target is busy. 提示设备忙。磁盘正在使用,无法直接卸载。需要将当前使用数据盘的进程杀掉,才能卸载。
二、安装 psmisc 工具
Psmisc 软件包包含三个帮助管理/proc目录的程序。
fuser 显示使用指定文件或者文件系统的进程的PID。
killall 杀死某个名字的进程,它向运行指定命令的所有进程发出信号。
pstree 树型显示当前运行的进程。
可以通过 rpm -qa psmisc 查看有没有安装,如果有系统会反馈安装程序的信息。
如果没有安装 psmisc 系统没有反馈。
那么,就需要安装 psmisc命令: yum -y install psmisc 或 apt -y install psmisc 。
等待安装完成,安装完成后系统会反馈 psmisc 已经安装完毕。并且 通过 rpm -qa psmisc 可以查看到 psmisc 程序的信息。
三、红色划线:fuser -mv /mnt/ 查看 /mnt/ 的进程状态。可以看到 PID 1340 进程正在运行。
黄色下划线:fuser -kv /mnt/ 杀掉访问文件的进程。
蓝色下划线:再用 fuser -mv /mnt/ 查看 /mnt/ 。PID 1340 进程已经被杀掉。
-m:指定一个挂载文件系统上的文件或者被挂载的块设备(名称name)。所有访问这个文件或者文件系统的进程都会被列出来。
-v:详细模式。进程以 ps 的方式显示,包含PID,USER,COMMAND,如果是内核访问的 PID 为 kernel。
-k:指定 PID,就杀掉指定PID的进程。如果没有指定 PID 就会发送SIGKILL信号,杀掉所有进程。
四、此时用 umount /mnt。已经可以卸载了,df -h 查看设备状态 /mnt 也已经成功卸载。