Linux磁盘管理
查看磁盘或容量
df命令
命令df(disk filesystem),用于查看磁盘的容量、已使用的容量、剩余容量,可以不加任何参数,默认以KB为单位显示
其中 /、/boot是我们在安装系统的时候划分出来的,/dev、/dev/shm
为内存分区,默认大小为内存大小的0.5倍,如果我们把文件存在这个分区上相当于存在了内存中,读取速度非常快,但是只是临时的 关机后自动消失。后面的/run、/sys/fs/cgroup等分区都是tmpfs,跟/dev/shm类似,为临时文件系统,我们不要碰他们.df命令的常用选项有-i、-h、-k和-m.下面介绍这四种常用选项:
- -i 查看inodes的使用状况,如果已经使用100%,即使空间有富裕,也会提示磁盘空间已满
- -h 表示使用合适的单位表示内存空间
- -k 和 -m都是以kb和mb的形式表示内存空间
命令du
du 命令用来查看某个文件的大小 其格式为 du [-参数] [文件名]
-a
表示全部的文件目录的大小都列出来。如果后面不加任何参数只会列出目录的大小,如果该命令不指定单位默认为kb
-
-b表示列出的值以B为单位输出
-
-k表示以kb为单位输出 这和默认不加任何选项的输出值是一样的
-
-m表示以mb为单位输出
-
-h 表示系统自动调节单位
- -c:表示最后加总用量。
- -s:表示只列出总和。
磁盘的分区
增加虚拟磁盘
fdisk 命令
- fdisk -l 查看磁盘分区以及分区表 后面加设备名称可以查看单个设备的分区情况
如果fdisk不加参数 后面只跟设备名称 表示对此设备进行分区
磁盘分区
- fdisk -l 查看分区情况
这里我们新添加的磁盘 /dev/sdb 大小为5g 还没有进行分区 下面来对此磁盘进行分区
- 使用fdisk /dev/sdb 进行分区 输入m查看帮助文档
- p表示打印当前的分区情况
- n表示添加一个分区
- d表示删除一个分区 输入分区号
- m 展示帮助文档
- q表示退出
- w表示保存
下面对磁盘进行主分区:
具体步骤如下
- p表示主分区 e表示扩展分区
- 第二项表示从哪个地方开始 这里选择默认 否则会浪费磁盘空间
- 第三项选择分区大小 这里选择+1000M 因为总大小为5000M
然后重复上面的步骤 对磁盘进行主分区 一共可以分4个主分区 如果 还想进行分区必须将第四个分区划为扩展分区
划分扩展分区
这里选择e扩展分区 大小为2000M
使用p命令进行查看
可以看到 /dev/sdb4为扩展分区
划分逻辑分区
我们继续在扩展分区中进行划分
此时再分区就和之前不一样了,你不再需要选择是主分区还是扩展分区,而是直接定义分区大小。值得注意的是,当创建完前3个主分区后,理应把剩余的磁盘空间全部划分给第4个扩展分区,不然剩余的空间就会浪费(在上面的示例中,阿铭其实并没有完全划分给扩展分区)。因为创建完扩展分区后,再划分新的分区时,是在已经划分的扩展分区里来分的。
上例中,/dev/sdb4为扩展分区,这个分区是不可以格式化的。你可以把它看成一个空壳子,能使用的分区为/deV/sdb5,它是/dev/sdM的子分区,这个子分区称为逻辑分区
如果从该开始直接将全部容量都划分为扩展分区,那么逻辑分区只能从5开始划分,并且不能再划分主分区,因为没有空间了
最后输入w进行保存分区配置
- 输入
fdisk -l
再次查看分区情况
对磁盘进行格式化
磁盘分区虽然分好区了,但暂时还不能用,我们还须对每一个分区进行格式化。所谓格式化,其实就是安装文件系统,Windows下的文件系统有FAT32和NTFS。前面章节中,介绍过CentOS 7以XFS作为默认的文件系统,但我们依然可以给它指定ext3或者ext4格式。
- 使用mke2fs 进行格式化 -t指定格式化类型
其他常用选项如下:
-b:表示分区时设定每个数据区块占用的空间大小。目前,每个数据块支持1024B、2048B以
及4096B。
-i:表示设定inode的大小。
-N:表示设定inode的数量。有时默认的inode数不够用,所以要自定义inode的数量。
-c:表示在格式化前先检测一下磁盘是否有问题。加上这个选项后,运行速度会非常慢。
-L:表示预设该分区的标签(label)。
-j:表示建立ext3格式的分区。如果使用mkfs.ext3格式,就不用加这个选项了。
-t:用来指定文件系统的类型,可以是ext2、ext3,也可以是ext4。
添加标签
e2label命令可以为磁盘分区添加标签 后面跟磁盘分区名和标签名
挂载分区
首先我们创建一个挂载文件
然后使用 mount
命令进行挂载
查看挂载目录
发现原来的目录文件已经不存在了
- 我们也可以使用LABEL的方式挂载分区,如下所示:
首先使用 umount取消原先的挂载 然后重新挂载
- 最后使用df -h命令进行查看
/etc/fstab 配置文件
我们先来查看一下/etc/fstab文件的内容,如下所示:
这个文件中显示了系统启动时需要挂载的各个分区
-
其中各个参数的意义如下:
□第1列就是分区的标识,可以写分区的LABEL、分区的UUID (等会阿铭会着重讲一下这个概
念),也可以写分区名(/dev/sdal )。
□第2列是挂载点。
□第3列是分区的格式。
□第4列是mount的一些挂载参数。一般情况下,直接写defaults即可。
□第5列的数字表示是否被dump备份。1表示备份,0表示不备份。
□第6列的数字表示开机时是否自检磁盘。1和2都表示检测,0表示不检测。自检时,1比2优先
级高,所以先检测1,再检测2。如果有多个分区需要开机检测,就都设置成2, 1检测完后会
同时检测2。在CentOS 7系统里,所有分区中该列的值都是0。 -
下面重点来看第四列选项:
□ async/sync: async表示与磁盘和内存不同步。系统每隔一段时间就会把内存数据写人磁盘
中,而sync则会时时同步内存和磁盘中的数据。
□ auto/noauto:表示开机自动挂载/不自动挂载。
□ default:表示按照大多数永久文件系统的默认值设置挂载定义,它包含了rw、suid、dev,
exec、 auto、 nouser和async0
□ ro:表示按只读权限挂载。
□ rw:表示按可读可写权限挂载。
□ exec/noexec:表示允许/不允许可执行文件执行,但千万不要把根分区挂载为noexec,否则将
无法使用系统,甚至连mount命令都无法使用。
□ user/nouser:表示允许/不允许root外的其他用户挂载分区。为了安全,请用nouser。
□ suid/nosuid:表示允许/不允许分区有suid属性,一般设置nosuid。
□ usrquota:表示启动用户的磁盘配额模式。磁盘配额会针对用户限定他们使用的磁盘额度。
□ grquota:表示启动群组的磁盘配额模式。
接下来我们新添加一行
LABEL=TEST123 /newdir ext4 defaults 0 0
然后卸载之前已经挂载的/dev/sdb5,如下所示:
使用命令df -h查看,会发现已经成功卸载/dev/sdb5。下面执行命令mount -a:
使用命令df -h查看,会发现多出一个文件/dev/sdb5挂载到了/newdir
下,这就是mount -a
命令执行的结果。这个-a选项会把/etc/fstab中出现的所有磁盘分区挂载上。除了-a选项外,还有两个常用的选项0
□ -t选项:用来指定挂载的分区类型,默认不指定,会自动识别。
□ -0选项:用来指定挂载的分区有哪些特性,即上面/etc/fstab配置文件中第4列的那些
由于-o选项指定了ro参数,所以该分区只读了。通过mount命令可以看到,/dev/sdb5也有ro参
数,示例命令如下: mount |grep sdb5
重新挂载,让它恢复读写,如下所示: mount -o remount /newdir
blkid命令
blkid可以查看各个分区的uuid、LABEL或者分区类型
如果想让某个分区在开机后自动挂载,有两个办法可以实现:一是在/etc/fstab中添加一行,如上例中那行;二是把挂载命令写到/etc/rc.d/rc.local
文件中去,系统启动后会执行这个文件中的命令。只要你把想要开机启动的命令统统写入到这个文件中(直接放到最后)即可。阿铭经常把挂载的命令放到该文件的最后一行,示例命令如下:
这里要使用命令的绝对路径
- 赋予文件权限
chmod 755 /etc/rc.d/rc.local
建立一个swap文件增加虚拟内存
swap介绍
Swap分区在系统的物理内存不够用的时候,把硬盘内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap分区中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。 缓存分区
安装系统时我们就接触了swap命令,它类似于Windows的虚拟内存,分区时一般指定虚拟内存的大小为实际内存的2倍。如果你的实际内存超过4GB,那么划分8GB给虚拟内存就足够日常交换了。如果真遇到了虚拟内存不够用的情况,就必须增加一个虚拟磁盘,因为我们不可能重新给磁盘分区。增加虚拟磁盘的基本思路是:建立swapfile—格式化为swap格式—启用该虚拟磁盘。
- 建立swapfile,如下所示
dd if=/dev/zero of=/tmp/newdisk bs=1M count=1024
dd命令经常用到,所以请你也要掌握它的使用方法:用if指定源(一般是写/dev/zero,它是UNIX系统特有的一个文件,它可以源源不断地提供 “0”),of指定目标文件,bs定义块的大小,count定义块的数量。bs和count这两个参数决定了目标文件的大小,即目标文件大=bscount。上面的示例中,用dd命令建立一个大小为1.1GB的文件,下面将它格式化为swap格式,命令如下:
mkswap -f /tmp/newdisk
文件格式化后,就可以挂载使用了,如下所示:
前后对比一下swap分区,我们发现多了 1024MB的空间。其中,free命令用来査看内存的使用情况,-m选项表示以MB为单位显示。