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