当前位置:   article > 正文

文件系统与磁盘管理_文件与磁盘管理c

文件与磁盘管理c

查看磁盘与目录容量

df命令查看磁盘的容量
  df
在这里插入图片描述
  物理主机上的 /dev/sda2是对应着主机硬盘的分区,后面的数字表示分区号,数字前面的字母 a 表示第几块硬盘(也可能是可移动磁盘),你如果主机上有多块硬盘则可能还会出现/dev/sdb/dev/sdc 这些磁盘设备都会在 /dev 目录下以文件的存在形式。“1k-块”,它表示以磁盘块大小的方式显示容量。挂载点:Linux以目录为主,磁盘是挂载在某一目录下的。
  df -h //以k,M,G为单位显示容量
du命令查看目录的容量
  du //以块为单位
  du -h //加上-h参数,以更易读的方式展示
  用-d参数指定查看目录深度:
  du -h -d 0 ~ //只查看1级目录的信息
  du -h -d 1 ~ //查看2级
在这里插入图片描述
常用参数:

du -h   //同--human-readable 以K,M,G为单位,提高信息的可读性。 
du -a   //同--all 显示目录中所有文件的大小。 
du -s   //同--summarize 仅显示总计,只列出最后加总的值。
  • 1
  • 2
  • 3

dd命令简介:

  dd命令用于转换和复制文件,在 Linux 中,一切即文件,硬件的设备驱动(如硬盘)和特殊设备文件(如/dev/zero/dev/random)都像普通文件一样,只是在各自的驱动程序中实现了对应的功能,dd 也可以读取文件或写入这些文件。dd程序也可以在复制时处理数据,例如转换字节序、或在 ASCII 与 EBCDIC 编码间互换。
dd的命令行语句与其他的 Linux 程序不同,因为它的命令行选项格式为选项=值,而不是更标准的–选项 值或-选项=值。dd默认从标准输入中读取,并写入到标准输出中,但可以用选项if(input file,输入文件)和of(output file,输出文件)改变。
如用dd命令从标准输入读入用户的输入到标准输出或者一个文件中:
输出到test文件:
  dd of=test bs=10 count=1 //或者 dd if=/dev/stdin of=test bs=10 count=1
输出到标准输出:
  dd if=/dev/stdin of=/dev/stdout bs=10 count=1
  //在打完了上述命令后,继续在终端打字,作为你的输入
