简单文件系统操作
$ 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命令一起使用