磁盘管理

2021/8/28 6:06:19

本文主要是介绍磁盘管理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

磁盘管理

1、查看磁盘或者目录的容量

1.1、命令 : df

“df” 常用选项有 “-i” “-h” “-k” “-m”等

通常使用-h,“-h” 使用合适的单位显示

[root@antong ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        908M     0  908M   0% /dev
tmpfs           919M   24K  919M   1% /dev/shm
tmpfs           919M  612K  919M   1% /run
tmpfs           919M     0  919M   0% /sys/fs/cgroup
/dev/vda1        59G  4.7G   52G   9% /
tmpfs           184M     0  184M   0% /run/user/0

使用“-i” 查看inodes使用状况

[root@antong ~]# df -i
Filesystem      Inodes  IUsed   IFree IUse% Mounted on
devtmpfs        232302    317  231985    1% /dev
tmpfs           235249      7  235242    1% /dev/shm
tmpfs           235249    450  234799    1% /run
tmpfs           235249     16  235233    1% /sys/fs/cgroup
/dev/vda1      3932160 107287 3824873    3% /
tmpfs           235249      1  235248    1% /run/user/0
1.2、命令 : du

“du” 用来查看某个目录或文件所占空间大小.

语法 : du [-abckmsh] [文件或者目录名] 常用的参数有:

“-a” 全部文件与目录大小都列出来。如果不加任何选项和参数只列出目录(包含子目录)大小。

[root@antong ~]# du /root/
8       /root/.cache/pip/selfcheck
12      /root/.cache/pip
8       /root/.cache/abrt
24      /root/.cache
8       /root/.pip
4       /root/.local/lib/python3.7/site-packages
8       /root/.local/lib/python3.7
12      /root/.local/lib
16      /root/.local
8       /root/.ssh
4       /root/.config/abrt
8       /root/.config
116     /root/

文件多时,使用du -a 命令的时候通过管道符输出前10行,如下所示

[root@antong ~]# du -a /root | head
4     /root/.lesshst
4     /root/.cshrc
4     /root/.bashrc
8     /root/.viminfo
4     /root/.bash_logout
4     /root/.cache/pip/selfcheck/4b4540288f36dc39a1d4330b3bb43614246a67c86757503ae13396d8
8     /root/.cache/pip/selfcheck
12    /root/.cache/pip
4     /root/.cache/abrt/lastnotification
8     /root/.cache/abrt

如果du不指定单位的话,默认显示单位为K.

“-b” 列出的值以bytes为单位输出。

“-k” 以KB为单位输出,和默认不加任何选项的输出值是一样的。

“-m” 以MB为单位输出

“-h” 系统自动调节单位,例如文件太小可能就几K,那么就以K为单位显示,如果大到几G,则就以G为单位显示。

“-c” 最后加总

“-s” 只列出总和

以上参数中-sh比较常用

2、磁盘分区格式化

一个全新的磁盘来分区并格式化,可以通过虚拟机添加一个新的硬盘来练手。

  1. 先关闭正在运行的Linux系统 init 0.

  2. 到vmware的Linux虚拟机界面,点 “Edit virtual machine settings”, 点一下左侧靠下面的 “Add...” 按钮。

  3. 在左侧选中 “Hard Disk” 默认就是这一行,点右下角的 “Next”, 继续点 “Next”.

  4. “Virtual disk type” 选择 IDE, 点 “Next”

  5. 继续点 “Next”, “Disk size” 默认即可,最后点 “Finish”.

2.1、命令 : fdisk

fdisk 是Linux下硬盘的分区工具,是一个非常实用的命令,但是fdisk只能划分小于2T的分区。

语法 : fdisk [-l ] [设备名称] 选项只有一个,“-l” 后边不跟设备名会直接列出系统中所有的磁盘设备以及分区表,加上设备名会列出该设备的分区表。

[root@antong ~]# fdisk -l
Disk /dev/vda: 64.4 GB, 64424509440 bytes, 125829120 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0009ac89

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048   125829086    62913519+  83  Linux

“fdisk” 如果不加 “-l” 则进入另一个模式,在该模式下,可以对磁盘进行分区操作。

‘m’ 会列出常用的命令,常用的有’p’, ‘n’, ‘d’, ‘w’, ‘q’

“p” 打印当前磁盘的分区情况

‘n’ 建立一个新的分区:使用 ‘n’ 命令新建分区,它会提示是要 ‘e’ (扩展分区) 还是 ‘p’ (主分区) 我的选择是 ‘p’, 于是输入 ‘p’ 然后回车。

‘w’ 保存操作

‘q’ 退出

‘d’ 删除一个分区

3.格式化磁盘分区

3.1命令 : mke2fs, mkfs.ext2, mkfs.ext3, mkfs.ext4

4个命令常用的选项有:

‘-b’ 分区时设定每个数据区块占用空间大小,目前支持1024, 2048 以及4096 bytes每个块。

‘-i’ 设定inode的大小

‘-N’ 设定inode数量,有时使用默认的inode数不够用,所以要自定设定inode数量。

‘-c’ 在格式化前先检测一下磁盘是否有问题,加上这个选项后会非常慢

‘-L’ 预设该分区的标签label

‘-j’ 建立ext3格式的分区,如果使用mkfs.ext3 就不用加这个选项了

‘-t’ 用来指定什么类型的文件系统,可以是ext2, ext3 也可以是 ext4.

3.2命令 : e2label

用来查看或修改分区的标签,了解一下即可。

[root@antong ~]# e2label /dev/vda1 Test
[root@antong ~]# e2label /dev/vda1
Test

4.挂载/卸载磁盘

在挂载某个分区前需要先建立一个挂载点,这个挂载点是以目录的形式出现的。一旦把某一个分区挂载到了这个挂载点(目录)下,那么再往这个目录写数据使,则都会写到该分区中。这就需要你注意一下,在挂载该分区前,挂载点(目录)下必须是个空目录。其实目录不为空并不影响所挂载分区的使用,但是一旦挂载上了,那么该目录下以前的东西就不能看到了。只有卸载掉该分区后才能看到。

4.1命令 : mount

如果不加任何选项,直接运行 “mount” 命令,会显示如下信息。

[root@antong ~]# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,size=929208k,nr_inodes=232302,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup //下面还有,不在此展示了

mount挂载后可以通过df -h来查看挂载的分区信息

“umount” 命令,这个是用来卸载磁盘分区的,mount 命令常用的选项有:’-a’, ‘-t’, ‘-o’. 在讲 ‘-a’ 选项前,我们有必要先了解一下这个文件 /etc/fstab

这个文件是系统启动时,需要挂载的各个分区。第一列就是分区的标识,可以写分区的LABEL,也可以写分区的UUID(等会笔者会着重讲一下这个概念),当然也可以写分区名(/dev/sda1);第二列是挂载点;第三列是分区的格式;第四列则是mount的一些挂载参数,等下会详细介绍一下有哪些参数,一般情况下,直接写defaults即可;第五列的数字表示是否被dump备份,是的话这里就是1,否则就是0;第六列是开机时是否自检磁盘。1,2都表示检测,0表示不检测,在Redhat/CentOS中,这个1,2还有个说法,/ 分区必须设为1,而且整个fstab中只允许出现一个1,这里有一个优先级的说法。1比2优先级高,所以先检测1,然后再检测2,如果有多个分区需要开机检测那么都设置成2吧,1检测完了后会同时去检测2。

“async/sync” : async表示和磁盘和内存不同步,系统每隔一段时间把内存数据写入磁盘中,而sync则会时时同步内存和磁盘中数据;

“auto/noauto” : 开机自动挂载/不自动挂载;

“default” : 按照大多数永久文件系统的缺省值设置挂载定义,它包含了rw, suid, dev, exec, auto, nouser, async

“ro” : 按只读权限挂载 ;

“rw” : 按可读可写权限挂载 ;

“exec/noexec” : 允许/不允许可执行文件执行,但千万不要把根分区挂载为noexec,那就无法使用系统了,连mount命令都无法使用了,这时只有重新做系统了;

“user/nouser” : 允许/不允许root外的其他用户挂载分区,为了安全考虑,请用nouser ;

“suid/nosuid” : 允许/不允许分区有suid属性,一般设置nosuid ;

“usrquota” : 启动使用者磁盘配额模式,磁盘配额相关内容在后续章节会做介绍;

“grquota” : 启动群组磁盘配额模式;

不过这个文件请谨慎配置,配置错误的话可能没有办法开机哦!

4.2命令 : blkid

通过 blkid 命令获取各分区的UUID。

[root@antong ~]# blkid 
/dev/sr0: UUID="2021-08-23-22-16-21-00" LABEL="config-2" TYPE="iso9660" 
/dev/vda1: LABEL="Test" UUID="4b499d76-769a-40a0-93dc-4a31a59add28" TYPE="ext4" 

这样可以获得全部磁盘分区的UUID,如果格式化的时候指定了 LABEL 则该命令也会显示LABEL值,甚至连文件系统类型也会显示,当然这个命令后面也可以指定哪个分区。

[root@antong ~]# blkid /dev/vda1 
/dev/vda1: LABEL="Test" UUID="4b499d76-769a-40a0-93dc-4a31a59add28" TYPE="ext4" 
4.3命令 : umount

这个命令也很简单,后边可以跟挂载点,也可以跟分区名(/dev/hdb1), 但是不可以跟LABEL和UUID。

umount 命令有一个非常有用的选项那就是 ‘-l’, 有时候你会遇到不能卸载的情况,这是因为当前目录为要卸载的分区上,解决办法有两种,一是到其他目录,二是使用 ‘-l’ 选项。

4.4建立一个swap文件增加虚拟内存

swap它类似与windows的虚拟内存,分区的时候一般大小为内存的2倍,如果你的内存超过8G,那么你分16G似乎是没有必要了。分16G足够日常交换了。如果虚拟内存还是不够用,我们再增加一个虚拟的磁盘出来就好了。

其中 “free” 这个命令用来查看内存使用情况, “-m” 表示以M为单位显示。

4.5LVM讲解

LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。

检查系统中是否安装了LVM管理工具

[root@antong ~]# rpm -qa | grep lvm
lvm2-2.02.187-6.el7_9.5.x86_64
lvm2-libs-2.02.187-6.el7_9.5.x86_64

没有安装使用yum方式来安装

[root@antong ~]# yum install -y lvm*

手动添加1个硬盘:sdb 30G

①先开始创建物理卷PV

pvcreate 将物理分区新建为pv

pvs/pvscan 查看系统里有pv的磁盘

pvdisplay 显示系统上面的pv状态

pvremove 删除pv

[root@antong ~]# pvcreate /dev/sdb   //使用pvs查看创建的物理卷

②创建卷组vg

[root@antong ~]# vgcreate -s 16M vgEric /dev/sdb

vgcreate [-s xM] vgName /dev/sd ……  新建vg,-s后面接pe的大小(可选),单位是M,G,可以放多块pv

vgextend 扩展vg,就是增加pv

vgs/vgscan 查看系统里有vg的磁盘

vgdisplay 显示系统上面的vg状态

vgremove 删除vg

vgreduce 在vg里删除pv

③创建逻辑卷lv

[root@antong ~]# lvcreate -l 512 -n lvEric vgEric

lvcreate -l pe num /-L size -n lvname vgName  新建lv,-l指定pe的个数,-L指定容量,M,G

lvextend 增加容量

lvs/lvscan 查看系统里有lv的磁盘

lvdisplay 显示系统上面的lv状态

lvremove 删除lv

lvreduce 在lv里减少容量

④格式化新建的LV

[root@antong ~]# mkfs.ext4 /dev/vgEric/lvEric

⑤挂载使用

[root@antong ~]# mount /dev/vgEric/lvEric /mnt/

使用df -h查看挂载信息

删除LVM只需要将顺序反着来即可。



这篇关于磁盘管理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程