引言:

 用过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个记录

例一:

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

例二 :

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

例三 :

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

例四 :

[root@localhost ~]# 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 **