Linux中设备管理(一):设备使用,磁盘分区,磁盘阵列
1.设备使用,挂载与卸载
- 设备查看
1.1 fdisk -l查看真实存在的设备
[root@localhost ~]# fdisk -l
Disk /dev/vda: 10.7 GB, 10737418240 bytes, 20971520 sectors #磁盘大小
Units = sectors of 1 * 512 = 512 bytes #单元大小
Sector size (logical/physical): 512 bytes / 512 bytes #扇区大小(逻辑/物理)
I/O size (minimum/optimal): 512 bytes / 512 bytes #I/O大小(最小/最优)
Disk label type: dos #磁盘标签类型
Disk identifier: 0x00013f3e #磁盘标识符
Device Boot Start End Blocks Id System
/dev/vda1 * 2048 20970332 10484142+ 83 Linux
Disk /dev/vdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
其中会显示设备的类型,大小类型,标示等
运行结果如下:
注:
系统识别与真实存在不同
1.2cat /proc/partitions 系统可识别的设备
[root@localhost ~]# cat /proc/partitions
运行结果如下:
1.3blkid 系统真实可用的设备
[root@localhost ~]# blkid
运行结果如下:
1.4df 系统正在使用的设备
[root@localhost ~]# df #报告文件系统磁盘空间使用情况
df -h #以二进制显示磁盘空间 1M=1024k
df -H #以十进制显示磁盘空间 1M=1000k
运行结果如下:
- df
- df -h
- df -H
一般来说df -h 统计的比df -H统计出来的情况小且准确
注:
可看到的设备数量df <= blkid <= cat /proc/artitions <= fdisk -l
- 挂载设备
mount可以看到系统下所有设备挂载情况
mount +设备名称+ 挂载位置 ##必须挂载到指定目录下
mount -o +参数 对挂载设备进行权限选择
ro 只读
rw 读写
umount +设备名称/挂在位置 #卸载
示例1:
mount /dev/sdb1 /mnt #将磁盘挂载到/mnt
运行结果如下:
示例2:
[root@localhost ~]# umount /dev/vdb1
注:
若设备被占用 可用fuser -vm
查看程序
可用kill -9+进程id
结束进程进行卸载,
还可用fuser -kvm
直接结束,后进行卸载
mount -o ro /dev/vdb1 /mnt #ro 只读挂载
运行结果如下:
由上可知无法对磁盘进行写入操作
mount -o remount,rw /dev/sdb1 #remoumt 重新挂载,rw 进行读写挂载
运行结果如下:
2.系统分区
2.1介绍一下硬盘的基本管理结构:
硬盘由系统管理,硬盘用来保存系统,系统安装在硬盘上;
硬盘的分区信息由分区表保存,分区表,磁盘的主动标识与主引导程序储存在上硬盘最外一圈0磁道上,大小为512字节
- mbr:
- MBR的意思是“主引导记录”,最早在1983年在IBM PC DOS 2.0中提出。之所以叫“主引导记录”,是因为它是存在于驱动器开始部分的一个特殊的启动扇区。这个扇区包含了已安装的操作系统的启动加载器和驱动器的逻辑分区信息。所谓启动加载器,是一小段代码,用于加载驱动器上其他分区上更大的加载器。如果你安装了Windows,Windows启动加载器的初始信息就放在这个区域里——如果MBR的信息被覆盖导致Windows不能启动,你就需要使用Windows的MBR修复功能来使其恢复正常。如果你安装了Linux,则位于MBR里的通常会是GRUB加载器
MBR支持最大2TB磁盘,它无法处理大于2TB容量的磁盘。MBR还只支持最多4个主分区——如果你想要更多分区,你需要创建所谓“扩展分区”,并在其中创建逻辑分区。- 主引导程序mbr:所占大小446字节,
剩下512-446=64+2 字节
64—>mpt 磁盘主分区表
2—>55aa硬盘的主动标识
2.2分区管理
2.2.1 mbr分区
[root@localhost ~]# fdisk /dev/vdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): m #m迎来查看所有
Command action
a toggle a bootable flag #切换一个可启动的标志
b edit bsd disklabel #编辑bsd磁碟标签
c toggle the dos compatibility flag #切换dos兼容性标志
d delete a partition #删除一个分区
g create a new empty GPT partition table #创建一个新的空GPT分区表
G create an IRIX (SGI) partition table #创建一个IRIX (SGI)分区表
l list known partition types #已知的分区类型列表
m print this menu #打印这个菜单
n add a new partition #添加一个新的分区
o create a new empty DOS partition table #创建一个新的空DOS分区表
p print the partition table #打印分区表
q quit without saving changes #退出而不保存更改打印
s create a new empty Sun disklabel #创建一个新的空的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) #额外的功能
Command (m for help): n
Partition type: #分区类型
p primary (1 primary, 0 extended, 3 free) #标准分区
e extended #扩展分区
Select (default p): p #选择标准分区
Partition number (2-4, default 2): 2
First sector (206848-20971519, default 206848):
Using default value 206848
Last sector, +sectors or +size{K,M,G} (206848-20971519, default 20971519): +100M
Partition 2 of type Linux and of size 100 MiB is set
Command (m for help): p #查看已有分区
Disk /dev/vdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xca64b62a
Device Boot Start End Blocks Id System
/dev/vdb1 2048 206847 102400 83 Linux
/dev/vdb2 206848 411647 102400 83 Linux
Command (m for help): wq #保存操作
执行完毕后,可通过cat /proc/partitions
来查看分区是否成功被系统识别,若无,可通过执行:partprobe
手动同步分区表
查看分区是否被系统识别:cat /proc/partitions
手动同步分区表:partprobe
注:
分区后是无法对分区直接进行操作的,需要安装文件系统
如:未进行文件系统添加直接对分区进行挂载操作
执行:
[root@localhost ~]# mount /dev/vdb2 /mnt
运行结果如下:无法进行挂载
可通过执行:
mkfs.xfs /dev/vdb2
格式化分区,也就是添加文件系统
运行结果如下:
进行挂载看是否可用:
- 若想删除传创建的分区可进行以下操作
-通过fdisk /dev/vdb将已存在分区删除
2.2.2 gpt 分区
上面的mbr分区仅能进行4个主分区的分割,或是通过添加额外分区,进行逻辑分区的添加,但是若是额外分区被损坏,逻辑分区中的内容也随之会被损坏。
这时候就需要才采用gpt分区类型了
- GPT
GPT意为GUID分区表。(GUID意为全局唯一标识符)。这是一个正逐渐取代MBR的新标准。它和UEFI相辅相成——UEFI用于取代老旧的BIOS,而GPT则取代老旧的MBR。之所以叫作“GUID分区表”,是因为你的驱动器上的每个分区都有一个全局唯一的标识符(globally unique identifier,GUID)——这是一个随机生成的字符串,可以保证为地球上的每一个GPT分区都分配完全唯一的标识符。
这个标准没有MBR的那些限制。磁盘驱动器容量可以大得多,大到操作系统和文件系统都没法支持。它同时还支持几乎无限个分区数量,限制只在于操作系统——Windows支持最多128个GPT分区,而且你还不需要创建扩展分区。
可通过:parted /dev/vdb 来改变当前分区方式
[root@localhost ~]# parted /dev/vdb
GNU Parted 3.1
Using /dev/vdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel #选择mklabel创建分区表,若不知选何可用Tab进行补齐
New disk label type? gpt #选择分区类型
Warning: The existing disk label on /dev/vdb will be destroyed and all data on
this disk will be lost. Do you want to continue?
Yes/No? YES #提示若是更改类型,硬盘中的东西将会全部被摧毁,询问是否确认更改类型
(parted) quit #quit退出
之后再进行分区划分与mbr相同
更改类型:
创建新分区:
建立完查看分区表:
2.2.3 开机自动挂载
对系统进修行分区后通过挂载应用磁盘,为了在重启机器后还能继续使用可编辑/etc/fstab文件执行开机自动挂载
[root@localhost ~]# vim /etc/fstab
编辑内容如下:
/dev/vdb1 /mnt xfs default 0 0
设备 挂载点 挂载类型 参数
- fstab
第五列是表示dump选项,dump工具通过这个选项位置上的数字来决定文件系统
是否需要备份。如果是0,dump就会被忽略,事实上,大多数的dump设置都是0。
第六列是fsck选项,fsck命令通过检测该字段来决定文件系统通过什么顺序来扫描检查
,根文件系统/对应该字段的值应该为1,其他文件系统应该为2。若文件系统无需在
启动时扫描检查,则设置该字段为0。
注:
不知道格式可以man 5 fstab
执行mount -a 后就会开机自动挂载
2.2.4 swap分区
- Swap分区
在系统的物理内存不够用的时候,把物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap分区中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中
(1)建立新分区,用来作为swap分区
[root@localhost ~]# fdisk /dev/vdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
-----------------------------
此处略去创建过程
-----------------------------
Device Boot Start End Blocks Id System
/dev/vdb1 2048 206847 102400 83 Linux
Command (m for help): t
Selected partition 1 #选择分区1
Hex code (type L to list all codes): 82 #选择分区id (若不知如何选择,可执行l 列出所有类型的id)
Changed type of partition 'Linux' to 'Linux swap / Solaris'
Command (m for help): p
Disk /dev/vdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x00067ce5
Device Boot Start End Blocks Id System
/dev/vdb1 2048 206847 102400 82 Linux swap / Solaris
Command (m for help): wq
最终结果配图:
创建完成后
执行:cat /proc/partitions 查看是否被系统识别
若没有,执行:partprobe 手动同步
完成上上述操作后,通过执行mksawp 命令来进行swap分区的最终创建
mkswap /dev/vdb1 #建立swap分区
swapon -a /dev/vdb1 #启动swap分区
swapon -s #显示是否建立了
运行结果如下:
上述swap在重启机器后会被系统回收
可通过编辑/etc/fstab 进行永久的swap分区添加
/dev/vdb1 swap swap defaults 0 0
swap不需挂载 分区类型
注:
若要删除swap分区
1.修改配置文件(/etc/fstab)将关于swap的删除
2.执行 swapoff /dev/vdb1 将swap分区去掉
f.disk /dev/vdb
d删除分区
4.partprobe 手动更新分区列表
运行结果如下:
删除后同步分区表
2.2.5对设备进行底层加密 luksFormat
为了便于管理和更加安全,可对磁盘分区进行’luksFormat’加密
cryptsetup luksFormat #进行luks加密
cryptsetup open <设备> [--type <type>] [<name>] - open device as mapping <名称>
建立一个指定名称的文件作为该设备的代表
文件在/dev/mapper/下
cryptsetup close <名称> - close device (remove mapping)
关闭对应文件,在下次启用时再打开。
注:
luks加密必须在新建分区下进行
具体执行如下:
通过 fdisk /dev/vdb建立新的分区
通过cryptsetup lucksFormat /dev/vdb1 进行加密
[root@localhost ~]# cryptsetup luksFormat /dev/vdb1
WARNING!
========
This will overwrite data on /dev/vdb1 irrevocably.
Are you sure? (Type uppercase yes): YES #此处必须为大写YES
Enter passphrase: #输入密码
Verify passphrase: #确认密码
#密码必须超过8位不能过于简单
此时仅加密成功,还不能对分区进行应用
需要执行以下操作对分区进行调用
[root@localhost ~]# cryptsetup open /dev/vdb1 myvdb1 #打开设备,文件名自拟
Enter passphrase for /dev/vdb1: #输入加密时设定的密码
[root@localhost ~]# ls /dev/mapper/ #在此目录下生成
control myvdb1
运行如下:
调用成功,对此文件“mycdb1”进行格式化分区,也就是添加文件系统
执行:
[root@localhost ~]# mkfs.xfs /dev/mapper/myvdb1 #进行格式化分区
[root@localhost ~]# mount /dev/mapper/myvdb1 /mnt #进行挂载使用
[root@localhost ~]# df -h #查看是否挂载
运行结果如下:
格式化分区
挂载,查看
想停止使用加密分区可以通过执行cryptsetup close myvdb1
来进行关闭
关闭时必须保证myvdb1不被占用否则会报错,示例如下:
解除占用后执行就可关闭,想要再次使用再执行open即可
示例:
为了防止每次调用都要进行打开指令,可让设备在开机时自己启动。
编辑文件执行开机自动挂载
[root@localhost ~]# vim /root/lukskey #编辑/root/lukskey 将luks密码输入(文件名自拟)
[root@localhost ~]# chmod 600 /root/lukskey #修改权限确保安全性
[root@localhost ~]# ll /root/lukskey
-rw-------. 1 root root 9 May 3 05:54 /root/lukskey
[root@localhost ~]# cryptsetup luksAddKey /dev/vdb1 /root/lukskey #将钥匙加到设备上
Enter any passphrase: #输入密码
编辑文件进行开机自动:
[root@localhost ~]# vim /etc/crypttab
内容:myvdb1 /dev/vdb1 /root/lukskey
[root@localhost ~]# vim /etc/fstab
内容:
/dev/mapper/myvdb1 /mnt xfs defaults 0 0
运行如下:
建立钥匙文件,并与设备建立连接
- 编辑文件实现自启
/etc/crypttab:
/etc/fstab:
重启系统后就会看到效果
注:
系统启动的开机运行记录文件: cat /var/log/boot.log
- 附:删除加密磁盘
删除luksFormat 清除所有建立与修改
1.清除/etc/fstab
内编辑的内容;
2.清除/etc/crypttab
内编辑的内容;
3.删除/root/lukskey
钥匙;
4.关闭myvdb1
:cryptsetup close myvdb;
5.格式化磁盘分区:mkfs.xfs /dev/vdb2。
2.2.5 磁盘阵列
- 磁盘阵列
磁盘阵列英文名全称Redundantarrays of inexpensive Disks(RAID),即容错廉价磁盘阵列。RAID可以通过一些技术(软件或者硬件)将多个较小的磁盘整合成为一个较大的磁盘设备;而这个较大的磁盘功能不仅仅是用户存储,他还具有数据保护功能。整个RAID由于选择的等级不同,而使得整合后的磁盘具有不同的功能。常见的等级有以下几种:
- RAID-0(等量模式):性能最佳
使用相同的磁盘来组成在组成RAID-0。在组成RAID-0时,每块磁盘都会被事先隔成小区块。当有数据要写入时,数据会先被分割成符合小区块大小,然后再依序一个个放到不同磁盘中。每块瓷盘负责的数据量都降低了,效率提高。
但相应的RAID-0只要有任何一块磁盘损毁,在RAID上面的所有数据都会因丢失而无法读取,安全性差。- RAID-1(映像模式):完成备份
RAID-1需要容量相等的磁盘,最好是一模一样的,因为RAID-1遵循木桶原则,总容量以容量最小的一块为主。此模式让同一份数据完整保存在两块磁盘上面,即当数据写入时若有两块磁盘,数据将会同时存储到两块硬盘中。
RAID-1的最大优点就是在于数据的备份。不过由于磁盘容量有一半用在备份,因此容量会是全部磁盘容量的一般。- RAID-5性能与数据备份的均衡考虑
RAID-5至少需要三块以上的磁盘才能组成。此磁盘阵列的数据写入有点类似于RAID-0,不过每个循环写入过程中,在每块磁盘中还加入一个同位检查数据(Parity),这个数据会记录其它磁盘的备份数据,用于当有磁盘损坏时的救援。
制作raid设备(用一块硬盘进行模拟制作)
具体操作如下: 建立新分区并更改分区id,结果如下: ![这里写图片描述](https://img-blog.csdn.net/20180504083243332?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0J1c3Rlcl9aUg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) 后执行如下命令:1.fdisk /dev/vdb
(1)新建三个分区vdb1,vdb2,vdb3
(2)赋予1G容量,
(3)类型改为 :Linux raid autodetect(fd
)
2 mdadm -C /dev/md0 -a yes -l 1 -n 2 -x 1 /dev/vdb{1..3}
通过man mdadm查看参数含义
3.mkfs.xfs /dev/md0 #格式化
4.mount /dev/md0 /mnt #对设备进行挂载使用
[root@localhost ~]# mdadm -C /dev/md0 -a yes -l 1 -n 2 -x 1 /dev/vdb{1..3}
-C:新建RAID
-a yes:确认建立并确定后面接的磁盘阵列/dev/vdb{1..3}
-l:磁盘阵列的等级
-n:指定阵列中活动设备的数量
-x:指定阵列中空闲设备的数量
mdadm: Note: this array has metadata at the start and ~~~~~
Continue creating array? y #是否确定创建
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
运行结果如下: ![这里写图片描述](https://img-blog.csdn.net/2018050408330970?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0J1c3Rlcl9aUg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
[root@localhost ~]# mkfs.xfs /dev/md0 #格式化设备
运行结果如下: ![这里写图片描述](https://img-blog.csdn.net/20180504083336860?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0J1c3Rlcl9aUg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
[root@localhost ~]# mount /dev/md0 /mnt #对设备进行挂载
[root@localhost ~]# df -h
/dev/md0 1021M 33M 988M 4% /mnt
运行结果如下: ![这里写图片描述](https://img-blog.csdn.net/20180503170351664?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0J1c3Rlcl9aUg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
可通过对/proc/mdstat里的内容进行监控来观查raid设备
[root@localhost ~]# watch -n1 cat /proc/mdstat
![这里写图片描述](https://img-blog.csdn.net/20180504083411721?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0J1c3Rlcl9aUg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
当组成raid的硬盘出现错误或需要更换组成raid的硬盘时,可进行如下操作
- 对设备进行添加删除:
首先观察设备状态:
[root@localhost ~]# mdadm -D /dev/md0 #观察设备状态
/dev/md0:
Version : 1.2 #版本
Creation Time : Thu May 3 07:07:14 2018 #创建时间
Raid Level : raid1 #等级
Array Size : 1048000 (1023.61 MiB 1073.15 MB) #大小
Used Dev Size : 1048000 (1023.61 MiB 1073.15 MB)#已用设备大小
Raid Devices : 2 #组成raid所用设备个数
Total Devices : 3 #总的设备个数
Persistence : Superblock is persistent
Update Time : Thu May 3 07:08:09 2018 #更新时间
State : clean
Active Devices : 2 #工作的设备数
Working Devices : 3 #可用来工作的设备总数
Failed Devices : 0 #损坏的设备数
Spare Devices : 1 #空闲设备数
Name : localhost:0 (local to host localhost)
UUID : a1aece77:6b95a989:4824f019:e1530fd2
Events : 17
Number Major Minor RaidDevice State
0 253 17 0 active sync /dev/vdb1
1 253 18 1 active sync /dev/vdb2
2 253 19 - spare /dev/vdb3
通过上述观察,可看到raid的工作状态,和组成raid个设备的工作状态
注:
三个设备构成raid的意义是,在一个设备损坏时,另一个设备无缝过渡,顶替上一个设备继续工作
下面是对设备的删除添加:
mdadm /dev/md0 -r /dev/vdb1 #从raid中移除vdb1
mdadm /dev/md0 -f /dev/vdb1 #摧毁vdb1
mdadm /dev/md0 -a /dev/vdb1 #将vdb1添加到raid中
运行结果如下:
- 摧毁vdb1
用 mdadm -D /dev/md0查看raid状态
- 从raid中移除vdb1
用 mdadm -D /dev/md0查看raid状态
- 将vdb1添加到raid中
用 mdadm -D /dev/md0查看raid状态’
删除raid
mdadm -S /dev/md0 #停止设备
mdadm -D /dev/md0
fdisk /dev/vdb #删除各个分区
partprobe #手动更新分区表
运行如下:
之后再进行各分区删除