在这里插入图片描述
  上述命令从标准输入设备读入用户输入(缺省值,所以可省略)然后输出到 test 文件,bs(block size)用于指定块大小(缺省单位为 Byte,也可为其指定如’K’,‘M’,'G’等单位),count用于指定块数量。
  在上述命令中我们指定只读取10个字节的数据,但我们输入了“hello shiyanlou”之后加上空格回车总共 16 个字节(一个英文字符占一个字节)内容,显然超过了设定大小。使用ducat命令看到的写入完成文件实际内容确实只有 10 个字节(那个黑底百分号表示这里没有换行符),而其他的多余输入将被截取并保留在标准输入。
dd在拷贝的同时还可以实现数据转换:

dd if=/dev/stdin of=test bs=10 count=1 conv=ucase 
//将标准输入里的英文字符转换为大写再写入test文件
  • 1
  • 2

用dd创建虚拟镜像文件

/dev/zero设备创建一个容量为 256M 的空文件:
  dd if=/dev/zero of=virtual.img bs=1M count=256
  du -h virtual.img //查看大小
然后我们要将这个文件格式化(写入文件系统)
我们可以使用下面的命令来将我们的虚拟磁盘镜像格式化为ext4文件系统:
  sudo mkfs.ext4 virtual.img
使用mount 命令挂载磁盘到目录树
  用户在 Linux/UNIX 的机器上打开一个文件之前,包含该文件的文件系统必须先进行挂载的动作,此时用户要对该文件系统执行 mount 的指令以进行挂载。Linux/UNIX 命令行的 mount 指令是告诉操作系统,对应的文件系统已经准备好,可以使用了,而该文件系统会对应到一个特定的点(称为挂载点)。挂载好即可供用户使用。
  sudo mount //查看下主机已经挂载的文件系统
在这里插入图片描述
  输出的结果中每一行表示一个设备或虚拟设备,每一行最前面是设备名,然后是 on 后面是挂载点,type 后面表示文件系统类型,再后面是挂载选项(比如可以在挂载时设定以只读方式挂载等等)。
挂载录树:
mount [-o [操作选项]] [-t 文件系统类型] [-w|--rw|--ro] [文件系统源] [挂载点]
现在直接来挂载我们创建的虚拟磁盘镜像到/mnt目录:

mount -o loop -t ext4 virtual.img /mnt
mount -o loop --ro virtual.img /mnt  //以只读方式挂载
sudo umount /mnt   //卸载已挂载磁盘
  • 1
  • 2
  • 3

磁盘挂载到目录树后要对磁盘分区:
  sudo fdisk -l //查看硬盘分区表信息
在这里插入图片描述
  输出结果中开头显示了主机上的磁盘的一些信息,包括容量扇区数,扇区大小,I/O 大小等信息。我们重点看一下中间的分区信息,/dev/sda1/dev/sda2 为主分区分别安装了 Windows 和 Linux 操作系统,/dev/sda3 为交换分区(可以理解为虚拟内存),/dev/sda4为扩展分区,其中包含/dev/sda5,/dev/sda6,/dev/sda7,/dev/sda8 四个逻辑分区,因为主机上有几个分区之间有空隙,没有对齐边界扇区,所以分区之间不是完全连续的。
  sudo fdisk virtual.img //进入磁盘分区模式
在这里插入图片描述
  操作前我们首先应先规划好我们的分区方案:这里我将在使用 128M(可用 127M 左右)的虚拟磁盘镜像创建一个 30M 的主分区剩余部分为扩展分区包含 2 个大约 45M 的逻辑分区。
在这里插入图片描述
最后不要忘记输入w写入分区表。

使用 losetup 命令建立镜像与回环设备的关联

sudo losetup /dev/loop0 virtual.img  //建立设备关联
# 如果提示设备忙你也可以使用其它的回环设备,"ls /dev/loop*"参看所有回环设备 
sudo losetup -d /dev/loop0  //解除设备关联
  • 1
  • 2
  • 3

  然后再使用mkfs格式化各分区(前面我们是格式化整个虚拟磁盘镜像文件或磁盘),不过格式化之前,我们还要为各分区建立虚拟设备的映射,用到kpartx工具,需要先安装:

sudo apt-get install kpartx 
sudo kpartx -av /dev/loop0  //建立映射
sudo kpartx -dv /dev/loop0  //取消映射 
  • 1
  • 2
  • 3

接着再是格式化,我们将其全部格式化为 ext4

sudo mkfs.ext4 -q /dev/mapper/loop0p1 
sudo mkfs.ext4 -q /dev/mapper/loop0p5 
sudo mkfs.ext4 -q /dev/mapper/loop0p6
  • 1
  • 2
  • 3

格式化完成后在/media目录下新建四个空目录用于挂载虚拟磁盘:
mkdir -p /media/virtualdisk_{1..3} //建立目录

挂载磁盘分区 
sudo mount /dev/mapper/loop0p1 /media/virtualdisk_1 
sudo mount /dev/mapper/loop0p5 /media/virtualdisk_2 
sudo mount /dev/mapper/loop0p6 /media/virtualdisk_3 
卸载磁盘分区 
sudo umount /dev/mapper/loop0p1 
sudo umount /dev/mapper/loop0p5 
sudo umount /dev/mapper/loop0p6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

然后:
df -h //看是否分区与挂载成功

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/1004483
推荐阅读
  

闽ICP备14008679号