4.5/4.6 磁盘格式化
4.7/4.8 磁盘挂载
4.9 手动增加swap空间
4.5/4.6 磁盘格式化
对分区格式化,实际就是安装文件系统。CentOS 7以 XFS 作为默认的文件系统,但我们依然可以给他指定ext3或者ext4格式。
命令mke2fs , mkfs.ext2 ,mkfs.ext3 ,mkfs.ext4 和 mkfs.xfs 用man命令查询前4个命令的帮助文档时,其实是同一个帮助文档,这说明这4个命令是一样的。下面我们以mke2fs命令为例:
mke2fs命令常用的选项如下:
(1)-b :表示分区时设定每个数据区块占用的空间大小。目前,每个数据块支持1024B,2048B以及4096B.
(2)-i :表示设定inode的大小。
(3)-N :表示设定inode的数量。有时默认的inode数不够用,所以要自定义inode的数量。
(4)-c :表示在格式化前先检测一下磁盘是否有问题。加上这个选项后,运行速度会非常慢。
(5)-L :表示预设该分区的标签(label)。
(6) -j :表示建立ext3格式的分区。如果使用mkfs.ext3 ,也可以是ext4 。如下:
指定文件系统格式为ext4时,命令mke2fs -t ext4 /dev/sdb5 等同于 mkfs.ext4 /dev/sdb5
然而,mke2fs并不支持把分区格式化成XFS类型,而只能用mkfs.xfs ,示例命令如下:
在上例中,有一个“块”的概念。 “块大小=4096”或者“bsize=4096"
磁盘在格式化的时候,会预先规定好每一个块的大小,然后再把所有的空间分割成一个一个的小块。
存数据的时候,也是一个块一个块地写入。
如果你的磁盘里存储的都是特别小的文件,比如说1KB或者2KB,可以在格式化磁盘时指定块数值小一点。
ext4文件系统的默认块大小为4096B(即4KB)。
在格式化时,可以指定块大小为1024B,2048B,或者4096B(它们是成倍增加的)。
虽然格式化时可以指定块大小超过4096B,但一旦超过4096B,就不能正常挂载。那么,如何指定块大小呢?具体操作方法如下:
上例中命令 #mkfs.xfs -b size=8192 /dev/sdb6 //重新格式化sdb6时,会提示这个分区已经格式化过
通过上面的小实验中可以发现:如果指定块大小为8192B,会提示块值设置的太大了,我们可以直接输入y强制格式化。
你还可以尝试指定其他数字,但是需要是1024的指数倍(1024,2048,4096或者8192)。
其中,mkfs.xfs用法有点特殊,需要注意和mke2fs区分。
另外,还可以给分区指定标签,如下:
上例中使用-L选项来指定标签。
标签会在挂载磁盘时使用,也可以写入配置文件。
关于格式化的这部分内容 ,除非有需求,否则不需要指定块大小。也就是说,我们只需要记住 -t 和 -L这两个选项即可。
4.7/4.8 磁盘挂载
格式化后的磁盘其实是一个块设备文件,类型为b。
在挂载某个分区前,需要先建立一个挂载点,这个挂载点是以目录的形式出现的。一旦把某个分区挂载到这个挂载点(目录)下,要再往这个目录写数据时,就都会写到该分区中。
所以,在挂载该分区前,挂载点(目录)下必须是个空目录。
其实目录不为空并不影响所挂载分区的使用,但一旦挂载上了,该目录下以前的东西就看不到了(数据并没有丢失),除非卸载该分区。
命令mount 如果不加任何选项,直接运行mount命令,输出的信息量有点大。使用这个命令,可以查看当前系统已经挂载的所有分区,分区文件系统的类型,挂载点及一些选项等信息。
如果想知道某个已挂载分区的文件系统类型,直接用mount命令查看即可。
而未挂载的分区,可以使用命令 blkid 查看。
那么先建立一个空目录,然后在空目录里建一个空白文档。如下:
然后把刚才格式化的 /dev/sdb5 挂载到 /newdir 上,如下:
把 /dev/sdb5 挂载到 /newdir 后,原来在 /newdir 下的 newfile.txt 就看不到了,通过命令 df -h 命令可以查看刚刚挂载的分区。
我们也可以使用 LABEL 的方式挂载分区,如下
umount命令,是用来卸载磁盘分区的。
mount命令常用的选项有 -a , -t ,和 -o 。
/etc/fstab 配置文件
上面是查看 /etc/fstab文件的内容
含义如下:
(1)第一列就是分区的标识,可以写分区的LABEL ,分区的 UUID ,也可以写分区名(/dev/sdal)
(2)第二列是挂载点
(3)第3列是分区的格式
(4)第4列是mount的一些挂载参数。一般情况下,直接写defaults即可
(5)第5列的数字是否被dump备份。1表示备份,0表示不备份
(6)第6列的数字表示开机时是否自检磁盘。1和2都表示检测,0表示不检测。自检时,1比2优先级高,所以先检测1,再检测2。如果有多个分区需要开机检测,就都设置成2,1检测完后会同时检测2。在CentOS 7中,所有分区中该列的值都是0
下面重点学习第4列的常用选项:
(1)async/sync :async 表示与磁盘和内存不同步。系统每个一段时间就会把内存数据写入磁盘中,而sync 则会时时同步内存和磁盘中的数据。
(2)auto/noauto :表示开机自动挂载/不自动挂载。
(3)default : 表示按照大多数永久文件系统的默认值设置挂载定义,它包含了 rw ,suid ,dev ,exec ,auto ,nouser 和 async
(4)ro :表示按只读权限挂载
(5)rw :表示按可读可写权限挂载
(6)exec/noexec :表示允许/不允许可执行文件执行,但千万不要把根分区挂载为noexec,否则将无法使用系统,甚至连mount命令都无法使用
(7)user/nouser : 表示允许/不允许 root 外的其他用户挂载分区。为了安全,请用nouser
(8) suid/nosuid :表示允许/不允许分区有suid属性,一般设置nosuid
(9)usrquota : 表示启动用户的磁盘配额模式。磁盘配额会针对用户限定他们使用的磁盘额度。
(10)grquota :表示启动群组的磁盘配额模式
学完了/etc/fstab ,就可以自己修改这个文件,增加一行来挂载新增分区。
卸载之前已经挂载的/dev/sdb5
使用命令df -h 查看,会发现已经成功卸载 dev/sdb5
下面执行命令mount -a
(1)mount -a 命令会把/etc/fstab中出现的所有磁盘分区挂载上。
(2)mount -t 命令用来指定挂载的分区类型,默认不指定,会自动识别
(3)mount -o 命令用来指定挂载分区有哪些特性,及上面/etc/fstab配置文件中第4列的那些。(常用)
命令blkid 挂载磁盘是通过/dev/sdb这样的分区名字来挂载的,如果该分区先前已加入到etc/fstab 中,系统启动后则会挂载错分区。那么,怎样避免这样的情况发生呢?这就用到 UUID。我们可以通过blkid命令获取各分区的UUID
这样可以获得全部磁盘分区得UUID。如果格式化时指定了LABEL,则该命令也会显示LABEL值,文件系统得类型也会显示。
当然,这个命令后面也可以指定查询哪个分区,如下:
获得UUID后,如何使用它呢?用法如下:
如果想让某个分区在开机后自动挂载,有两个办法可以实现:
一是在/etc/fstab中添加一行,如上例中那行
二是把挂载命令写到/etc/rc.d/rc.local文件中去,系统启动后会执行这个文件中的命令。只要你把想要开机启动的命令统统写入这个文件中去(直接放到最后)即可。阿铭老师经常把挂载的命令放到改文件的最后一行。如下:
有的时候可能会遇到这样的情况,把命令写入/etv/rc.d/rc.local文件里,却并没有开机执行,这很有可能是因为系统并没有找到那个命令。所以,为了避免此类问题,阿铭老师的建议是,以后写入到改文件的命令,要使用绝对路径,比如本例中的mount应该写成/usr/bin/mount。更改完/etc/rc.d/rc.local文件后,还需要一步操作:
#chmod a+x /etc/rc.d/rc.local
这是因为,在CentOS 7 系统,该文件默认没有执行权限。以上两种方法任选其一。阿铭老师介绍第2中种方法其实也是告诉我们:如何让一些操作行为随系统启动而自动执行。
另外,阿铭老师的建议是:在挂载磁盘分区时,尽量使用UUID或者LABEL这两种方法。
命令umount
格式:这个命令后面可以跟挂载点,也可以跟分区名(如/dev/sdb1),但是不可以跟LABEL和UUID。
umount命令的-l选项非常有用。有时候会遇到不能卸载的情况。
不能卸载是因为当前目录还在卸载的分区上。
解决这个问题的办法有两种:一是进入到其他目录;二是使用umount命令的-l选项。
4.9 手动增加swap空间
它类似于Windows的虚拟内存,分区时一般指定虚拟内存的大小为实际内存的2倍。
如果你的实际内存超过4GB,那么划分8GB虚拟内存就足够日常交换了。
如果真的遇到了虚拟内存不够用的情况,就必须增加一个虚拟磁盘,因为我们不可能重新给磁盘分区。
增加虚拟磁盘的基本思路是:建立swapfile ——格式化为swap格式——启用该虚拟磁盘。
首先建立 swapfile
dd命令是常用命令,使用需要掌握其使用方法:
用 if 指定源(一般是写/dev/zero ,它是UNIX系统特有的一个文件,它可以源源不断地提供“0”),
of 指定目标文件
bs定义块的大小
count定义块的数量
bs 和 count 这两个参数决定了目标文件的大小,即目标文件大小=bs*count
上面的示例中,用dd命令建立一个大小为1.1GB的文件
下面将它格式化为swap格式,如下:
文件格式化后,就可以挂载使用了,如下:
前后对比一下swap分区,发现多了1024MB的空间。
其中free命令用来查看内存的使用情况
-m选项表示以MB为单位显示