磁盘文件管理

一:查看磁盘或者目录的容量 df 和 du

1、df 查看已挂载磁盘的总容量、使用容量、剩余容量等,可以不加任何参数,默认是按k为单位显示的
image.png
df常用参数有 –i -h -k –m等

-i 使用inodes 显示结果

image.png

-h使用合适的单位显示,如G
image.png

-k -m 分别为使用K,M为单位显示
image.png

Filesystem 表示扇区,也就是你划分磁盘时所分的区;1K-blocks/1M-blocks表示以1K/1M为单位;Used 和 Available 分别是已使用和剩余;Use% 就是已经使用的百分比,如果这个值大于90% 那么你就应该注意了,磁盘很有可能马上就会变满的;Mounted on 则表示该分区(扇区)所挂载的地方。

2、du用来查看某个目录所占空间大小
语法:du [-abckmsh] [文件或者目录名] 常用的参数有:

-a:全部文件与目录大小都列出来。如果不加任何选项和参数只列出目录(包含子目录)大小。
-b:列出的值以bytes为单位输出,默认是以Kbytes


image.png

-c:最后加总
-k:以KB为单位输出
-m:以MB为单位输出
-s:只列出总和
-h:系统自动调节单位,例如文件太小可能就几K,那么就以K为单位显示,如果大到几G,则就以G为单位显示。笔者习惯用 du –sh filename 这样的形式。


image.png
3、磁盘的分区
语法: fdisk [-l ] [设备名称]

-l :后边不跟设备名会直接列出系统中所有的磁盘设备以及分区表,加上设备名会列出该设备的分区表。

image.png

image.png

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

刚进入该模式下,会有一个提示Command (m for help): 此时按m则会打印出帮助列表,如果你英文好,我想你不难理解这些字母的功能。常用的有p, n,d, w, q.
p:打印当前磁盘的分区情况。
image.png

n:重新建立一个新的分区。
w:保存操作。
q:退出。
d:删除一个分区

因为linux系统是安装在虚拟机上的,所以我可以增加一块新的磁盘。然后笔者会把新的磁盘分成多个分区。


image.png

当再次fdisk -l 查看时发现多了一个/dev/sdb设备。那么下面就来分一下这个/dev/sdb。


image.png

image.png

image.png

然后按w保存,该模式自动退出,如果你不想保存分区信息直接按q即可退出。
分区的过程,实质上是划分柱面以及修改分区表。

同步分区表

上面的fdisk操作全部是在内存中执行的,必须保存生效。保存后,内核还未识别该分区,可以查看/proc/partition目录下存在的文件,这些文件是能被内核识别的分区。运行partprobe或partx命令重新读取分区表让内核识别新的分区,内核识别后才可以格式化。而且分区结束时按w保存分区表有时候会失败,提示重启,这时候运行partprobe命令可以代替重启就生效。


image.png
4、磁盘格式化
mkfs.ext2 / mkfs.ext3 /mke2fs 格式化linux硬盘分区

当用man查询这三个命令的帮助文档时,你会发现我们看到了同一个帮助文档,这说明三个命令是一样的。常用的选项有:
-b:分区时设定每个数据区块占用空间大小,目前支持1024, 2048 以及4096 bytes每个块。
-i:设定inode大小
-N:设定inode数量,有时使用默认的inode数不够用,所以要自定设定inode数量。
-c:在格式化前先检测一下磁盘是否有问题,加上这个选项后会非常慢
-L:预设该分区的标签label
-j:建立ext3格式的分区,如果使用mkfs.ext3 就不用加这个选项了

image.png

不加任何选项,直接格式化/dev/hdb1
下面的例子分区时自定义分区的label(标签)名。
image.png

e2label 用来查看或者修改分区的标签(label)
这个命令很简单,后边直接跟分区编号,即可查看该分区的label,当想要修改标签名时,分区编号后边跟想要的标签名即可。
image.png

5、查看文件系统状态信息
lsblk(list block devices)用于列出设备及其状态,主要列出非空的存储设备。其实它只会列出/sys/dev/block中的主次设备号文件,且默认只列出非空设备。
image.png

其中上面的几列意义如下:
NAME:设备名称;
MAJ:MIN:主设备号和此设备号;
RM:是否为可卸载设备,1表示可卸载设备。可卸载设备如光盘、USB等。并非能够umount的就是可卸载的;
SIZE:设备总空间大小;
RO:是否为只读;
TYPE:是磁盘disk,还是分区part,亦或是rom,还有loop设备;
mountpoint:挂载点。
另外常用的一个选项是"-f",它可以查看到文件系统类型,和文件系统的uuid和挂载点。


image.png

每个已经格式化的文件系统都有其类型和uuid,而没有格式化的设备(如/dev/sdb3),将只显示一个Name结果,表示该设备还未进行格式化。

  blkid 查看器文件系统类型和uuid。
image.png
parted /dev/sda print和fdisk -l
image.png

image.png

虽然fdisk和gdisk分别是mbr和gpt格式的专用工具,但是仅用于查看信息还是可以的。parted能兼容两者,所以也可以。

file -s
image.png

du

du命令用于评估文件的空间占用情况,它会统计每个文件的大小,统计时会递归统计目录中的文件,也就是说,它会遍历整个待统计目录,所以统计速度上可能并不理想。

