1.  /dev目录下有所有已经连接到操作系统上的设备,他们能在/dev里出现就表示他们在硬件层面和系统核心层面被识别了。对于stdin、stdout、zero等设备是可以直接用> <这些访问符     访问的,但是对于块设备是不能直接访问的。

    块设备是具有一定结构的随机存取设备,对这种设备的读写是按块来进行的,他使用缓冲区来暂时存放数据。而字符设备是一个顺序设备,对这种设备的读写是按字符来进行的,而这些字    符是连续的形成了一个数据流。他不具有缓冲区,所以对这种设备的读写是实时的。(资料:linux系统之linux块设备的详解

   我理解块设备如同Map List集合这种数据结构,而字符设备如同堆栈这种先进后出的数据结构。两种数据结构明显集合比堆栈更加灵活,使用更加方便,而且对已一般人而言Map list的数      据结构经过了高手的封装使用起来效率也更高。

    相对应于我说的封装。事实是块设备还是字符设备的定义属于操作系统的设备访问层,与实际物理设备没有必然的哦联系。设备访问层下面是驱动程序,是驱动程序来支持设备是块设备还    是字符设备的。

   访问块设备最一般的方式就是给块设备安装文件系统。一般来说,没有文件系统的块设备是不能被访问的。如果一个设备本身是有文件系统的,我们应该怎样访问这个文件系统哪?这就需       要linux下最常见的一个命名mount。

2.linux磁盘命令df可以查看已经被挂载的块设备的使用情况。直接在Terminal输入df可以查看到一下信息

harvey@harvey-Virtual-Machine:~$ df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda1 40144476 3211660 34870532 9% /
udev 483036 4 483032 1% /dev
tmpfs 197044 716 196328 1% /run
none 5120 0 5120 0% /run/lock
none 492600 176 492424 1% /run/shm

Filesystem 1 K-blocks Used Available Use% Mounted on
该文件系统对应的块设备的路径在/dev文件夹下 该文件系统包含的数据块的数目 已经使用的数据块 没有使用的数据块 已用占总量的百分比 文件系统的挂载点

3.

harvey@harvey-PC ~
$ find /dev -name "sd*"
/dev/sda
/dev/sda1
/dev/sda2

代码中找sd开头的设备为sda sda1 sda2中sda表示该系统只有一个硬盘,有两个逻辑分区,一个主分区,直接查看是看不到主分区的内容的。

4.查看存储在磁盘上最开始位置的分区表信息的命令是fdisk –l

5.完整操作创建一个空的文件系统并挂载

harvey@harvey-Virtual-Machine:~$ dd if=/dev/zero of=loopfile.img bs=1G count=1  #创建一个1G的数据,用来作为虚拟设备的载体
记录了1+0 的读入
记录了1+0 的写出
1073741824字节(1.1 GB)已复制,73.8948 秒,14.5 MB/秒
harvey@harvey-Virtual-Machine:~$ ls #创建成功
D:wuxi.txt loopfile.img 模板 图片 下载 桌面
examples.desktop 公共的 视频 文档 音乐
harvey@harvey-Virtual-Machine:~$ file loopfile.img #刚创建的文件数据类型是data
loopfile.img: data
harvey@harvey-Virtual-Machine:~$ mkf #查看系统所有的文件系统类型
mkfifo mkfs mkfs.ext2 mkfs.ext4dev mkfs.ntfs
mkfontdir mkfs.bfs mkfs.ext3 mkfs.minix mkfs.vfat
mkfontscale mkfs.cramfs mkfs.ext4 mkfs.msdos
harvey@harvey-Virtual-Machine:~$ mkfs.ext4 loopfile.img #对载体分区,改变数据类型
mke2fs 1.42 (29-Nov-2011)
loopfile.img is not a block special device.
无论如何也要继续? (y,n) y
Discarding device blocks: 完成
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 262144 blocks
13107 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376 Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (8192 blocks): 完成
Writing superblocks and filesystem accounting information: 完成 harvey@harvey-Virtual-Machine:~$ file loopfile.img #查看赋予文件系统的文件的类型改变了
loopfile.img: Linux rev 1.0 ext4 filesystem data, UUID=a23e0869-e3fa-438d-afcd-be73ee8e5f6b (extents) (large files) (huge files)
harvey@harvey-Virtual-Machine:~$ ll /mnt #mnt默认什么都没有
总用量 8
drwxr-xr-x 2 root root 4096 4月 19 2012 ./
drwxr-xr-x 24 root root 4096 3月 21 15:59 ../
harvey@harvey-Virtual-Machine:~$ sudo mkdir /mnt/loopback #mnt下创建loopback文件夹,用来显示查看到的挂载后的设备。所谓挂载如同数据类型的转换,不转换就无法交互使用
[sudo] password for harvey:
harvey@harvey-Virtual-Machine:~$ ll /mnt/loopback/ #loopback文件夹创建成功,并且是空的目录
总用量 8
drwxr-xr-x 2 root root 4096 3月 21 20:40 ./
drwxr-xr-x 3 root root 4096 3月 21 20:40 ../
harvey@harvey-Virtual-Machine:~$ sudo mount -o loop loopfile.img /mnt/loopback/ #回环挂载设备
harvey@harvey-Virtual-Machine:~$ ll /mnt/loopback/ #loopback挂载设备后创建了一个lost+fount文件夹--可能是文件系统的日志文件还没研究
总用量 24
drwxr-xr-x 3 harvey harvey 4096 3月 21 20:39 ./
drwxr-xr-x 3 root root 4096 3月 21 20:40 ../
drwx------ 2 root root 16384 3月 21 20:39 lost+found/
harvey@harvey-Virtual-Machine:~$ df #查看文件系统挂载列表 最后一行对loop0设备挂载了/mnt/loopback
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda1 40144476 3244852 34837340 9% /
udev 483036 4 483032 1% /dev
tmpfs 197044 716 196328 1% /run
none 5120 0 5120 0% /run/lock
none 492600 176 492424 1% /run/shm
/dev/loop0 999320 1284 929224 1% /mnt/loopback
harvey@harvey-Virtual-Machine:~$ umount /mnt/loopback #卸载挂载
umount:/mnt/loopback 不在 fstab 中(并且您不是 root 用户)
harvey@harvey-Virtual-Machine:~$ sudo umount /mnt/loopback
harvey@harvey-Virtual-Machine:~$ df #文件系统挂载类别没有了loop0设备的挂载信息
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda1 40144476 3244864 34837328 9% /
udev 483036 4 483032 1% /dev
tmpfs 197044 716 196328 1% /run
none 5120 0 5120 0% /run/lock
none 492600 176 492424 1% /run/shm
harvey@harvey-Virtual-Machine:~$ ll /mnt/loopback/ #/mnt/loopback目录下的lost+find文件夹也没有了
总用量 8
drwxr-xr-x 2 root root 4096 3月 21 20:40 ./
drwxr-xr-x 3 root root 4096 3月 21 20:40 ../

参考资料:losetup -- 设置循环设备

loop 设备 (循环设备)

Linux 文件系统剖析 

Linux 下使用mount命令挂载CDROM

linux文件系统之loop环设备--新建一个文件系统并挂载的更多相关文章

  1. linux磁盘之回环设备

    为什么要讲回环设备,下面看下系统的采样情况 上面图有loop0,loop1等设备标记,这些是什么?看看下面fdisk -l 的结果,乱糟糟的一堆? 什么是回环设备? 上面的loop0, loop1就是 ...

  2. 使用VMware新建一个Linux系统虚拟机(全)

    我们将其分为两步,1:新建虚拟机:2:安装Red Hat Enterprse Linux 6操作系统 1.首先我们新建一个虚拟机,先不安装操作系统,稍后再对其安装Linux系统. 新建虚拟机步骤如下: ...

  3. linux 创建虚拟块设备,制作文件系统并挂载,用于测试lustre

    1.制作块文件 3 个 [root@localhost yaoxu]# [root@localhost yaoxu]# [root@localhost yaoxu]# 2.创建回环设备 [root@l ...

  4. 阿里云Linux格式化数据盘,分区并挂载一个文件系统

    阿里云一块全新的数据盘挂载到ECS实例后,您必须创建并挂载至少一个文件系统.本示例使用I/O优化实例,操作系统为CentOS 7.6,为一块新的300GiB数据盘(设备名为/dev/vdb)创建一个M ...

  5. 【每天一个Linux命令】10. 用户账号的新建/修改/删除以及密码修改 useradd/usemod/userdel/passwd

    在 Linux 系统中,与用户管理有关的文件主要有如下几个:分别是/etc/passwd,/etc/shadow,/etc/gfoup,/etc/gshadow .它们分别与用户的账号,密码,用户组及 ...

  6. centos 安装MATLAB :设置回环设备失败: 没有那个文件或目录

    基本参数:centos 7 x86_64,linux 系统, 安装matlab, 已经下载R2016b_glnxa64.iso 但挂载的时候遇到问题: [root@lf mnt]# mount -o  ...

  7. Linux系统安全学习笔记(1)-- 文件系统类型

    今天看了一个关于Linux系统安全的视频教程,这个教程有很多的知识点,我会分几篇博文将我的笔记分享出来. 首先是关于Linux文件系统类型的一些知识,Linux有四种常见的文件系统类型(网上大多数是3 ...

  8. 管理员技术(六): 硬盘分区及格式化、 新建一个逻辑卷、调整现有磁盘的分区、扩展逻辑卷的大小、添加一个swap分区

    一.硬盘分区及格式化 问题: 本例要求熟悉硬盘分区结构,使用fdisk分区工具在磁盘 /dev/vdb 上按以下要求建立分区: 1> 采用默认的 msdos 分区模式        2> ...

  9. linux驱动开发之块设备学习笔记

    我的博客主要用来存放我的学习笔记,如有侵权,请与我练习,我会立刻删除.学习参考:http://www.cnblogs.com/yuanfang/archive/2010/12/24/1916231.h ...

随机推荐

  1. 二、mysql数据库之基本操作和存储引擎

    一.知识储备 数据库服务器:一台计算机(对内存要求比较高) 数据库管理系统:如mysql,是一个软件 数据库:oldboy_stu,相当于文件夹 表:student,scholl,class_list ...

  2. Spring_依赖注入思想

    Ioc(Inversion of Control) 控制反转,DI(Dependncy Injection)依赖注入,其实是指同一种思想.举例说明: 张三在某公司负责供水问题.有两种形式,第一种老板指 ...

  3. static关键字什么意思?Java中是否可以覆盖一个private或者是static的方法?

    答案:“static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问.Java中static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而static方法是编译 ...

  4. Java线程的两种实现形式

    一.创建线程的第一种方式:继承Thread类 class Demo extends Thread{ @Override public void run() { super.run(); for(int ...

  5. ASP.Net MVC+EF架构

    ASP.Net MVC是UI层的框架,EF是数据访问的逻辑. 如果在Controller中using DbContext,把查询的结果的对象放到cshtml中显示,那么一旦在cshtml中访问关联属性 ...

  6. 1090 Highest Price in Supply Chain (25 分)(树的遍历)

    求所有叶节点中的最高价以及这个价格的叶节点个数 #include<bits/stdc++.h> using namespace std; ; vector<int>mp[N]; ...

  7. Leetcode 659.分割数组为连续子序列

    分割数组为连续子序列 输入一个按升序排序的整数数组(可能包含重复数字),你需要将它们分割成几个子序列,其中每个子序列至少包含三个连续整数.返回你是否能做出这样的分割? 示例 1: 输入: [1,2,3 ...

  8. 决策树之CART算法

    顾名思义,CART算法(classification and regression tree)分类和回归算法,是一种应用广泛的决策树学习方法,既然是一种决策树学习方法,必然也满足决策树的几大步骤,即: ...

  9. UTXO是什么?

    以易于理解的方式解释了比特币交易中的"UTXO" UTXO 2017年11月1日 让我们看看当你发一点硬币时会发生什么. 比特币交易通过UTXO执行.通过在比特硬币的所有交易中新生 ...

  10. web自动化测试:watir+minitest(五)

    测试报告: 加载minitest-reporters库,并设置相关的参数.既可以在每次运行测试后生成响应的测试报告. 默认会生成一份html的报告在当前目录的test目录下 我们可以指定参数对报告的标 ...