文件系统
操作系统用于明确存储设备(常见的是磁盘)或分区上的文件的方法和数据结构; 即在存储设备上组织文件的方法。 linux常见的文件系统:
EXT4是Linux系统下的日志文件系统,是EXT3文件系统的后继版本。
(1)Ext4的文件系统容量达到1EB,而文件容量则达到16TB
(2)理论上支持无限数量的子目录
(3)Ext4文件系统使用64位空间记录块数量和i-节点数量
(4)Ext4的多块分配器支持一次调用分配多个数据块
xfs是一种非常优秀的日志文件系统,SGI公司设计的,被称为业界最先进的、最具可升级性的文件系统技术
(1)根据所记录的日志在很短的时间内迅速恢复磁盘文件内容
(2)采用优化算法,日志记录对整体文件操作影响非常小
(3)是一个全64-bit的文件系统,它可以支持上百万T字节的存储空间
(4)能以接近裸设备I/O的性能存储数据
虚拟机添加磁盘
关机添加磁盘,系统自动识别 或 开机添加磁盘,需要使用下面命令识别
1. echo "- - -" >> /sys/class/scsi_host/host0/scan 2. echo "- - -" >> /sys/class/scsi_host/host1/scan 3. echo "- - -" >> /sys/class/scsi_host/host2/scan 4. fdisk -l
磁盘分区方式
MBR:主引导记录,支持4主或3主1扩展多逻辑,每分区最大2TB,兼容性好。
GPT:是GUID分区表(GUID Partition Table)的缩写; 含义为“全局唯一标识磁盘分区表”,是一个实体硬盘的分区表的结构布局的标准。 自纠错能力强,一块磁盘上主分区数量不受(4个的)限制,支持大于18EB的总容量, 几乎没有上限,最大支持到128个分区,分区大小支持到256TB。 分区命令
1. fdisk分区方式
[root@localhost ~]# fdisk /dev/sdb
p: 显示当前硬件的分区,包括没有保存的改动
n: 创建一个新的分区
d:删除一个分区
w: 保存并退出
q: 不保存退出
t: 修改分区类型(文件系统类型)
l: 显示所支持的所有类型
2. gdisk分区方式
[root@localhost ~]# gdisk /dev/sdb
p: 显示当前硬件的分区,包括没有保存的改动
n: 创建一个新的分区
d:删除一个分区
w: 保存并退出
q: 不保存退出
t: 修改分区类型(文件系统类型)
l: 显示所支持的所有类型
分区号码有区别:fdisk 82 gdisk 8200
分区格式化
格式化文件系统分别为ext4和xfs
1. mkfs.ext4 /dev/sdb1 2. mkfs.xfs /dev/sdc1
挂载磁盘
1. 临时挂载
[root@localhost ~]# mount /dev/sdb1 /mnt
2. 永久挂载
1. [root@localhost ~]# vim /etc/fstab 2. /dev/sdb1 /mnt xfs defaults 0 0
磁盘高级管理
LVM:逻辑卷
从卷组中分割的一块空间,用于建立文件系统,动态调整分区大小,扩展性好
创建PV 物理卷
pvcreate :将实体 partition 创建成为 PV 例: pvcreate /dev/sdb1 /dev/sdc1
pvscan :搜寻目前系统里面任何具有 PV 的磁盘;
pvdisplay :显示出目前系统上面的 PV 状态;
pvremove :将 PV 属性移除,让该 partition 不具有 PV 属性
创建VG 卷组
vgcreate :创建 VG 的 (-s :后面接 PE 的大小,默认4M)例:vgcreate -s 16m mailbox /dev/sdb1 /dev/sdc1;
vgscan :搜寻系统上面是否有 VG 存在;
vgdisplay :显示目前系统上面的 VG 状态;
vgextend :在 VG 内增加额外的 PV 例:vgextend vg1 /dev/sdd4 /dev/sdb5;
vgreduce :在 VG 内移除 PV;
vgchange :设置 VG 是否启动 (active);
vgremove :删除一个 VG;
创建LV 划分逻辑卷
lvcreate :创建 LV -n 名称 -L 空间大小(<vg) 例:lvcreate -n mail2 -l 1000 mailbox
lvscan :查询系统上面的 LV ;
lvdisplay :显示系统上面的 LV 状态
lvextend :在 LV 里面增加容量!
lvreduce :在 LV 里面减少容量;
lvremove :删除一个 LV
lvresize :对 LV 进行容量大小的调整
重新计算磁盘容量
重新计算磁盘使其生效 (磁盘在使用中,进行空间的扩展)
1. resize2fs 卷名 #ext4文件系统 2. xfs_growfs 卷名 #xfs文件系统
LVM案例
创建卷组mailbox,逻辑卷mail
1. [root@localhost ~]# echo "- - -" >> /sys/class/scsi_host/host0/scan #开机加入硬盘需要刷新 2. [root@localhost ~]# echo "- - -" >> /sys/class/scsi_host/host1/scan 3. [root@localhost ~]# echo "- - -" >> /sys/class/scsi_host/host2/scan 4. [root@localhost ~]# fdisk -l 5. [root@localhost ~]# fdisk /dev/sdb n-p-回车-回车-回车-w 6. [root@localhost ~]# fdisk /dev/sdc 7. [root@localhost ~]# fdisk /dev/sdd 8. [root@localhost ~]# fdisk -l #查看三个硬盘是否添加成功 9. [root@localhost ~]# pvcreate /dev/sdb1 /dev/sdc1 #创建pv 10. Physical volume "/dev/sdb1" successfully created. 11. Physical volume "/dev/sdc1" successfully created. 12. [root@localhost ~]# vgcreate -s 16m mailbox /dev/sdb1 /dev/sdc1 #创建vg卷组,-s指定PE大小 13. Volume group "mailbox" successfully created 14. [root@localhost ~]# vgscan #扫描卷组 15. Reading volume groups from cache. 16. Found volume group "centos" using metadata type lvm2 17. Found volume group "mailbox" using metadata type lvm2 18. [root@localhost ~]# vgdisplay mailbox #查看卷组状态 19. --- Volume group --- 20. VG Name mailbox 21. System ID 22. Format lvm2 23. Metadata Areas 2 24. Metadata Sequence No 1 25. VG Access read/write 26. VG Status resizable 27. MAX LV 0 28. Cur LV 0 29. Open LV 0 30. Max PV 0 31. Cur PV 2 32. Act PV 2 33. VG Size <39.97 GiB 34. PE Size 16.00 MiB 35. Total PE 2558 36. Alloc PE / Size 0 / 0 37. Free PE / Size 2558 / <39.97 GiB 38. VG UUID I9dvdd-VKKf-0Y0f-hxKo-Ivld-Ed4y-i9oFgR 39. [root@localhost ~]# lvcreate -n mail1 -L 10G mailbox #创建lv逻辑卷,名称为mail1,大小为10G,从mailbox卷组拿 40. Logical volume "mail1" created. 41. [root@localhost ~]# lvdisplay /dev/mailbox/mail1 #查看逻辑卷状态 42. --- Logical volume --- 43. LV Path /dev/mailbox/mail1 44. LV Name mail1 45. VG Name mailbox 46. LV UUID CahigK-NdHF-QubM-jBwM-TS3L-xgTf-20n3eg 47. LV Write Access read/write 48. LV Creation host, time localhost.localdomain, 2023-03-04 10:43:49 +0800 49. LV Status available 50. # open 0 51. LV Size 10.00 GiB 52. Current LE 640 53. Segments 1 54. Allocation inherit 55. Read ahead sectors auto 56. - currently set to 8192 57. Block device 253:2 58. [root@localhost ~]# mkdir /mail1 #创建挂载目录 59. [root@localhost ~]# mkfs.xfs /dev/mailbox/mail1 #格式化磁盘为xfs格式 60. meta-data=/dev/mailbox/mail1 isize=512 agcount=4, agsize=655360 blks 61. = sectsz=512 attr=2, projid32bit=1 62. = crc=1 finobt=0, sparse=0 63. data = bsize=4096 blocks=2621440, imaxpct=25 64. = sunit=0 swidth=0 blks 65. naming =version 2 bsize=4096 ascii-ci=0 ftype=1 66. log =internal log bsize=4096 blocks=2560, version=2 67. = sectsz=512 sunit=0 blks, lazy-count=1 68. realtime =none extsz=4096 blocks=0, rtextents=0 69. [root@localhost ~]# mount /dev/mailbox/mail1 /mail1/ #挂载mail1 70. [root@localhost ~]# lvcreate -n mail2 -l 1000 mailbox #创建lv逻辑卷mail2 71. Logical volume "mail2" created. 72. [root@localhost ~]# lvdisplay /dev/mailbox/mail2 #查看逻辑卷mail2 73. --- Logical volume --- 74. LV Path /dev/mailbox/mail2 75. LV Name mail2 76. VG Name mailbox 77. LV UUID ftxk6Y-Luwl-thVS-1tHH-6pTH-93sk-GTvznI 78. LV Write Access read/write 79. LV Creation host, time localhost.localdomain, 2023-03-04 10:46:50 +0800 80. LV Status available 81. # open 0 82. LV Size 15.62 GiB 83. Current LE 1000 84. Segments 1 85. Allocation inherit 86. Read ahead sectors auto 87. - currently set to 8192 88. Block device 253:3 89. [root@localhost ~]# mkdir /mail2 #创建mail2挂载目录 90. [root@localhost ~]# mkfs.xfs /dev/mailbox/mail2 #格式化mail2为xfs格式 91. meta-data=/dev/mailbox/mail2 isize=512 agcount=4, agsize=1024000 blks 92. = sectsz=512 attr=2, projid32bit=1 93. = crc=1 finobt=0, sparse=0 94. data = bsize=4096 blocks=4096000, imaxpct=25 95. = sunit=0 swidth=0 blks 96. naming =version 2 bsize=4096 ascii-ci=0 ftype=1 97. log =internal log bsize=4096 blocks=2560, version=2 98. = sectsz=512 sunit=0 blks, lazy-count=1 99. realtime =none extsz=4096 blocks=0, rtextents=0 100. [root@localhost ~]# mount /dev/mailbox/mail2 /mail2 #挂载mail2 101. [root@localhost ~]# echo "/dev/mailbox/mail1 /mail1 xfs defaults 0 0" >> /etc/fstab #永久挂载 102. [root@localhost ~]# echo "/dev/mailbox/mail2 /mail2 xfs defaults 0 0" >> /etc/fstab 103. [root@localhost ~]# cat /etc/fstab #查看刚才文件是否插入进去,下面省略部分内容 104. [root@localhost ~]# vgdisplay mailbox #查看mailbox卷组还有多少G 105. #省略部分内容 106. [root@localhost ~]# lvextend -L 15G /dev/mailbox/mail1 #给mail1加到15G 107. Size of logical volume mailbox/mail1 changed from 10.00 GiB (640 extents) to 15.00 GiB (960 extents). 108. Logical volume mailbox/mail1 successfully resized. 109. [root@localhost ~]# xfs_growfs /dev/mailbox/mail1 #重新计算磁盘容量 110. meta-data=/dev/mapper/mailbox-mail1 isize=512 agcount=4, agsize=655360 blks 111. = sectsz=512 attr=2, projid32bit=1 112. = crc=1 finobt=0 spinodes=0 113. data = bsize=4096 blocks=2621440, imaxpct=25 114. = sunit=0 swidth=0 blks 115. naming =version 2 bsize=4096 ascii-ci=0 ftype=1 116. log =internal bsize=4096 blocks=2560, version=2 117. = sectsz=512 sunit=0 blks, lazy-count=1 118. realtime =none extsz=4096 blocks=0, rtextents=0 119. data blocks changed from 2621440 to 3932160 120. [root@localhost ~]# lvextend -L 30G /dev/mailbox/mail1 #给mail1加30G发现保存,原因是vg容量不够,需要扩容 121. Insufficient free space: 960 extents needed, but only 598 available 122. [root@localhost ~]# vgextend mailbox /dev/sdd1 #把sdd1磁盘给mailbox卷组 123. Physical volume "/dev/sdd1" successfully created. 124. Volume group "mailbox" successfully extended 125. [root@localhost ~]# vgdisplay mailbox #查看卷组是否为3个pv且磁盘容量正确 126. --- Volume group --- 127. VG Name mailbox 128. System ID 129. Format lvm2 130. Metadata Areas 3 131. Metadata Sequence No 5 132. VG Access read/write 133. VG Status resizable 134. MAX LV 0 135. Cur LV 2 136. Open LV 2 137. Max PV 0 138. Cur PV 3 139. Act PV 3 140. VG Size 59.95 GiB 141. PE Size 16.00 MiB 142. Total PE 3837 143. Alloc PE / Size 1960 / 30.62 GiB 144. Free PE / Size 1877 / <29.33 GiB 145. VG UUID I9dvdd-VKKf-0Y0f-hxKo-Ivld-Ed4y-i9oFgR 146. [root@localhost ~]# lvextend -L 30G /dev/mailbox/mail1 #扩充mail1到30G 147. Size of logical volume mailbox/mail1 changed from 15.00 GiB (960 extents) to 30.00 GiB (1920 extents). 148. Logical volume mailbox/mail1 successfully resized. 149. [root@localhost ~]# xfs_growfs /dev/mailbox/mail1 #重新计算磁盘容量 150. meta-data=/dev/mapper/mailbox-mail1 isize=512 agcount=6, agsize=655360 blks 151. = sectsz=512 attr=2, projid32bit=1 152. = crc=1 finobt=0 spinodes=0 153. data = bsize=4096 blocks=3932160, imaxpct=25 154. = sunit=0 swidth=0 blks 155. naming =version 2 bsize=4096 ascii-ci=0 ftype=1 156. log =internal bsize=4096 blocks=2560, version=2 157. = sectsz=512 sunit=0 blks, lazy-count=1 158. realtime =none extsz=4096 blocks=0, rtextents=0 159. data blocks changed from 3932160 to 7864320 160. [root@localhost ~]# df -hT #查看磁盘大小 161. 文件系统 类型 容量 已用 可用 已用% 挂载点 162. devtmpfs devtmpfs 470M 0 470M 0% /dev 163. tmpfs tmpfs 487M 0 487M 0% /dev/shm 164. tmpfs tmpfs 487M 9.3M 477M 2% /run 165. tmpfs tmpfs 487M 0 487M 0% /sys/fs/cgroup 166. /dev/mapper/centos-root xfs 17G 7.3G 9.8G 43% / 167. /dev/sda1 xfs 1014M 173M 842M 18% /boot 168. tmpfs tmpfs 98M 56K 98M 1% /run/user/0 169. /dev/mapper/mailbox-mail1 xfs 30G 33M 30G 1% /mail1 170. /dev/mapper/mailbox-mail2 xfs 16G 33M 16G 1% /mail2 171. [root@localhost ~]# lvextend -L +4G /dev/mailbox/mail2 #给mail2逻辑卷加4G 172. Size of logical volume mailbox/mail2 changed from 15.62 GiB (1000 extents) to 19.62 GiB (1256 extents). 173. Logical volume mailbox/mail2 successfully resized. 174. [root@localhost ~]# xfs_growfs /dev/mailbox/mail2
添加磁盘配额功能
指定用户存放大小,临时挂载、永久挂载
1. mount -o usrquota,grpquota /挂载盘 /挂载点 2. echo "/挂载盘 /挂载点 xfs defaults,usrquota,grpquota 0 0" >> /etc/fstab
ext4文件系统磁盘配额
- 创建test1用户
- 创建挂载目录
- 给目录其他人权限
- 重新挂载
- 生成配额文件 quotacheck /data
- 开启配额功能 quotaon /data 关闭配额功能: qutoaoff /data
- 编辑用户配额 edquota -u test 单位:KB 1024KB=1M 1024M=1GB
1. [root@localhost ~]# useradd test1 #创建用户 2. [root@localhost ~]# mkdir /ext4_data #创建目录 3. [root@localhost ~]# chmod 777 /ext4_data/ #赋予权限 4. [root@localhost ~]# mount -o usrquota,grpquota,defaults /dev/mailbox/mail1 /ext4_data/ #重新挂载 5. [root@localhost ~]# quotaon -ugv /dev/mailbox/mail1 #启用配额 6. quotaon: Enforcing group quota already on /dev/mapper/mailbox-mail1 7. quotaon: Enforcing user quota already on /dev/mapper/mailbox-mail1 8. [root@localhost ~]# edquota -u test1 #针对用户配额;(针对组配额 edquota -g 组名) 9. Disk quotas for user test1 (uid 1002): 10. Filesystem blocks soft hard inodes soft hard 11. /dev/mapper/mailbox-mail2 0 0 0 0 0 0 12. /dev/mapper/mailbox-mail1 0 10M 30M 0 3 5 13. #注:选择挂载的磁盘,soft为软限额;hard为硬限额(第一个组合为大小,第二个组合为个数):wq保存退出 14. bsoft:软配额限制,限制10Mb警告但不强制 15. bhard:硬配额限制,限制最多为30Mb 16. isoft:文件数超过3个警告 17. ihard:文件数5个后不可在创建 18. 19. #切换用户验证 20. [root@localhost ~]# su - test1 #切换test1 21. Attempting to create directory /home/test1/perl5 22. [test1@localhost ~]$ cd /ext4_data/ #进入/ext4_data/目录 23. [test1@localhost ext4_data]$ touch file{1..6} #创建6个文件(配额限制最多创建5个) 24. touch: 无法创建"file6": 超出磁盘限额 25. [test1@localhost ext4_data]$ dd if=/dev/zero of=/ext4_data/file1 bs=10M count=5 #使用漏斗命令测试大小(配额限制最多30Mb) 26. dd: 写入"/ext4_data/file1" 出错: 超出磁盘限额 27. 记录了4+0 的读入 28. 记录了3+0 的写出 29. 31457280字节(31 MB)已复制,0.103206 秒,305 MB/秒 30. [test1@localhost ext4_data]$ ll -h file1 #查看大小限制 31. -rw-rw-r--. 1 test1 test1 30M 3月 4 13:16 file1 32. [test1@localhost ext4_data]$ ls #查看数量限制 33. file1 file2 file3 file4 file5
xfs文件系统磁盘配额
- 创建用户 user1
- 创建挂载目录
- 编辑用户配额(也可以给组配额)
- 给挂载目录其他人权限
- 切换用户验证配额的效果
- 可以使用edquota -u 用户名 修改用户的磁盘配额
- 开启配额功能 quotaon /data 关闭配额功能: qutoaoff /data
1. [root@localhost ~]# useradd user1 #创建用户 2. [root@localhost ~]# mkdir /xfs_data #创建挂载目录 3. [root@localhost ~]# mount -o usrquota,grpquota /dev/mailbox/mail2 /xfs_data/ #挂载并启用配额 4. [root@localhost ~]# xfs_quota -x -c 'limit -u bsoft:30M bhard:50M isoft:3 ihard:5 user1' /xfs_data/ #编辑用户配额 5. [root@localhost ~]# chmod 777 /xfs_data/ #赋予权限 6. #切换用户验证 7. [root@localhost ~]# su - user1 #切换user1用户 8. [user1@localhost ~]$ cd /xfs_data/ #进入挂载目录 9. [user1@localhost xfs_data]$ touch file{1..10} #创建file1到10,最多可以创建5个 10. touch: 无法创建"file6": 超出磁盘限额 11. touch: 无法创建"file7": 超出磁盘限额 12. touch: 无法创建"file8": 超出磁盘限额 13. touch: 无法创建"file9": 超出磁盘限额 14. touch: 无法创建"file10": 超出磁盘限额 15. [user1@localhost xfs_data]$ ls #查看数量限制 16. file1 file2 file3 file4 file5 17. [user1@localhost xfs_data]$ dd if=/dev/zero of=/xfs_data/file1 bs=10M count=6 #使用漏斗命令给file1文件输入大于50Mb 18. dd: 写入"/xfs_data/file1" 出错: 超出磁盘限额 19. 记录了6+0 的读入 20. 记录了5+0 的写出 21. 52428800字节(52 MB)已复制,0.122502 秒,428 MB/秒 22. [user1@localhost xfs_data]$ ll -h file1 #查看大小限制 23. -rw-rw-r--. 1 user1 user1 50M 3月 4 12:36 file1 24. [root@localhost ~]# edquota -u user1 #该命令可以给user1修改配额 25. [root@localhost ~]# quotaoff /xfs_data/ #关闭配额功能 26. [root@localhost ~]# quotaon /xfs_data/ #开启配额功能 27. 注: 28. bsoft:软配额限制,限制30Mb警告但不强制 29. bhard:硬配额限制,限制最多为50Mb 30. isoft:文件数超过3个警告 31. ihard:文件数5个后不可在创建
不只可以给用户配额,也可以通过下面命令给组配额,原理与上面相同
[root@localhost ~]# xfs_quota -x -c 'limit -g bsoft:30M bhard:50M isoft:3 ihard:5 组名' 挂载目录
修复文件系统
xfs_repair /dev/sdb1
检测磁盘坏道
badblocks -sv /dev/sdb
重新挂载
mount -o remount /挂载点或设备名
xfs备份/还原
1. xfsdump -f 备份存放路径 /dev/sdb1 2. xfsrestore -f 备份路径的文件 /还原到那个目录
VDO
Virtual Data Optimizer 通过数据去重、压缩的方式来优化存储空间,vdo最大的作用就是节省硬盘空间,可以做到1TB的硬盘,存放3TB的数据甚至更多。VDO靠的就是删除和压缩解压缩技术,去重就是把硬盘里相同的数据以前要存多份,现在会把多余的删掉,只留一份,压缩算法来节省空间。
(1) 安装
[root@localhost ~]# yum -y install vdo
(2) vdo 命令语法
1. create 创建一个VDO卷及其关联索引使其可用。 2. remove 删除一个或多个已停止的VDO卷和相关卷索引。 3. modify 修改一个或所有VDO的配置参数卷。更改将在VDO下次运行时生效设备启动;已经运行的设备则不是受到影响。 4. list 显示已启动VDO卷的列表。如果,所有指定它同时显示已启动和未启动卷。 5. start 启动一个或多个已停止、激活的VDO卷相关的服务。 6. status 以YAML格式报告VDO系统和卷状态。但是,这个命令不需要root特权如果没有,信息将是不完整的。 7. stop 停止一个或多个正在运行的VDO卷和相关卷服务。 8. activate 激活一个或多个VDO卷。激活卷可以使用“开始”命令启动。 9. deactivate 使一个或多个VDO卷失效。停用不能通过“start”命令启动卷。停用当前正在运行的卷不会停止它。 10. growLogical 增加VDO卷的逻辑大小。卷必须存在并且必须正在运行。 11. growPhysical 增加VDO卷的物理大小。卷必须存在并且必须正在运行。
(3) vdo卷案例:把20G的磁盘创建一个60G大小的vdo卷
1. [root@localhost ~]# vdo create --name=vdo1 --device=/dev/sdf1 --vdoLogicalSize=60G 2. Creating VDO vdo1 3. Starting VDO vdo1 4. Starting compression on VDO vdo1 5. VDO instance 1 volume is ready at /dev/mapper/vdo1
(4) 查看vdo卷
1. [root@localhost ~]# vdo list 2. vdo1 3. [root@localhost ~]# lsblk /dev/sdf 4. NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT 5. sdf 8:80 0 20G 0 disk 6. └─sdf1 8:81 0 20G 0 part 7. └─vdo1 253:4 0 60G 0 vdo
(5) 格式化vdo卷
[root@localhost ~]# mkfs.xfs /dev/mapper/vdo1
(6) 查看vdo卷属性
1. [root@localhost ~]# vdostats --si 2. Device Size Used Available Use% Space saving% 3. /dev/mapper/vdo1 21.5G 4.3G 17.2G 20% 99% 4. [root@localhost ~]# blkid /dev/mapper/vdo1 5. /dev/mapper/vdo1: UUID="bdf896be-8cf7-4881-b61b-73847a2e7e17" TYPE="xfs"
(7) 自动挂载
1. [root@localhost ~]# mkdir /vdo_data 2. [root@localhost ~]# mount /dev/mapper/vdo1 /vdo_data/ 3. [root@localhost ~]# echo "/dev/mapper/vdo1 /vdo_data xfs x-systemd.requires=vdo.service 0 0" >> /etc/fstab
(8) 删除vdo卷
1. [root@localhost ~]# umount /vdo_data 2. [root@localhost ~]# vdo remove --name=vdo1 3. Removing VDO vdo1 4. Stopping VDO vdo1
stratis(centos8)
便捷的使用精简置备(Thin Provisioning)、快照(Snapshots)、基于池(Pool-based)的管理和监控等高级存储功能;基于xfs文件系统格式,创建filesystem后不需要格式化
(1) 安装stratis
1. yum install -y stratisd stratis-cli 2. systemctl enable stratisd
(2) 创建pool池,大于1G
1. stratis pool create pool-one /dev/sda1 2. stratis pool list
(3) 向已经存在的pool池中添加块设备
stratis pool add-data pool-one /dev/sda2
(4) 同时将两块块设备添加到同一个pool池中
stratis pool create pool-two /dev/sda3 /dev/sda4
(5) 查看pool-one池和pool-two池中所使用的块设备
1. stratis blockdev list pool-one 2. stratis blockdev list pool-two
(6) 在pool-one池中创建filesystem(一次只能创建一个filesystem)
1. stratis filesystem create pool-one file-one 2. stratis filesystem list
(7) 挂载filesystem
1. mkdir /fsdir 2. mount /stratis/pool-one/file-one /fsdir/
(8) 永久挂载
1. blkid /stratis/pool-one/file-one 2. echo "UUID=deeb42ce-5715-42ca-b33a-fcbfece6dd0a /fsdir xfs defaults 0 0" >> /etc/fstab
raid
磁盘阵列(Redundant Arrays of Independent Disks)由独立磁盘构成的具有冗余能力的阵列。
Raid 0(条带): 读写速度得到提升,但不具备数据冗余,不推荐,最少2块硬盘
Raid 1(镜像): 写性能下降,读性能提升,相反冗余能力提升。但磁盘利用率是1/2,最少2块硬盘
Raid 1+0: 同组不能都坏掉,目前主流的方案。最少4块
Raid 0+1: 同组都可以坏,不能是不同组的相同标号。最少4块硬盘
Raid 0+1 和Raid1+0的空间利用率都是1/2
Raid 5(校验码机制):读写都提升,冗余有,空间利用率(n-1)/n 只能坏一块。最少3块硬盘
Raid 5+0:具有RAID 5和RAID 0的共同特性。它由两组以上RAID 5磁盘组成(每组最少3个)。
Raid 6 可以看做是raid5的升级版,它支持同时损坏2块磁盘。最少是4块盘
Raid 7 可以看做是raid5的升级版,它支持同时损坏3块磁盘。最少是5块盘
(1) 分区
1. echo "- - -" >> /sys/class/scsi_host/host0/scan 2. echo "- - -" >> /sys/class/scsi_host/host1/scan 3. echo "- - -" >> /sys/class/scsi_host/host2/scan 4. fdisk -l 5. [root@localhost ~]# gdisk /dev/sdb #分区为sdb1、sdb2 6. #文件分区类型选FD00,其他磁盘根据需求分区
(2)创建raid0,查看raid设备,挂载
1. [root@localhost ~]# mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdb{1,2} 2. mdadm: Defaulting to version 1.2 metadata 3. mdadm: array /dev/md0 started. 4. [root@localhost ~]# cat /proc/mdstat 5. Personalities : [raid0] 6. md0 : active raid0 sdb2[1] sdb1[0] 7. 20950528 blocks super 1.2 512k chunks 8. 9. unused devices: <none> 10. [root@localhost ~]# mdadm -D /dev/md0 #查看raid0详细信息 11. #省略部分内容 12. [root@localhost ~]# mkfs.xfs /dev/md0 #格式化为xfs格式 13. #省略部分内容 14. [root@localhost ~]# mkdir /raid0 15. [root@localhost ~]# mount /dev/md0 /raid0/ 16. [root@localhost ~]# echo "/dev/md0 /raid0 xfs default 0 0" >> /etc/fstab
(3) 创建raid1
1. [root@localhost ~]# mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/sdc /dev/sdd 2. #省略部分内容 3. [root@localhost ~]# mdadm -D /dev/md1 4. #省略部分内容 5. [root@localhost ~]# mkfs.xfs /dev/md1 6. meta-data=/dev/md1 isize=512 agcount=4, agsize=1309632 blks 7. = sectsz=512 attr=2, projid32bit=1 8. = crc=1 finobt=0, sparse=0 9. data = bsize=4096 blocks=5238528, imaxpct=25 10. = sunit=0 swidth=0 blks 11. naming =version 2 bsize=4096 ascii-ci=0 ftype=1 12. log =internal log bsize=4096 blocks=2560, version=2 13. = sectsz=512 sunit=0 blks, lazy-count=1 14. realtime =none extsz=4096 blocks=0, rtextents=0 15. [root@localhost ~]# mkdir /backup 16. [root@localhost ~]# mount /dev/md1 /backup 17. [root@localhost ~]# echo "/dev/md1 /backup xfs defaults 0 0" >> /etc/fstab 18. [root@localhost ~]# mdadm /dev/md1 -f /dev/sdc #模拟损坏 19. mdadm: set /dev/sdc faulty in /dev/md1 20. [root@localhost ~]# mdadm /dev/md1 -r /dev/sdc #物理拔出 21. mdadm: hot removed /dev/sdc from /dev/md1 22. [root@localhost ~]# mdadm -D /dev/md1 #查看信息确认已经拔出 23. #省略部分内容 24. [root@localhost ~]# mdadm /dev/md1 -a /dev/sde #添加新盘 25. mdadm: added /dev/sde 26. [root@localhost ~]# umount /dev/md1 #卸载 27. [root@localhost ~]# mdadm -S /dev/md1 #关闭md1 28. mdadm: stopped /dev/md1 29. [root@localhost ~]# mdadm -A /dev/md1 #重启md1,结果会报错 30. mdadm: /dev/md1 not identified in config file. 31. [root@localhost ~]# mdadm -AR /dev/md1 /dev/sde #从新声明md1磁盘成员 32. mdadm: /dev/md1 has been started with 1 drive (out of 2). 33. [root@localhost ~]# mdadm /dev/md1 -a /dev/sdc #添加损坏盘 34. mdadm: added /dev/sdc 35. [root@localhost ~]# mdadm /dev/md1 -a /dev/sdf #添加冗余盘 36. mdadm: added /dev/sdf 37. [root@localhost ~]# mdadm -S /dev/md1 #关闭 38. mdadm: stopped /dev/md1 39. [root@localhost ~]# mdadm -A /dev/md1 #启动 40. mdadm: /dev/md1 has been started with 2 drives and 1 spare. 41. 42. umount /dev/md1 #卸载 43. mdadm -S /dev/md1 #关闭md1 44. mdadm -A /dev/md1 #重启md1,报错(损坏盘) 45. 46. mdadm -AR /dev/md1 /dev/sdb{3,4} #从新声明md1磁盘成员 47. mdadm /dev/md1 -a /dev/sdb4 #添加损坏盘 48. mdadm /dev/md1 -a /dev/sdb5 #添加冗余盘 49. 50. mdadm -D --scan > /etc/mdadm.conf #扫描并添加raid信息到自启文件 51. mdadm -S /dev/md1 #重启测试 52. mdadm -A /dev/md1
(4) 创建raid5
raid1创建命令与之相同,不过多叙述,创建命令如下
mdadm -Cv /dev/md5 -a yes -n 3 -l 5 -x 2 /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg
(5) 创建raid10
raid1创建命令与之相同,不过多叙述,创建命令如下
mdadm -Cv /dev/md10 -a yes -n 4 -l 10 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf