磁盘管理
概述:
分区:磁盘上的分区规划
硬盘:是一种存储设备,可划分分区(可见的)
硬盘与系统的关系: 系统管理硬盘 硬盘保存系统信息
1.本地存储设备的查看
fdisk 是用于管理磁盘分区的实用程序
fdisk -l #查看系统真实存在的设备
cat /proc/partitions #查看系统可识别到的设备
blkid #查看系统可使用的设备
df #查看系统正在使用(挂载)的设备
df -h #查看到的数据更为准确 (以2^n计算 1M=1024k)
df -H #查看到的数据更为准确 (以10^n计算 1M=1000k)
实验1:(在虚拟机中)
##查看系统所有的设备信息
[root@localhost ~]# fdisk -l (在虚拟机中)
[root@foundation34 ~]# fdisk -l(在真机中)
##查看系统可识别的设备信息
[root@localhost ~]# cat /proc/partitions
##查看系统可使用的设备信息
[root@localhost ~]# blkid
##查看系统正在使用(挂载)的设备信息
[root@localhost ~]# df
(1).设备名称
/dev/sda ##第一块串口硬盘;dev=设备 s=sata d=disk a=第一块 (b表示第二块 依次类推)
/dev/vda ##第一块虚拟硬盘;dev=设备 v=virtal 虚拟设备 d=disk a=第一块
/dev/hd0 ##并口磁盘
/dev/hd1
--IDE #老式硬盘(并口硬盘)
/dev/mapper/* #虚拟设备
/dev/cdrom #光驱(不一定存在)
/dev/sr0 #光驱(一定存在)
注:cdrom为sro的快捷方式,cdrom可以不存在
(2).设备的挂载与卸载
mount 设备名 挂载点 ##挂载
mount -o 权限 设备名 挂载点
mount -o remount,权限 设备名/挂载点
umount 设备名/挂载点 ##卸载
例如:
mount /dev/sdb1 /mnt ##将/dev/sdb1设备挂载到/mnt
mount -o ro /dev/sdb1 /mnt ##只读挂载
mount -o remount,rw /mnt ##重新读写挂载
mount -o remount,rw /dev/sdb1
实验2:(在真机中)
先插入u盘设备
##查看挂载设备信息
[root@foundation34 ~]# df
##查看都u盘设备是读写挂载
[root@foundation34 ~]# mount
##将/dev/sdb设备(u盘)挂载到/mnt上
[root@foundation34 ~]# mount /dev/sdb1 /mnt
[root@foundation34 ~]# df
[root@foundation34 ~]# cd /mnt
##可以查看到u盘设备里的文件,因为u盘挂载在/mnt上的
[root@foundation34 mnt]# ls
##可以新建文件,因为默认挂载是读写挂载
[root@foundation34 mnt]# touch westos
[root@foundation34 mnt]# ls
@可将电脑上的文件拷贝到u盘中
[root@foundation34 mnt]# cp /home/kiosk/Desktop/westosfile .
[root@foundation34 mnt]# ls
##卸载;umount后边可以跟挂载点或者挂载设备
[root@foundation34 ~]# umount /mnt
[root@foundation34 ~]# df
[root@foundation34 ~]# umount /dev/sdb1
[root@foundation34 ~]# df
@1模拟实验环境:
[root@foundation34 ~]# mount -o ro /dev/sdb1 /mnt
[root@foundation34 ~]# mount
[root@foundation34 ~]# cd /mnt/
[root@foundation34 mnt]# ls
[root@foundation34 mnt]# touch hello
@2解决方案
方法1:
##1.卸载
[root@foundation34 ~]# umount /mnt
[root@foundation34 ~]# df
##2.读写挂载
[root@foundation34 ~]# mount -o rw /dev/sdb1 /mnt
方法2:
##直接重新读写挂载
[root@foundation34 ~]# mount -o remount,rw /dev/sdb1
测试:
[root@foundation34 ~]# mount
[root@foundation34 ~]# cd /mnt
##虽然还是无法识别中文,但是可以新建文件,说明读写挂载成功
[root@foundation34 mnt]# ls
[root@foundation34 mnt]# touch hello
[root@foundation34 mnt]# ls
[root@foundation34 mnt]# cd /home/kiosk/Desktop
[root@foundation34 Desktop]# ls
##不能识别中文的文件和图片
[root@foundation34 Desktop]# cp 图片 /mnt
cp: cannot create regular file ‘/mnt/图片’: Invalid argument
##@2将名字中含有中文的文件直接打包拷贝到u设备中
[root@foundation34 Desktop]# tar cf /mnt/tupian.tar 图片
[root@foundation34 Desktop]# ls /mnt
[root@foundation34 Desktop]# cd /mnt
[root@foundation34 mnt]# rm -rf tupian.tar
2.设备正忙,无法卸载,该怎么解决?
方法1:
fuser -kvm /mnt ##直接结束有关挂载在/mnt上的设备的所有进程;v表示详细信息,m表示扫描,k表示结束正在运行着的程序
umount /mnt ##卸载
方法2:
lsof /mnt ##查看挂载在/mnt上的设备的进程信息
kill -9 进程号 ##结束进程
umount /mnt ##卸载
@1.模拟环境
[root@foundation34 ~]# df
[root@foundation34 ~]# cd /mnt
##不要退出
[root@foundation34 mnt]#
#再打开一个shell
[kiosk@foundation34 Desktop]$ su -
[root@foundation34 ~]# umount /dev/sdb1
方法1:
##lsof后边可以跟挂载点/挂载设备
[root@foundation34 ~]# lsof /mnt
##查看关于/dev/sdb1设备的所有进程信息
[root@foundation34 ~]# lsof /dev/sdb1
##结束进程
[root@foundation34 ~]# kill -9 18461
[root@foundation34 ~]# umount /mnt
[root@foundation34 ~]# df
[root@foundation34 ~]# umount /dev/sdb1
##查看/dev/sdb1设备正在运行的程序
[root@foundation34 ~]# fuser -vm /dev/sdb1
##结束有关/dev/sdb1设备的所有程序
[root@foundation34 ~]# fuser -kvm /dev/sdb1
[root@foundation34 ~]# fuser -vm /dev/sdb1
[root@foundation34 ~]# umount /dev/sdb1
[root@foundation34 ~]# df
主分区: p (1-3)
可扩展分区(4-容器): L 逻辑分区(容器不能直接使用!!!)
硬盘0磁道1扇区的512个字节中记录的信息如下:
512 = 446 + 64 + 2
^ ^ ^
mbr(主引导记录) mpt(主分区标) 55aa(硬盘的有效标识)
分区的两种方式:
mbr #分为主分区p(primary第四个分区)和扩展分区e(expended容器;逻辑分区(容器中的内容),最多只能划分4个主分区。为了容纳更多的东西,所以将第4个分区化为扩展分区(容器),可将容纳不下的东西放到这个扩展分区中在linux中最多放16个,且每个不超过2t
gpt #不分主分区和扩展分区,可划分128个分区
硬盘分区标 64
1个分区占用16个字节
1块硬盘最多可以划分4个主分区
(1).如何划分分区
##只能用/dev/vdb设备划分分区
[root@localhost ~]# fdisk -l
##进入分区界面,建立分区
[root@localhost ~]# fdisk /dev/vdb
[root@localhost ~]# fdisk -l
[root@localhost ~]# cat /proc/partitions
挂载前需要先格式化!!!
##1.格式化
[root@localhost ~]# mkfs.xfs /dev/vdb1
[root@localhost ~]# blkid
[root@localhost ~]# df
##2.挂载
[root@localhost ~]# mount /dev/vdb1 /mnt
[root@localhost ~]# df
##最多新建3主分区,第四个为可扩展分区(不可用)
[root@localhost ~]# fdisk /dev/vdb
#查看系统中所有的设备
[root@localhost ~]# fdisk -l
#查看系统可识别到的设备
[root@localhost ~]# cat /proc/partitions
##同步分区表
[root@localhost ~]# partprobe
[root@localhost ~]# cat /proc/partitions
##格式化
[root@localhost ~]# mkfs.xfs /dev/vdb5
排错:
[root@localhost ~]# mkfs.xfs /dev/vdb5
解决方案:
先删除/dev/vdb5分区,然后重新建立一个稍大的/dev/vdb5分区
一般情况:一个目录上只能挂载一个设备
[root@localhost ~]# df
##错误操作:直接在挂载点上再挂载一个/dev/vdb5设备分区
##虽然可以挂载成功,但是卸载时会出现问题
[root@localhost ~]# mount /dev/vdb5 /mnt
[root@localhost ~]# df
[root@localhost ~]# umount /dev/vdb1
##解决方案:必须先卸载后挂载的才能卸载初始挂载的设备
[root@localhost ~]# umount /dev/vdb5
[root@localhost ~]# umount /dev/vdb1
[root@localhost ~]# df
正确操作:先卸载/mnt,再将/dev/vdb5设备分区挂载到/mnt
4.挂载分区设备的两种方式
(1).临时性挂载
[root@localhost ~]# df
[root@localhost ~]# mount /dev/vdb5 /mnt
[root@localhost ~]# df
##卸载
[root@localhost ~]# umount /mnt
(2).永久性挂载
## /etc/fstab为开机自动挂载策略文件
[root@localhost ~]# vim /etc/fstab
###############
/dev/vdb5 /mnt xfs defaults 0 0
设备 挂载点 文件系统类型 挂载参数 不备份 不检测
[root@localhost ~]# df
##让系统重新读取挂载信息;(检测参数是否书写正确,不报错即为正确)
[root@localhost ~]# mount -a
[root@localhost ~]# df
5.Swap分区
(1).建立swap分区
##查看swap分区
[root@localhost ~]# swapon -s
##新建分区
[root@localhost ~]# fdisk /dev/vdb
##同步分区表
[root@localhost ~]# partprobe
[root@localhost ~]# cat /proc/partitions
1)临时性添加swap分区
##格式化为swap
[root@localhost ~]# mkswap /dev/vdb6
[root@localhost ~]# swapon -s
##将/dev/vdb6分区添加到swap分区中
[root@localhost ~]# swapon -a /dev/vdb6
[root@localhost ~]# swapon -s
##关闭设备分区
[root@localhost ~]# swapoff /dev/vdb6
[root@localhost ~]# swapon -s
2)永久性添加swap分区
[root@localhost ~]# vim /etc/fstab
###############
/dev/vdb6 swap swap defaults 0 0
[root@localhost ~]# swapon -s
[root@localhost ~]# swapon -a
[root@localhost ~]# swapon -s
(3).删除swap分区
##停止设备
[root@localhost ~]# swapoff /dev/vdb6
[root@localhost ~]# vim /etc/fstab
###############
删除:/dev/vdb6 swap swap defaults 0 0
##删除/dev/vdb6分区
[root@localhost ~]# fdisk /dev/vdb
##同步分区表
[root@localhost ~]# partprobe
[root@localhost ~]# cat /proc/partitions