文件系统操作与磁盘管理
"rootfs" : (Root File System)它是 Ramfs(Ramfs 是一个非常简单的 Linux 文件系统用于实现磁盘缓存机制作为动态可调整大小的基于 ram 的文件系统)或者 tmpfs 的一个特殊实例,它作为系统启动时内核载入内存之后,在挂载真正的的磁盘之前的一个临时文件系统。通常的主机会在系统启动后用磁盘上的文件系统替换.
查看磁盘和目录容量
df (-h)
查看目录容量 du
du -h -d (0、1) 目录
-h human-readable
-d 查看目录的深度
0:一级目录
1:二级目录
dd命令
Linux 的很重要的一点,一切即文件,在 Linux 上,硬件的设备驱动(如硬盘)和特殊设备文件(如/dev/zero和/dev/random)都像普通文件一样,只要在各自的驱动程序中实现了对应的功能,dd 也可以读取自和/或写入到这些文件
dd命令:默认从标准输入中读取,并写入到标准输出中,但可以用选项if(input file,输入文件)和of(output file,输出文件)改变.
- dd命令从标准输入读入用户输入到输出到文件:
dd of=test bs=10 count=1 #
或者 dd if=/dev/stdin of=test bs=10 count=1 - dd命令从标准输入读入用户输入输出到标准输出:
dd if=/dev/stdin of=/dev/stdout bs=10 count=1
bs(block-size):用于指定块大小(缺省单位为Byte,也可为其指定如’K’,’M’,’G’等单位)
count:用于指定块数量 - dd在拷贝的同时还可以实现数据转换:
将输出的英文字符转换为大写再写入文件:
dd if=/dev/stdin of=test bs=10 count=1 conv=ucase
创建虚拟磁盘
loop设备:在类 UNIX 系统中,/dev/loop(或称vnd (vnode disk)、lofi(循环文件接口))是一种伪设备,这种设备使得文件可以如同块设备一般被访问。在使用之前,循环设备必须与现存文件系统上的文件相关联。这种关联将提供给用户一个应用程序接口,接口将允许文件视为块特殊文件(参见设备文件系统)使用。因此,如果文件中包含一个完整的文件系统,那么这个文件就能如同磁盘设备一般被挂载
- 从/dev/zero设备创建一个容量为 256M 的空文件:
dd if=/dev/zero of=virtual.img bs=1M count=256 - 将这个文件格式化(写入文件系统):
- 使用 mkfs 命令格式化磁盘(我们这里是自己创建的虚拟磁盘镜像),将我们的虚拟磁盘镜像格式化为ext4文件系统 :
mkfs.ext4 virtual.img - 查看Linux支持的文件系统:
ls -l /lib/modules/$(uname -r)/kernel/fs
- 使用 mkfs 命令格式化磁盘(我们这里是自己创建的虚拟磁盘镜像),将我们的虚拟磁盘镜像格式化为ext4文件系统 :
- 使用 mount 命令挂载磁盘到目录树:
- 常用操作:mount [options] [source] [directory]
mount [-o [操作选项]] [-t 文件系统类型] [-w|–rw|–ro] [文件系统源] [挂载点] - 挂载我们创建的虚拟磁盘镜像到/mnt目录:
mount -o loop -t ext4 virtual.img /mnt - 也可以省略挂载类型,很多时候 mount 会自动识别
- 以只读方式挂载:
mount -o loop –ro virtual.img /mnt
或者mount -o loop,ro virtual.img /mnt - 查看下主机已经挂载的文件系统:
sudo mount - 命令格式 sudo umount 已挂载设备名或者挂载点:
sudo umount /mnt
- 常用操作:mount [options] [source] [directory]
- 使用 fdisk 为磁盘分区
- 查看硬盘分区表信息:
sudo fdisk -l - 进入磁盘分区模式:
sudo fdisk virtual.img - 操作完成后输入p查看结果
- 最后不要忘记输入w写入分区表
- 查看硬盘分区表信息:
- 使用 losetup 命令建立镜像与回环设备的关联:
sudo losetup /dev/loop0 virtual.img
- 如果提示设备忙你也可以使用其它的回环设备,”ls /dev/loop*”参看所有回环设备
- 解除设备关联:
sudo losetup -d /dev/loop0
- 使用mkfs格式化各分区(前面我们是格式化整个虚拟磁盘镜像文件或磁盘),不过格式化之前,我们还要为各分区建立虚拟设备的映射,用到kpartx工具
sudo apt-get install kpartx
sudo kpart kpartx -av /dev/loop0
- 取消映射
sudo kpart kpartx -dv /dev/loop0
- 取消映射
- 接着再是格式化,我们将其全部格式化为 ext4:
- sudo mkfs.ext4 -q /dev/mapper/loop0p1
- sudo mkfs.ext4 -q /dev/mapper/loop0p5
- sudo mkfs.ext4 -q /dev/mapper/loop0p6
- 格式化完成后在/media目录下新建四个空目录用于挂载虚拟磁盘
mkdir -p /media/virtualdisk_{1..3}
- 挂载磁盘分区:
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
- 挂载磁盘分区: