linux文件系统之loop环设备--新建一个文件系统并挂载
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 -- 设置循环设备
linux文件系统之loop环设备--新建一个文件系统并挂载的更多相关文章
- linux磁盘之回环设备
为什么要讲回环设备,下面看下系统的采样情况 上面图有loop0,loop1等设备标记,这些是什么?看看下面fdisk -l 的结果,乱糟糟的一堆? 什么是回环设备? 上面的loop0, loop1就是 ...
- 使用VMware新建一个Linux系统虚拟机(全)
我们将其分为两步,1:新建虚拟机:2:安装Red Hat Enterprse Linux 6操作系统 1.首先我们新建一个虚拟机,先不安装操作系统,稍后再对其安装Linux系统. 新建虚拟机步骤如下: ...
- linux 创建虚拟块设备,制作文件系统并挂载,用于测试lustre
1.制作块文件 3 个 [root@localhost yaoxu]# [root@localhost yaoxu]# [root@localhost yaoxu]# 2.创建回环设备 [root@l ...
- 阿里云Linux格式化数据盘,分区并挂载一个文件系统
阿里云一块全新的数据盘挂载到ECS实例后,您必须创建并挂载至少一个文件系统.本示例使用I/O优化实例,操作系统为CentOS 7.6,为一块新的300GiB数据盘(设备名为/dev/vdb)创建一个M ...
- 【每天一个Linux命令】10. 用户账号的新建/修改/删除以及密码修改 useradd/usemod/userdel/passwd
在 Linux 系统中,与用户管理有关的文件主要有如下几个:分别是/etc/passwd,/etc/shadow,/etc/gfoup,/etc/gshadow .它们分别与用户的账号,密码,用户组及 ...
- centos 安装MATLAB :设置回环设备失败: 没有那个文件或目录
基本参数:centos 7 x86_64,linux 系统, 安装matlab, 已经下载R2016b_glnxa64.iso 但挂载的时候遇到问题: [root@lf mnt]# mount -o ...
- Linux系统安全学习笔记(1)-- 文件系统类型
今天看了一个关于Linux系统安全的视频教程,这个教程有很多的知识点,我会分几篇博文将我的笔记分享出来. 首先是关于Linux文件系统类型的一些知识,Linux有四种常见的文件系统类型(网上大多数是3 ...
- 管理员技术(六): 硬盘分区及格式化、 新建一个逻辑卷、调整现有磁盘的分区、扩展逻辑卷的大小、添加一个swap分区
一.硬盘分区及格式化 问题: 本例要求熟悉硬盘分区结构,使用fdisk分区工具在磁盘 /dev/vdb 上按以下要求建立分区: 1> 采用默认的 msdos 分区模式 2> ...
- linux驱动开发之块设备学习笔记
我的博客主要用来存放我的学习笔记,如有侵权,请与我练习,我会立刻删除.学习参考:http://www.cnblogs.com/yuanfang/archive/2010/12/24/1916231.h ...
随机推荐
- Flume是什么
分布式流式实时收集日志文件系统,便于实时在线的流式计算,常配合 Storm 和 spark streming 使用. Flume is a distributed分布式的, reliable可靠的, ...
- Hive 表数据的存储和压缩格式
SerDe * 按行存储 * 按列存储 file_format: : | SEQUENCEFILE 序列化(行存储) | TEXTFILE 文本格式(行存储)- (Default, depending ...
- salt demo 环境
demo 环境 安装 virtualBox和vagrant 安装工具包:virtualBox, vagrant 下载 https://github.com/UtahDave/salt-vagrant- ...
- Java-JNA使用心得2
自5月初第一次尝试使用Java封装调用C的dll之后,已经先后经历了3次小项目了. 上月末是最近的一次项目实际,任务来的急时间又少,还好在加班加点后还是完成了任务,并把第二次没有实现的功能给实现了(C ...
- HTTP协议中POST方法和GET方法有那些区别?
GET用于向服务器请求数据,POST用于提交数据 GET请求,请求参数拼接形式暴露在地址栏,而POST请求参数则放在请求体里面,因此GET请求不适合用于验证密码等操作 GET请求的URL有长度限制1k ...
- 运用Pascal来破坏DLL的一个实例
运用Pascal来破坏DLL文件的一个实例 关于Pascal静态调用和动态的调用DLL的学习您可以看Delphi/Lazarus栏目. Uses Dos; {调用DOS库} Const Root='C ...
- 【情人节礼物】纯js脚本打造精美3D玫瑰
情人节就要来临了,这是用代码做出的玫瑰花,这才是程序员送给女友的最好情人节礼物...(提示:在不同浏览器下观看效果.速度会有很大的不同) 代码如下: <!doctype html> < ...
- vue实现数据的增删改查
在管理员的一些后台页面里,个人中心里的数据列表里,都会有对这些数据进行增删改查的操作.比如在管理员后台的用户列表里,我们可以录入新用户的信息,也可以对既有的用户信息进行修改.在vue中,我们更应该专注 ...
- Linux静态ip设置及一些网络设置
网络服务配置文件 /etc/sysconfig/network 网络接口配置文件 /etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME 修改IP永久生 ...
- 为啥shmem不回收 | drop_caches
内核在哪里禁止对tmpfs中内存页的回收 mem.limit_in_bytes同样会触发shrink_zones过程! shrink_zones是代码中的直接内存回收路径 1.try_to_free_ ...