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的开机自启动~~链接,有兴趣的可以看下。
https://www.cnblogs.com/xuenil/p/9470812.html
至于fdisk 与 parted 的区别,咱们明天再讲~~~~~。