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 -- 设置循环设备

loop 设备 (循环设备)

Linux 文件系统剖析 

Linux 下使用mount命令挂载CDROM

linux文件系统之loop环设备--新建一个文件系统并挂载,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。