查看容量
df
df查看磁盘容量【disk filesystem】-h以易读方式查看
bash
df -hdu
du [目录]查看指定目录及其子目录的容量,如果不指定则查看当前目录及其子目录的容量【disk usage】-h以易读方式查看-b以文件中的字节大小来显示文件容量-a查看所有文件【包括隐藏文件】-d *指定查看目录的深度-s只查看当前目录【也就是深度为 0】
bash
du -sh
只查看0级目录的信息【只查看目录本身】
du -hd 0 ~磁盘管理
dd 复制
[!hint]
cp与dd对比,不能复制哪些文件 ?cp只复制文件内容,不能复制:
- 元数据【创建时间,修改时间……】
- 硬链接和软链接【快捷方式】【
】cp只能复制快捷方式背后的文件- 设备文件【设备文件是对系统中物理设备(硬盘,键盘,鼠标……)的抽象】
- 文件权限和所有权
- 磁盘的引导扇区和分区表
- 按照指定的块大小直接复制磁盘的原始内容
`dd` 的命令行选项格式为 `选项=值`,而不是 `-选项 值`
输入源,输出源
dd从标准输入【键盘】中读取数据,并将数据写入到标准输出【屏幕】【默认】【data description】if=输入文件从文件中读取数据of=输出文件写入数据到指定文件
bash
从键盘读取的数据写入到 "test" 文件中,只读取和写入一次,一次是10字节
dd of=test bs=10 count=1
dd if=/dev/stdin of=/dev/stdout bs=10 count=1复制时处理数据
ddconv=值转换字节序,在 ASCII 与 EBCDIC 编码间互换……lcase将英文字符转为小写ucase将英文字符转为大写ascii将 EBCDIC 编码转为 ASCII 编码
bash
将英文字符转换为大写再写入test文件
dd of=test bs=10 count=1 conv=ucase磁盘概念
[!quote] 外部设备
- 字符设备:以字节流为单位进行数据传输【键盘,鼠标……】
- 块设备:数据存储设备,以一定大小的数据块为单位进行数据的读写【硬盘,USB 驱动器,CD-ROM……】,可以随机访问存储介质上任意位置的数据,并且可以进行缓存操作
[!quote] loop 设备 loop 设备使得文件可以如同块设备一般被访问,而
/dev/loop是用来管理 loop 设备的伪设备在使用 loop 设备之前,需要将其与一个实际存在的文件进行关联【使用
mount】一个目录如果被用作挂载点,原来在这个目录下的文件就会被隐藏起来,无法直接访问,因为此时访问这个目录,就是在访问挂载的文件系统,而不是原来的目录内容
虚拟磁盘操作
创建虚拟磁盘镜像
- 使用
dd创建空的虚拟磁盘镜像
bash
从 `/dev/zero` 设备创建一个容量为 256M 的内容全是零字节的文件
dd if=/dev/zero of=virtual.img bs=1M count=256
du -h virtual.img
256M virtual.img格式化虚拟磁盘镜像
[!quote] 格式化虚拟磁盘镜像 格式化虚拟磁盘镜像 就是将文件系统写入到虚拟磁盘镜像中
- 使用
mkfs【make filesystem】
bash
将 "virtual.img" 文件格式化为 ext4 文件系统
mkfs -t ext4 virtual.img挂载磁盘
[!hint] 挂载
- 在 Linux 中,所有的文件和目录都是从根目录
/开始的一颗大树【文件系统】,它们都必须挂载到这颗树上的某个节点【目录】才能被访问- 根目录
/在系统启动时自动挂载- 当我们插入一个 USB,或其他可移动存储设备时,操作系统会自动执行
mount,把这个设备挂载到文件系统的某个目录下,让我们可以访问这个设备中的文件
- 将磁盘挂载到目录树
mount查看主机已经挂载的文件系统mount 参数 文件系统源 挂载点-o 设备类型指定要挂载的设备类型【文件,物理设备……】-t 文件系统类型指定要挂载的文件系统的类型--ro以只读方式挂载--rw以读写模式挂载
bash
查看主机已经挂载的文件系统
mount
---
输出结果:最前面是设备名,on 后面是挂载点,type 后面是文件系统类型,最后面是挂载选项【在挂载时设定以只读方式挂载……】
tmpfs on /sys/firmware type tmpfs (ro,relatime)
……bash
挂载虚拟磁盘镜像到 `/mnt`,是一个loop文件设备,不是物理设备
mount -o loop -t ext4 virtual.img /mnt
也可以省略挂载类型,很多时候 mount 会自动识别
以只读方式挂载
mount -o loop --ro virtual.img /mnt卸载磁盘
umount 已挂载的设备名/挂载点
bash
umount /mnt磁盘分区
fdisk
bash
查看硬盘分区表信息
fdisk -l
进入磁盘分区模式
fdisk virtual.img建立镜像与 loop 设备的关联
losetup
bash
如果提示设备忙你也可以使用其它的回环设备
losetup /dev/loop0 virtual.img
解除设备关联
losetup -d /dev/loop0然后再使用 mkfs 格式化各分区,不过格式化之前,我们还要为各分区建立虚拟设备的映射,用到 kpartx 工具,需要先安装:
bash
sudo apt-get install kpartx
sudo kpartx -av /dev/loop0
取消映射
sudo kpartx -dv /dev/loop0接着再是格式化,我们将其全部格式化为 ext4:
bash
sudo mkfs.ext4 -q /dev/mapper/loop0p1
sudo mkfs.ext4 -q /dev/mapper/loop0p5
sudo mkfs.ext4 -q /dev/mapper/loop0p6格式化完成后在 /media 目录下新建四个空目录用于挂载虚拟磁盘:
bash
mkdir -p /media/virtualdisk_{1..3}bash
挂载磁盘分区
sudo mount /dev/mapper/loop0p1 /media/virtualdisk_1
sudo mount /dev/mapper/loop0p5 /media/virtualdisk_2
sudo mount /dev/mapper/loop0p6 /media/virtualdisk_3
卸载磁盘分区
sudo umount /dev/mapper/loop0p1
sudo umount /dev/mapper/loop0p5
sudo umount /dev/mapper/loop0p6然后:
bash
df -h