du [OPTION]... [FILE]...
选项说明:
-a, --all:列出目录中所有文件的统计信息,默认只会列出目录中子目录的统计信息,而不列出文件的统计信息
-h, --human-readable:人性化显示大小
-0, --null:以空字符结尾,即"\0"而非换行的"\n"
-S, --separate-dirs:不包含子目录的大小
-s, --summarize:对目录做总的统计,不列出目录内文件的大小信息
-c,--total:对给出的文件或目录做总计。在统计非同一个目录文件大小时非常有用。见下文例子。
--max-depth=N:只列出给定层次的目录统计,如果N=0,则等价于"-s"
-x, --one-file-system:忽略不同文件系统上的文件,不对它们进行统计
-X, --exclude-from=FILE:从文件中读取要排除的文件
--exclude=PATTERN:指定要忽略不统计的文件
image.png

image.png

image.png

image.png
搜索符合条件的文件,然后统计它们的总大小。结合find使用,效果极佳。
image.png

注意"-c"和"-s"统计的区别。


image.png
df

df用于报告磁盘空间使用率,默认显示的大小是1K大小block数量,也就是以k为单位。和du不同的是,df是读取每个文件系统的superblock信息,所以评估速度非常快。由于是读取superblock,所以如果目录下挂载了另一个文件系统,是不会将此挂载的文件系统计入目录大小的。注意,du和df统计的结果是不一样的
如果用df统计某个文件的空间使用情况,将会转而统计该文件所在文件系统的空间使用情况。

df [OPTION]... [FILE]...
选项说明:
-h:人性化转换大小的显示单位
-i:统计inode使用情况而非空间使用情况
-l, --local:只列出本地文件系统的使用情况,不列出网络文件系统信息
-T, --print-type:同时输出文件系统类型
-t, --type=TYPE:只列出给定文件系统的统计信息
-x, --exclude-type=TYPE:指定不显示的文件系统类型的统计信息
image.png
dumpe2fs

用于查看ext类文件系统的superblock及块组信息。使用-h选项将只显示superblock信息。
以下是ext4文件系统superblock的信息一部分。

6、fsck 检查硬盘有没有坏道
语法: fsck [-Aar] [分区]
-A :加该参数时,后不需要跟分区名作为参数。它会自动检查/etc/fstab 文件下的所有分区(开机过程中就会执行一次该操作);
-a :自动修复检查到有问题的分区;
-r :当检查到有坏道的分区时会让用户决定是否修复。
image.png
7、挂载和卸载文件系统
image.png

image.png

这个文件是系统启动时,需要挂载的各个分区。第一列就是分区的label;第二列是挂载点;第三列是分区的格式;第四列则是mount的一些挂载参数,等下会详细介绍一下有哪些参数,一般情况下,直接写defaults即可;第五列的数字表示是否被dump备份,是的话这里就是1,否则就是0;第六列是开机时是否自检磁盘,就是刚才讲过的那个fsck检测。1,2都表示检测,0表示不检测,在Redhat中,这个1,2还有个说法,/ 分区必须设为1,而且整个fstab中只允许出现一个1,这里有一个优先级的说法。

学完这个/etc/fstab后,我们就可以自己修改这个文件,增加一行来挂载新增分区。例如,笔者增加了这样一行
/dev/hdb1 /test1 ext3 defaults 0 0
那么系统再重启时就会挂载这个分区了。
讲完了/etc/fstab 我们继续回来讲这个mount,mout -a 如果运行了这个命令,则会把/etc/fstab中出现的所有磁盘分区挂载上。所以当你在/etc/fstab文件中增加一行后,你完全可以直接运行mount -a 来挂载你增加的那行,这样就不用重启啦。

umount 卸载设备
现在你学会了如何挂载一个设备,那么如何去卸载一个设备呢,这就要用到umount了,这个命令也简单的很,后边可以跟挂载点,也可以跟分区名(/dev/hdb1)

image.png

有时也许你会遇到比较难卸载的设备,就像在windows下无法删除U盘一样,教你一个特管用的方法就是 umount -l /dev/hdb1 ,这个-l选项有强制卸载的意思非常有用。

8、建立一个swap文件

从装系统时就接触过这个swap了,前面也说过它类似与windows的虚拟内存,分区的时候一般大小为内存的2倍,如果你的内存超过4G,那么你分8G似乎是没有必要了。分4G足够日常交换了。然而,还会有虚拟内存不够用的情况发生。如果真遇到了,莫非还要重新分一下磁盘?当然不能!那我们就增加一个虚拟的磁盘出来。

基本的思路就是:建立swapfile  格式化为swap格式  启用该虚拟磁盘

image.png

利用dd 来创建一个419M的文件/tmp/newdisk出来,其中if代表从哪个文件读,/dev/zero是linux下特有的一个0生成器,of表示输出到哪个文件,bs即块大小,count则定义有多少个块。
image.png

mkswap 这个命令是专门格式化swap格式的分区的
image.png

free 是用来查看系统内存以及虚拟内存使用情况的,-m选项是以M的形式查看。可以看到当前系统的。而swapon 是启用我们新建的swap文件,启用后再用free查看发现多了400M。
image.png

我们还可以用swapoff 关闭启用的swap文件。

你可能感兴趣的:(磁盘文件管理)