Linux 中/data 数据分区磁盘空间不足,如何挂载磁盘。
首先,咱们需要模拟一下环境,下图 使用VMware为我添加一块300G(实际200M~~手动滑稽 -_-)的硬盘设备。
按照步骤一步一步添加就好。添加完成后需要重启你的虚拟机,方能生效。
OK,那么咱们的环境就有了。我已经为咱们的“服务器”安装了个300G(200M)的硬盘了,现在咱们把它挂载到 /data 下。
第一步,为新磁盘创建分区。
?
[root@~]# ll /dev/sdb* #检查第二块硬盘,及分区
brw-rw---- 1 root disk 8, 16 Aug 15 14:35 /dev/sdb
#这里显示,你有第二块磁盘,但是没有分区啊,兄弟~~
|
为磁盘创建分区,可以用两个命令,fdisk and parted 。这里咱们先讲 fdisk 。parted等下再说
fdisk 命令,-c 选项:关闭dos兼容模式,-u 以扇区为单位为磁盘分区。
当需要为你的磁盘分的细致一些的时候可以使用,咱们现在要把300G都挂载到 /data 就不使用命令选项了。
下面是等下需要用到的 fdisk 内部指令含义:
m 显示帮助。 n 创建分区。 p 显示磁盘分区信息。 d 删除分区。 w 保存并退出。 q 退出不保存。
?
[root@~]# fdisk /dev/sdb #fdisk 命令后面直接加 磁盘文件就好
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
#这里的警告信息就是,建议你关闭dos兼容模式,且启用-u选项,简单说就是让你使用 -cu 选项。
不过这个警告并不需要太在意,它只会在磁盘未分区时显示,且不会对咱们下面的操作有任何影响。
Command (m for help): p #先看一下磁盘分区情况
Disk /dev/sdb: 213 MB, 213909504 bytes
64 heads, 32 sectors/track, 204 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x1bf8bec7
Device Boot Start End Blocks Id System
#嗯,空白的 就是没有进行过磁盘分区。
Command (m for help): n #创建磁盘分区
Command action
e extended
p primary partition (1-4) #这里是系统提示,是按 e 创建扩展分区,还是按 p 创建主分区了?
p #咱们就准备整一个分区,自然选择 p 主分区啦~~
Partition number (1-4): 1 #键入1 , 就是1号主分区的意思。
First cylinder (1-204, default 1):“回车键” (按下Enter) #这里是让你选择分区开始的柱面,回车就是默认,最初的意思
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-204, default 204):“回车键” (按下Enter) #这里是让你选择分区结束的柱面,回车就是默认,最后的意思
Using default value 204 (创建好了)
Command (m for help): p #咱们再看一下
Disk /dev/sdb: 213 MB, 213909504 bytes
64 heads, 32 sectors/track, 204 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x1bf8bec7
Device Boot Start End Blocks Id System
/dev/sdb1 1 204 208880 83 Linux
#嗯嗯,分区名称/dev/sdb1,大小差不多“300G”
Command (m for help): w # 键入 w ,一定要保存后退出。不然所有的设置都不会生效。
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
|
fdisk -l 查看一下磁盘的信息。
[root@~]# fdisk -l| grep '/dev/sdb'
Disk /dev/sdb: 213 MB, 213909504 bytes
/dev/sdb1 1 204 208880 83 Linux
#这就说明咱们的磁盘分区已经创建OK。
|
第二步,为你的分区创建文件系统(格式化)
首先要手动更新一下,让系统知道 sdb 磁盘分区表有变化了~~
[root@~]# partprobe /dev/sdb
[root@~]#
# 傲娇的Linux 并不会给你任何提示。但是这个步骤必不可少
|
然后直接给分区装个 ext4文件系统就好了
[root@~]# mkfs.ext4 /dev/sdb1 #mkfs 命令接 .ext4 中间不需要使用空格。后面要跟分区的文件名,并不是磁盘文件名,这个要注意。
mke2fs 1.41.12 (17-May-2010)
··························此处省略数行
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 21 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
#最后这两个提示信息是最重要的,它的意思是说:这个文件系统将在21次挂载或是180天以后自动检查,使用 tune2fs -c 或-i 可以覆盖掉默认自动检查。
|
反正我是不需要系统默认检查什么的,那我就直接关掉好了,就使用它建议的 tune2fs 命令就好了。
[root@~]# tune2fs -c 0 -i 0 /dev/sdb1 # -c 和 -i 后面都是零(不检查的意思),还是磁盘分区文件~~
tune2fs 1.41.12 (17-May-2010)
Setting maximal mount count to -1
Setting interval between checks to 0 seconds
#提示信息我就不逐条翻译了,大概意思就是系统不会自动检查了。
|
第三步,将 /dev/sdb1 挂载~~到 /data ,并实现开机自动挂载。
mount 挂载,这个简单,我就不讲了。
[root@~]# mount /dev/sdb1 /data
[root@~]# df -h #最好 df -h 查看一下
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 19G 2.3G 16G 13% /
tmpfs 490M 0 490M 0% /dev/shm
/dev/sda1 190M 66M 115M 37% /boot
/dev/sdb1 194M 1.8M 182M 1% /data
#这里不应该是300G吗,难道是我挂错了?- _ -?
|
开机自动实现挂载的方法有很多,咱们就简单的讲三种好了。
方法一:通过 /etc/rc.local 实现开机运行 mount /dev/sdb1 /data 。来实现开机自动挂载
[root@~]# ll /etc/rc.local
lrwxrwxrwx 1 root root 13 Aug 6 17:57 /etc/rc.local -> rc.d/rc.local
# /etc/rc.local 是 /etc/rc.d/rc.local 的符号链接。在root权限下直接修改符号链接的文件就可以了。
[root@~]# vim /etc/rc.d/rc.local #但是我有强迫症,我就要修改源文件。哼哼~~
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
mount /dev/sdb1 /data #编写这么一句就好了,但是我不建议这么做。可能是因为比较Low吧
|
方法二:通过 /etc/fstab 实现开机自动挂载
[root@~]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sat Jul 28 14:15:11 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=4b7f430b-398b-4ca4-a6f4-75e11c8498f0 / ext4 defaults 1 1
UUID=b001470a-e506-4b50-a705-7b4343ac6a7c /boot ext4 defaults 1 2
UUID=ec344814-973b-45d3-95f0-7ce6265b3247 swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/sdb1 /data/ ext4 defaults 0 0#第一列设备的名称 #第二列 挂载点(目录) #3,文件系统类型 #4,defaults 是默认挂载参数 #第一个 0 是指是否进行备份 0(不进行) 第二个 0 是指是否开机磁盘检查 0 (不检查)
|
方法三:通过chkconfig 实现开机自动启动。
这个方法我也不太建议,毕竟chkconfig还是用来启用系统服务比较好,挂载的事情还是交给 fstab 的好。
下面的链接就是我写的如何实现chkconfig的开机自启动~~链接,有兴趣的可以看下。