文件系统的简单操作——磁盘

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件系统的简单操作——磁盘相关的知识,希望对你有一定的参考价值。

引言:

 用过LINUX系统的都知道,在LINUX的系统中,一切皆文件。而对于计算机上的文件来说,它们就是磁盘设备上的有着不同排列方式的0和1。如果你说我这段话和苏轼的《水调歌头》对于计算机来说有什么不同。那我也只能说,其实也就是0和1的排列方式不同而已!因此若想真正的了解LINUX上更为高级的文件系统,那么了解并熟练运用磁盘是不可或缺的一步。

 对于磁盘,本人的认识也很浅显。但是本着分享的原则我还是要说一些自己的一些小小的看法和经验,希望对于像我这样的初学者能够有所帮助,或者减轻一些学习的负担。个人认为最简单也是最直接有效的磁盘使用方法就是如此。本文中所有个人感觉比较重要的命令选项都已高亮显示方便初学者重点记忆
技术分享图片

磁盘分区:

 gfisk /dev/sdb 类fdisk 的GPT分区工具

 fdisk /dev/sdb 管理分区

子命令
p 分区列表
t 更改分区类型 例如:8e 83 8
n 创建新分区
d 删除分区
w 保存并退出
q 不保存并退出

mkfs命令是一个综合的命令,学习就应该了解本质,所以我们直接看mke2fs这个命令

mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
mke2fs:ext系列文件系统专用管理工具
-t {ext2|ext3|ext4}                   例如:mke2fs -t ext4 /dev/sda1
-b {1024|2048|4096} 指明块大小                mke2fs -b 4096 /dev/sda1
-L ‘LABEL‘ 卷标
-j: 相当于 -t ext3
-i #: 为数据空间中每多少个字节创建一个inode;此大小不应该小于block的大小
-N #:指定分区中创建多少个inode
-I 一个inode记录占用的磁盘空间大小,128---4096
-m #: 默认5%,为管理人员预留空间占总空间的百分比
-O FEATURE[,...]:启用指定特性
-O ^FEATURE:关闭指定特性

mount 挂载命令,其实我们平时用到的选项真不多

-t vsftype:指定要挂载的设备上的文件系统类型
-r: readonly,只读挂载
-w: read and write, 读写挂载
-n: 不更新/etc/mtab,mount不可见
-a:自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有auto功能)
-L ‘LABEL‘: 以卷标指定挂载设备
-U ‘UUID‘: 以UUID指定要挂载的设备
-B, --bind: 绑定目录到另一个目录上
查看内核追踪到的已挂载的所有设备: cat /proc/mounts

umount 卸载命令:

findmnt MOUNT_POINT
查看正在访问指定文件系统的进程:
lsof 挂载点
fuser -v 挂载点

终止所有在正访问指定的文件系统的进程:
fuser -km 挂载点 -----------杀死所有正在访问该设备的进程
卸载:
umount DEVICE --------------------设备:例如/dev/sdb1
umount 挂载点 --------被挂载的文件夹: 例如/app/disk1

dd 强大的磁盘处理工具

用法:
dd if=/PATH/FROM/SRC of=/PATH/TO/DEST
bs=#:block size, 复制单元大小
count=#:复制多少个bs
of=file 写到所命名的文件而不是到标准输出
if=file 从所命名文件读取而不是从标准输入

bs=size 指定块大小(既是是ibs也是obs)
ibs=size 一次读size个byte
obs=size 一次写size个byte
cbs=size 一次转化size个byte
skip=blocks 从开头忽略blocks个ibs大小的块 --------对于if负责,即只对if产生效果
seek=blocks 从开头忽略blocks个obs大小的块 --------对of生效

count=n 只拷贝n个记录

例一:

[[email protected] ~]# dd if="input file" of="output file" bs="块大小" count="多少个块"
 if 等于输入,也可以是一个设备
 of 等于输出,也可以是一个设备

例二 :

[[email protected] ~]# dd if=/etc/passwd of=/tmp/passwd.back
 此处功能跟cp 类似

例三 :

[[email protected] ~]# dd if=/dev/hdc of=/tme/mbr.back bs=512 count=1
 因为MBR存在于一个磁盘的最前面512B,所以此处相当于备份了hdc 设备的MBR

例四 :

[[email protected] ~]# dd if=/dev/sdb1 of=/tmp/boot.whole.disk
 此处是备份了整个sdb1分区的所有内容

例五 :

备份dev/sdb的分区表
 dd if=/dev/sdb of=/app/mbr.bak bs=1 count=64 skip=446 skip表示跳过if设备多少字节
 这句命令的意思就是从sbd磁盘的第446字节开始,一次读取1字节,读取64次
 dd if=/app/mbr.bak of=/dev/sdb bs=1 count=64 seek=446 seek表示跳过of设备多少字节
 这句命令的意思就是从sbd磁盘的第446字节开始,一次写入1字节,写入64次

例六 :

破坏sdb的55AA,然后通过sda恢复
 dd if=/dev/zero of=/dev/sdb bs=1 count=2 seek=510
 /dev/zero是一个只输出0的设备,55AA是存在于一个扇区的最后俩字节。
 dd if=/dev/sda of=/dev/sdb bs=1 count=2 skip=510 seek=510

以上是关于文件系统的简单操作——磁盘的主要内容,如果未能解决你的问题,请参考以下文章

Linux文件系统操作与磁盘管理

文件系统的简单的操作

[操作系统实践][简单的文件系统]

文件系统的简单操作

Linux-文件系统的简单操作

Python其实很简单 第十五章 文件操作