zoukankan      html  css  js  c++  java
  • 文件系统操作与磁盘管理

      简单文件系统操作

     $ df  //查看磁盘的容量

     一般情况下,我们值关心第一行的内容也就是环境中的rootfs或物理主机上的/dev/sda2。

     "rootfs"(Root File System)是Ramfs(ramfs是一个简单的Linux文件系统用于实现磁盘缓存机制作为动态可调整大小的基于ram的文件系统)或tmpfs的一个特殊实例,它作为系统启动时内核载入内存之后,在挂在真正的磁盘之前的一个临时文件系统。通常的主机会在系统启动后用磁盘上的文件系统替换,只是在一些嵌入式系统中会只存在一个rootfs,或运行在虚拟环境中共享主机资源的系统也可能会采用这种方式。

     物理主机上的/dev/sda2是对应着主机硬盘的分区,后面的数字表示分区号,数字前面的字母表示第几块硬盘。若主机上有多块硬盘还可能出现/dev/sdb,/dev/sdc。这些磁盘设备都会在/dev目录下以文件的形式存在。

     1k-blocks表示磁盘块呆奥的方式显示容量,后面为相应的一块大小表示的已用和可用容量。

     $ df  -h  //查看主机磁盘的使用情况

     $ du  //查看目录的容量 

     $ du -h //已更易读的方式展示

     $ du -h -d 1~  //只查看1级目录的信息

      简单的磁盘管理

     创建虚拟磁盘

     $ dd  //用于转换和复制文件。它的命令行选项格式为选项=值,而不同于标准的 --选项 值或 -选项=值。dd默认从标准输入中读取,并写入到标准输出中。可以用if(input file)和of(output file)改变。

     $ dd of=test bs=10 count=1 //输出到文件

     $ dd if=/dev/stdin of=/dev/stdout bs=10 count=1 //输出到标准输出

     bs(block size)用于指定块大小(缺省单位为byte),count指定块数量

     $ dd if=/dev/stdin of=test bs=10 count=1 conv=ucase #将输入的英文转换成大写再写入文件

     $ dd if=/dev/zero of=virtual.img bs=1M count=256  //创建一个容量为256M的空文件

     $ du -h virtual.img

      使用mkfs命令格式化磁盘

     $ mkfs #按下Tab键会显示一些可以格式化的文件系统

     $ mkfs.ext4 virtual.img  #格式化ext4文件系统

     $ ls -l /lib/modules.$(uname -r)/kernel/fs  #查看Linux支持那些文件系统

      使用mount命令挂在磁盘到目录树

     用户在Linux/UNIX的机器上打开一个文件以前,包含该文件的文件系统必须先进行挂载的动作,此时用户要求对该文件系统执行mount的指令以进行挂载。通常是使用在USB或其他可移出存储设备上,而根目录则需要始终保持挂在的状态。又因为Linux/UNIX文件系统可以对应一个文件而不一定是硬件设备,所以可以挂载一个包含文件系统的文件到目录树。

     Linux/UNIX命令行的mount指令是告诉操作系统,对应的文件系统已准备好,可以使用了,而该文件系统会对应到一个特定的点(挂载点)。挂载好的文件、目录、设备以及特殊文件即可提供用户使用。

     $ sudo mount  #查看主机下已挂载了的文件系统   输出的结果中每一行表示一个设备或虚拟设备,每一行最前面是设备名,然后是on,后面是挂载点,type表示文件系统类型,在后面是挂载选项,如在挂载时设定以只读方式挂载。

     mount的命令格式如下 : mount [options] [source] [directory]

     常用操作  mount [-o [操作选项]] [-t 文件系统类型] [-w|--rw|--ro] [文件系统源] [挂载点]

     $ mount -o loop -t ext4 virtual.img /mnt 

     $ mount -o loop --ro virtual.img /mnt  #已只读的方式挂载

     使用unmout命令卸载已挂载磁盘

     $ sudo unmount /mnt

     在类UNIX系统中,/dev/loop(或称vnd、lofi)是一种伪设备,这种设备使得文件可以如同块设备一样被访问。

     在使用之前,循环设备i必须与现存文件系统上的文件相关联。这种关联将提供给用户一个应用程序接口,接口将允许文件视为块特殊文件使用。若文件中包含一个完整的文件系统,那么这个文件就如同磁盘设备一般被挂载。

     这种设备文件经常被用于光盘或磁盘镜像。通过循环挂载来挂载包含文件系统的文件,便使处在这个文件系统中的文件得以被访问。这些文件将出现在挂载点目录。若挂载目录中本身有文件,这些文件在挂载后将被禁止使用。

      使用fdisk为磁盘分区

     $ sudo fdisk -l  //查看硬盘分区表信息

     /dev/sda1,/dev/sda2为主分区分别安装了Windows和Linux操作系统,/dev/sda3为交换分区,/dev/sda4为扩展分区其中包含/dev/sda5,/dev/sda6,/dev/sda7,/dev/sda8四个逻辑分区,主机上有几个分区是有空隙的,没有对齐边界扇区,所以分区间是不连续的。

     $ sudo fdisk virtual.img  //进入磁盘分区模式

     $ sudo losetup /dev/loop0 virtual.img   //使用losetup命令建立镜像与回环设备的关联

     $ sudo losetup -d /dev/loop0  //解除设备关联

     然后在使用mkfs格式化各分区,在格式化之前,还要为各分区建立虚拟设备的映射。用kpartx,需先安装

     $ sudo apt-get install kpartx

     $ sudo kpart kpartx -av /dev/loop0  

     $ sudo kpart kpartx -dv /dev.loop0  //取消映射

     将分区全部格式化为ext4

     $ sudo mkfs.ext4 -q /dev/mapper/loop0p1

     $ sudo mkfs.ext4 -q /dev/mapper/loop0p5

     $ sudo mkfs.ext4 -q /dev/mapper/loop0p6

     格式化完成后在/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  //挂载磁盘分区

     

     cowsay 可以在终端里以动物说话的形式打印出一段话

     $ sudo  apt-get install cowsay  //安装cowsay

     $ cowsay hello world   //默认以一头的身份打印hello world

     $ cowsay -l  //查看所有可以支持的动物

     $ cowsay -f elephant hello world  //使用-f选择动物种类

     $ fortune | cowsay -f daemon //还可与fortune命令一起使用

     

  • 相关阅读:
    HRBUST 1849 商品中心
    UVA 11600 Masud Rana
    Codeforces Round #580 (Div.1)
    loj 6270 数据结构板子题
    luogu P1758 [NOI2009]管道取珠
    luogu P1852 [国家集训队]跳跳棋
    51nod 2589 快速讨伐
    SICP_3.9-3.11
    SICP_3.7-3.8
    SICP_3.5-3.6
  • 原文地址:https://www.cnblogs.com/forerver-elf/p/4688891.html
Copyright © 2011-2022 走看看