• 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

  • 相关阅读:
    1、编写一个简单的C++程序
    96. Unique Binary Search Trees
    python 操作redis
    json.loads的一个很有意思的现象
    No changes detected
    leetcode 127 wordladder
    django uwsgi websocket踩坑
    you need to build uWSGI with SSL support to use the websocket handshake api function !!!
    pyinstaller 出现str error
    数据库的读现象
  • 原文地址:https://www.cnblogs.com/zhanghaiyublog/p/3611507.html
Copyright © 2020-2023  润新知