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 -- 設置循環設備