Linux 中的磁盘管理
1.本地存储设备的识别
存储是每个计算机系统的基本需求,Red Hat Linux提供了一些强大的工具,它们能在大量的场景中管理多种类型的存储设备
fdisk ##是用于管理磁盘分区的实用程序
fdisk -l ##真实存在的设备和列出磁盘分区信息 cat
/proc/partitions ##系统识别的设备 blkid ##系统可使用的设备及id
df ##系统正在挂载的设备/正在使用的设备信息
举例:
(1)查看真实存在的设备以及列出磁盘分区信息
[[email protected] ~]# fdisk -l
(2)查看系统识别的设备
[[email protected] ~]# cat /proc/partitions
(3)查看系统可使用的设备及id
[[email protected] ~]# blkid
(4)查看系统中正在挂载的设备/正在使用的设备信息
[[email protected] ~]# df
(5)用于管理磁盘分区的实用程序
[[email protected] ~]# fdisk
2.设备的挂载和卸载
(1)设备名称 /dev/xda ##/dev/hd0 /dev/hd1 /dev/sda /dev/sdb /dev/sda1
/dev/sda2 /dev/sdb1 /dev/sr0 ##光驱 /dev/mapper/* ##虚拟设备 (2)设备的挂载 mount
设备 挂载点 mount /dev/sdb1 /mnt ##挂载sdb1到mnt umount /mnt 或
/dev/sdb1 ##卸载(挂载点或挂载设备都可) mount -o ro /dev/sdb1 ##只读挂载 mount ##查看挂载信息
mount -o remount,rw /dev/sdb1 或 /mnt ##重新读写挂载
举例:
(1)正在挂载设备
<1>查看系统正在挂载的设备(插上u盘)
[[email protected] ~]# df
总结:可以看到/dev/sdb1挂载至/run/media/kiosk/F0C8-12D1
<2>新建一个目录/haha,并将/dev/sdb1挂载至/haha
[[email protected] ~]# mkdir /haha
[[email protected] ~]# mount /dev/sdb1 /haha
[[email protected] ~]# df
<3>查看挂载信息
[[email protected] ~]# mount
<4>卸载设备并进行查看
[[email protected] ~]# umount /dev/sdb1
[[email protected] ~]# df
(2)将设备挂载至/haha并且设置其设备为只读挂载
<1>查看其设备下的挂载
[[email protected] ~]# df
<2>将设备挂载至/haha并且设置其设备为只读挂载并进行查看
[[email protected] ~]# mount -o ro /dev/sdb1 /haha
[[email protected] ~]# df
<3>查看挂载信息,会发现设备的属性变成了只读属性
[[email protected] ~]# mount
<4>进行验证,会发现的确无法创建新的文件而且报错为设备是只读的
[[email protected] ~]# cd /haha
[[email protected] haha]# touch file1
<5>将其设备的属性重新进行挂载,设备属性为读写挂载,并进行挂载信息的查看,可以看到设备更改为读写挂载
[[email protected] haha]# mount -o remount,rw /dev/sdb1
[[email protected] haha]# mount
<6>再次进行验证,发现当设备设置为读写后,可以在设备内成功创建文件
[[email protected] haha]# touch file
[[email protected] haha]# ls
[[email protected] haha]# df
[[email protected] haha]# ps
(3)解决设备正忙情况
出现的报错: [[email protected] haha]# umount /haha
解决方法1: fuser -kvm /haha , umount /haha
解决方法2: [[email protected] haha]# lsof /haha kill -9 6769, umount /haha
举例:
<1>尝试在设备还在工作的情况下进行卸载,会发现无论是卸载挂载点还是文件系统,都会出现报错
[[email protected] haha]# umount /haha
<2>解决方法1
-1-利用fuser命令进行用户的退出
[[email protected] haha]# fuser -kvm /haha
-2-尝试在普通用户下卸载设备
[[email protected] Desktop]$ umount /haha
-3-切换到超级用户下对设备进行卸载并进行查看
[[email protected] Desktop]$ su -
Password:
[[email protected] ~]# umount /haha
[[email protected] ~]# df
补充(fuser的使用):
[[email protected] haha]# fuser /haha
[[email protected] haha]# fuser -v /haha
[[email protected] haha]# fuser -vm /haha ##显示进程以及子进程
[[email protected] haha]# fuser -kvm /haha
<2>解决方法2
-1-利用lsof命令查看bash的进程号是多少并强制杀死
[[email protected] haha]# lsof /haha
[[email protected] haha]# kill -9 6769
-2-切换到超级用户下进行卸载并查看
[[email protected] Desktop]$ su -
Password:
[[email protected] ~]# umount /haha
[[email protected] ~]# df
3.磁盘分区
-1-磁盘0磁道1扇区的512个字节中记录的信息如下512=446+64+2
-2-446表示mbr(主引导记录),程序是引导作用,引导程序的长度是446个字节。64表示mpt(主分区标示),2表示55aa(硬件的有效性标示,硬件上面所安装的)
-3-64个字节能记录多少个分区,(2的n次方)主要看每个分区有多少个字节
-4-1个分区占用16个字节
-5-1块硬盘最多可以划分4个主分区
-6-容器可以叫做扩展分区,容器内的分区叫做逻辑分区,用容量记录这些信息
-7-一般的磁盘分区,可以分成3个主分区,一个扩展分区
简单分区步骤:
1.fdisk -l
2.fdisk /dev/vdb
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition ##删除
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types
m print this menu
n add a new partition ##新建
o create a new empty DOS partition table
p print the partition table ##显示分区信息
q quit without saving changes ##退出
s create a new empty Sun disklabel
t change a partition's system id ##修改分区id
u change display/entry units
v verify the partition table
w write table to disk and exit ##保存分区信息到硬盘
x extra functionality (experts only)
(1)具体分区步骤(切记,一定不要在真实主机中进行如下操作,否则可能会出现不同程度的报错):
<1>主要查看Disk的路径
[[email protected]_server ~]# fdisk -l
<2>查看管理分区的实用程序的帮助
[[email protected]_server ~]# fdisk /dev/vdb
Command (m for help): m
Command (m for help): q
<3>新建第一个主分区:
[[email protected]_server ~]# fdisk /dev/vdb
Command (m for help): n
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): +100M
<4>新建第二个主分区:
Command (m for help): n
Select (default p): p
Last sector, +sectors or +size{K,M,G} (206848-20971519, default 20971519): +200M
<5>新建第三个主分区:
Command (m for help): n
Select (default p): p
Last sector, +sectors or +size{K,M,G} (616448-20971519, default 20971519): +100M
<6>新建第一个扩展分区:
Command (m for help): n
Select (default e): e ##当三个主分区出现时要划分扩展分区
<7>查看分区的配置
Command (m for help): p
<7>在扩展分区内建立分区
Command (m for help): n
Last sector, +sectors or +size{K,M,G} (823296-20971519, default 20971519): +100M
<8>查看所有分区的情况
Command (m for help): p
<9>所有分区配置完成后,退出保存
Command (m for help): wq
<10>使用fdisk-l命令查看真实存在的设备和列出磁盘分区信息
[[email protected]_server ~]# fdisk -l
(2)删除扩展分区
<1>查看分区信息
[[email protected]_server ~]# fdisk /dev/vdb
Command (m for help): d ##删除分区
Partition number (1-5, default 5): 5 ##删除第5个分区(即逻辑分区)
Command (m for help): p ##显示信息
Command (m for help): wq ##保存分区信息到硬盘并退出
<2>查看分区配置是否保存成功
-1-查看真实存在的设备及列出磁盘分区信息
[[email protected]_server ~]# fdisk -l
-2-查看系统识别的设备
[[email protected]_server ~]# cat /proc/partitions
(3)给设备安装文件系统
ext3 rhtl5及之前的版本 最多支持32TB的文件系统和2T文件,实际2tb文件系统,16G文件
ext4 rhel6 1EB 16TB
xfs rhel7 18EB 9eb 7G/s 4G/s
mkfs.xfs /dev/vdb5 ##格式化设备/dev/vdb5
mount /dev/vdb5 /haha ##给设备安装文件系统
vim /etc/fstab
设备 挂载点 文件系统 挂载参数 是否备份 是否检测
/dev/vdb5 /haha xfs defaults 0 0
mount -a ##自动挂载
<1>查看可使用的设备并将/dev/vdb5格式化,只有格式化之后才可以使用
[[email protected]_server ~]# blkid
[[email protected]_server ~]# mkfs.xfs /dev/vdb5 ##格式化/dev/vdb5,即将其设备的格式转化成xfs格式
[[email protected]_server ~]# blkid ##再次查看看可使用的设备
<2>将其文件系统安装至设备上
[[email protected]_server ~]# mount /dev/vdb5 /haha
[[email protected]_server ~]# df
<3>证明是临时挂载(关机重启后自动消失),发现查看挂载的设备时没有发现/dev/vdb5
[[email protected]_server ~]# umount /dev/vdb5 ##将设备卸载
[[email protected]_server ~]# mount -a ##自动挂载
[[email protected]_server ~]# df
<4>进行永久挂载
[[email protected]_server ~]# vim /etc/fstab
写入的内容如下:
/dev/vdb5 /haha xfs defaults 0 0
<5>再次进行自动挂载并查看挂载的设备,发现存在
[[email protected]_server ~]# mount -a
[[email protected]_server ~]# df
(春风十里,不如,不如我们在一起)