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. 4,MongoDB 之 $关键字 及 $修改器 $set $inc $push $pull $pop MongoDB

    MongoDB中的关键字有很多, $lt $gt $lte $gte 等等,这么多我们也不方便记,这里我们说说几个比较常见的 一.查询中常见的 等于 大于 小于 大于等于 小于等于 等于 : 在Mon ...

  2. 关于DIV内文字垂直居中的写法

    最近在写UI,或多或少用到了CSS,在这记录一下,今天用到的DIV内文字垂直居中的写法, 因为所做的项目都是基于WebKit内核浏览器演示的,所以我们今天采用的是-webkit-box的写法: dis ...

  3. mybatis 关联查询实现一对多

    场景:最近接到一个项目是查询管理人集合  同时每一个管理人还存在多个出资人   要查询一个管理人列表  每个管理人又包含了出资人列表 采用mybatis关联查询实现返回数据. 实现方式: 1 .在实体 ...

  4. error LNK2001: unresolved external symbol @__security_check_cookie

    Q:VS2005编译的静态库, 在vc++6.0中连接出现错误 error LNK2001: unresolved external symbol @__security_check_cookie@l ...

  5. laravel5.5入口文件分析

    入口文件 public/index.php 1.加载composer的自动加载器 require __DIR__.'/../vendor/autoload.php'; 自动加载,不用再各种requir ...

  6. Kinect关于PlayerIndex和SkeletonId之间的关系。

    项目中要锁定玩家骨骼后抠图, 一时没有灵感.google 关键词: the ralationship about skeletonid and playerindex. 结论: Player Segm ...

  7. 【The VC Dimension】林轩田机器学习基石

    首先回顾上节课末尾引出来的VC Bound概念,对于机器学习来说,VC dimension理论到底有啥用. 三点: 1. 如果有Break Point证明是一个好的假设集合 2. 如果N足够大,那么E ...

  8. Python 快速部署安装所需模块

    需求 我们需要在拷给别人或者提交至服务器也用同样的模块,好保持和开发的一样,所以我们需要自己手动写配置模块信息. 方法 在根目录下创建一个 requirements.txt  文件 里面写 模块名== ...

  9. [译]13-spring 内部bean

    spring基于xml配置元数据的方式下,位于property元素或者contructor-arg元素内的bean元素被称为内部bean,如下: <?xml version="1.0& ...

  10. 关于python中的 if __name__ == 'main'

    name 是内置变量,它表示的是当前所在模块的名字,同时还能反应一个包的结构. a ├── b │   ├── c.py │   └── __init__.py └── __init__.py 目录中 ...