【Linux】服务器硬件及RAID配置实战

目录

一、服务器

1.服务器

2.查看服务器信息

[二、RAID 磁盘阵列](#二、RAID 磁盘阵列)

三、软RAID的创建和使用

[1.添加硬盘,fdisk分区,分区类型ID设置为 fd](#1.添加硬盘,fdisk分区,分区类型ID设置为 fd)

2.使用mdadm创建软raid

3.格式化

4.挂载使用

5.mdadm


一、服务器

1.服务器

|----|----------------------------------|
| 分类 | 机架式居多 塔式 刀片式 机柜式 |
| 架构 | X86 ARM |
| 品牌 | 戴尔 AMD 英特尔 惠普 华为 华三H3C 联想 浪潮 长城 |
| 规格 | 1C1G 2C4G 4C8G 32C128G 64C256G 等 |

2.查看服务器信息

查看服务器CPU信息:cat /proc/cpuinfo lscpu

model name #CPU型号

physical id #物理CPU的ID

cpu cores #每个物理CPU中的核心数

processor #逻辑CPU的ID
查看服务器内存的信息:cat /proc/meminfo free [-m]

二、RAID 磁盘阵列

|--------------|----------------------------|------------|---------|----------------------|
| RAID级别 | 读写性能 | 硬盘数量要求 | 利用率 | 有无冗余能力 |
| RAID0(条带化存储) | 读写速度快 | N | N | 无 |
| RAID1(镜像化存储) | 读快,写没有改变 | 偶数 | N/2 | 有,可允许一个硬盘故障 |
| RAID5 | 读快,写会因为要多写一份纠删码数据而会影响写的性能 | >=3 | (N-1)/N | 有,可允许一个硬盘故障 |
| RAID6 | 读快,写会因为要多写两份纠删码数据而会更影响写的性能 | >=4 | (N-2)/N | 有,可允许两个硬盘故障 |
| RAID10 | 同时具备RAID0和RAID1的性能,读写都快 | >=4,偶数 | N/2 | 有,可允许不同RAID1组中各坏一个硬盘 |

RAID 0(条带化存储)

●RAID 0连续以位或字节为单位分割数据,并行读/写于多个磁盘上,因此具有很高的数据传输率,但它没有数据冗余

●RAID 0只是单纯地提高性能,并没有为数据的可靠性提供保证,而且其中的一个磁盘失效将影响到所有数据

●RAID 0不能应用于数据安全性要求高的场合

RAID 1(镜像存储)

●通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据

●当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID 1可以提高读取性能

●RAID 1是磁盘阵列中单位成本最高的,但提供了很高的数据安全性和可用性。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据

RAID 5

●N(N>=3)块盘组成阵列,一份数据产生N-1个条带,同时还有1份校验数据,共N份数据在N块盘上循环均衡存储

●N块盘同时读写,读性能很高,但由于有校验机制的问题,写性能相对不高

●(N-1)/N磁盘利用率

●可靠性高,允许坏1块盘,不影响所有数据

RAID 6

●N(N>=4)块盘组成阵列(N-2)/N磁盘利用率

●与RAID 5相比,RAID 6增加了第二个独立的奇偶校验信息块

●两个独立的奇偶系统使用不同的算法,即使两块磁盘同时失效也不会影响数据的使用

●相对于RAID 5有更大的"写损失",因此写性能较差

RAID 1+0(先做镜象,再做条带)

●N(偶数,N>=4)块盘两两镜像后,再组合成一个RAID0

●N/2磁盘利用率

●N/2块盘同时写入,N块盘同时读取

●性能高,可靠性高

三、软RAID的创建和使用

1.添加硬盘,fdisk分区,分区类型ID设置为 fd

[root@bogon ~]# yum install -y mdadm
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
软件包 mdadm-4.1-9.el7_9.x86_64 已安装并且是最新版本
无须任何处理
[root@bogon ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0xe7a9083e 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p):
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB

命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):fd
已将分区"Linux"的类型更改为"Linux raid autodetect"

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@bogon ~]#


[root@bogon ~]# fdisk -l        #查看是否创建好分区

磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0009f560

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    83886079    40893440   8e  Linux LVM

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xe7a9083e

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    41943039    20970496   fd  Linux raid autodetect

磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xdff5b102

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048    41943039    20970496   fd  Linux raid autodetect

磁盘 /dev/sdd:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x2205b8c4

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdd1            2048    41943039    20970496   fd  Linux raid autodetect

磁盘 /dev/sde:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x19fb02af

   设备 Boot      Start         End      Blocks   Id  System
/dev/sde1            2048    41943039    20970496   fd  Linux raid autodetect

磁盘 /dev/mapper/centos-root:37.7 GB, 37706792960 字节,73646080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/mapper/centos-swap:4160 MB, 4160749568 字节,8126464 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

[root@bogon ~]#

2.使用mdadm创建软raid

创建raid5: mdadm -Cv /dev/mdX -l5 -n3 /dev/sdXX [-x1 /dev/sdXX]

创建过程中需要一段时间,可以使用watch -n 5 'cat /proc/mdstat'进行查看

[root@bogon ~]# mdadm -C -v /dev/md5 -l5 -n3 /dev/sd[bcd]1 -x1 /dev/sde1        #-C新建raid,-v表示显示详细信息,指定md5的名称,-l5表示raid5,-n3表示使用3块硬盘,-x1表示使用1块硬盘做热备份,是sde1
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 20953088K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.

[root@bogon ~]# cat /proc/mdstat        #查看
Personalities : [raid6] [raid5] [raid4]
md5 : active raid5 sdd1[4] sde1[3](S) sdc1[1] sdb1[0]
      41906176 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]

unused devices: <none>
[root@bogon ~]#

补充:创建raid10:(先做镜像,再做条带) mdadm -Cv /dev/md0 -l1 -n2 /dev/sdXX

mdadm -Cv /dev/md1 -l1 -n2 /dev/sdXX

mdadm -Cv /dev/md10 -l0 -n2 /dev/md0 /dev/md1

3.格式化

mkfs -t xfs/ext4 /dev/mdX

[root@bogon ~]# mkfs -t xfs /dev/md5
meta-data=/dev/md5               isize=512    agcount=16, agsize=654720 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=10475520, imaxpct=25
         =                       sunit=128    swidth=256 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=5120, version=2
         =                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@bogon ~]#
[root@bogon ~]# mkdir /opt/xy101
[root@bogon ~]# ls /opt
rh  xy101
[root@bogon ~]#

4.挂载使用

mount /etc/fstab

[root@bogon ~]# mount /dev/md5 /opt/xy101
[root@bogon ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   13M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        36G  4.7G   31G   14% /
/dev/sda1               xfs      1014M  187M  828M   19% /boot
tmpfs                   tmpfs     378M   12K  378M    1% /run/user/42
tmpfs                   tmpfs     378M     0  378M    0% /run/user/0
/dev/md5                xfs        40G   33M   40G    1% /opt/xy101
[root@bogon ~]#

5.mdadm

查看软raid的状态信息 cat /proc/mdstat mdadm -D /dev/mdX

mdadm的其它选项

|-----|----------------------------------|
| -f | 模拟指定磁盘设备故障 |
| -r | 移除磁盘设备 |
| -a | 添加磁盘设备 |
| -S | 停止软raid |
| -As | 启动软raid,事先准备好 /etc/mdadm.conf 配置 |

创建配置文件,生成一些详细信息,追加到/etc/mdadm.conf中,包含raid5的配置文件信息,方便后面进行启动和停止的管理

[root@bogon ~]# echo 'DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1' > /etc/mdadm.conf
[root@bogon ~]# mdadm --detail --scan >> /etc/mdadm.conf
[root@bogon ~]# cat /etc/mdadm.conf
DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
ARRAY /dev/md5 metadata=1.2 spares=1 name=bogon:5 UUID=930d2b47:f89bb6be:1f7862a2:c2c933a0
[root@bogon ~]#

当一块硬盘发生故障,另一块热备份硬盘会取代故障硬盘,恢复数据

[root@bogon ~]# cd /opt/xy101
[root@bogon xy101]# touch file{1..100}
[root@bogon xy101]# mkdir dir{101..200}
[root@bogon xy101]# ls
dir101  dir112  dir123  dir134  dir145  dir156  dir167  dir178  dir189  dir200   file18  file28  file38  file48  file58  file68  file78  file88  file98
dir102  dir113  dir124  dir135  dir146  dir157  dir168  dir179  dir190  file1    file19  file29  file39  file49  file59  file69  file79  file89  file99
dir103  dir114  dir125  dir136  dir147  dir158  dir169  dir180  dir191  file10   file2   file3   file4   file5   file6   file7   file8   file9
dir104  dir115  dir126  dir137  dir148  dir159  dir170  dir181  dir192  file100  file20  file30  file40  file50  file60  file70  file80  file90
dir105  dir116  dir127  dir138  dir149  dir160  dir171  dir182  dir193  file11   file21  file31  file41  file51  file61  file71  file81  file91
dir106  dir117  dir128  dir139  dir150  dir161  dir172  dir183  dir194  file12   file22  file32  file42  file52  file62  file72  file82  file92
dir107  dir118  dir129  dir140  dir151  dir162  dir173  dir184  dir195  file13   file23  file33  file43  file53  file63  file73  file83  file93
dir108  dir119  dir130  dir141  dir152  dir163  dir174  dir185  dir196  file14   file24  file34  file44  file54  file64  file74  file84  file94
dir109  dir120  dir131  dir142  dir153  dir164  dir175  dir186  dir197  file15   file25  file35  file45  file55  file65  file75  file85  file95
dir110  dir121  dir132  dir143  dir154  dir165  dir176  dir187  dir198  file16   file26  file36  file46  file56  file66  file76  file86  file96
dir111  dir122  dir133  dir144  dir155  dir166  dir177  dir188  dir199  file17   file27  file37  file47  file57  file67  file77  file87  file97

[root@bogon xy101]# mdadm /dev/md5 -f /dev/sdc1        #停止sdc1
mdadm: set /dev/sdc1 faulty in /dev/md5
[root@bogon xy101]# mdadm -D /dev/md5        #查看硬盘状态,sde1会取代sdc1
/dev/md5:
           Version : 1.2
     Creation Time : Tue Apr 16 21:49:39 2024
        Raid Level : raid5
        Array Size : 41906176 (39.96 GiB 42.91 GB)
     Used Dev Size : 20953088 (19.98 GiB 21.46 GB)
      Raid Devices : 3
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Tue Apr 16 22:11:06 2024
             State : clean, degraded, recovering
    Active Devices : 2
   Working Devices : 3
    Failed Devices : 1
     Spare Devices : 1

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

    Rebuild Status : 22% complete

              Name : bogon:5  (local to host bogon)
              UUID : 930d2b47:f89bb6be:1f7862a2:c2c933a0
            Events : 25

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       3       8       65        1      spare rebuilding   /dev/sde1
       4       8       49        2      active sync   /dev/sdd1

       1       8       33        -      faulty   /dev/sdc1
[root@bogon xy101]#


[root@bogon xy101]# cat /proc/mdstat        #查看取代的过程,有进度条,需要等待一会
Personalities : [raid6] [raid5] [raid4]
md5 : active raid5 sdd1[4] sde1[3] sdc1[1](F) sdb1[0]
      41906176 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [U_U]
      [=============>.......]  recovery = 69.6% (14600576/20953088) finish=0.5min speed=205888K/sec

unused devices: <none>
[root@bogon xy101]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md5 : active raid5 sdd1[4] sde1[3] sdc1[1](F) sdb1[0]
      41906176 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]

unused devices: <none>
[root@bogon xy101]# mdadm -D /dev/md5
/dev/md5:
           Version : 1.2
     Creation Time : Tue Apr 16 21:49:39 2024
        Raid Level : raid5
        Array Size : 41906176 (39.96 GiB 42.91 GB)
     Used Dev Size : 20953088 (19.98 GiB 21.46 GB)
      Raid Devices : 3
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Tue Apr 16 22:12:32 2024
             State : clean
    Active Devices : 3
   Working Devices : 3
    Failed Devices : 1
     Spare Devices : 0

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

              Name : bogon:5  (local to host bogon)
              UUID : 930d2b47:f89bb6be:1f7862a2:c2c933a0
            Events : 43

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       3       8       65        1      active sync   /dev/sde1
       4       8       49        2      active sync   /dev/sdd1

       1       8       33        -      faulty   /dev/sdc1

[root@bogon xy101]# cd /opt/xy101        #查看sde1取代sdc1之后,xy101里文件是否丢失
[root@bogon xy101]# ls
dir101  dir112  dir123  dir134  dir145  dir156  dir167  dir178  dir189  dir200   file18  file28  file38  file48  file58  file68  file78  file88  file98
dir102  dir113  dir124  dir135  dir146  dir157  dir168  dir179  dir190  file1    file19  file29  file39  file49  file59  file69  file79  file89  file99
dir103  dir114  dir125  dir136  dir147  dir158  dir169  dir180  dir191  file10   file2   file3   file4   file5   file6   file7   file8   file9
dir104  dir115  dir126  dir137  dir148  dir159  dir170  dir181  dir192  file100  file20  file30  file40  file50  file60  file70  file80  file90
dir105  dir116  dir127  dir138  dir149  dir160  dir171  dir182  dir193  file11   file21  file31  file41  file51  file61  file71  file81  file91
dir106  dir117  dir128  dir139  dir150  dir161  dir172  dir183  dir194  file12   file22  file32  file42  file52  file62  file72  file82  file92
dir107  dir118  dir129  dir140  dir151  dir162  dir173  dir184  dir195  file13   file23  file33  file43  file53  file63  file73  file83  file93
dir108  dir119  dir130  dir141  dir152  dir163  dir174  dir185  dir196  file14   file24  file34  file44  file54  file64  file74  file84  file94
dir109  dir120  dir131  dir142  dir153  dir164  dir175  dir186  dir197  file15   file25  file35  file45  file55  file65  file75  file85  file95
dir110  dir121  dir132  dir143  dir154  dir165  dir176  dir187  dir198  file16   file26  file36  file46  file56  file66  file76  file86  file96
dir111  dir122  dir133  dir144  dir155  dir166  dir177  dir188  dir199  file17   file27  file37  file47  file57  file67  file77  file87  file97
[root@bogon xy101]#


[root@bogon opt]# mdadm /dev/md5 -r /dev/sdc1        #移除硬盘
mdadm: hot removed /dev/sdc1 from /dev/md5
[root@bogon opt]# mdadm /dev/md5 -a /dev/sdc1        #重新添加新硬盘
mdadm: added /dev/sdc1
[root@bogon opt]# mdadm -D /dev/md5
/dev/md5:
           Version : 1.2
     Creation Time : Tue Apr 16 21:49:39 2024
        Raid Level : raid5
        Array Size : 41906176 (39.96 GiB 42.91 GB)
     Used Dev Size : 20953088 (19.98 GiB 21.46 GB)
      Raid Devices : 3
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Tue Apr 16 22:29:00 2024
             State : clean
    Active Devices : 3
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 1

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

              Name : bogon:5  (local to host bogon)
              UUID : 930d2b47:f89bb6be:1f7862a2:c2c933a0
            Events : 45

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       3       8       65        1      active sync   /dev/sde1
       4       8       49        2      active sync   /dev/sdd1

       5       8       33        -      spare   /dev/sdc1
[root@bogon opt]#

停止和启动RAID(需要保证配置文件存在,且需要解挂载后才能停止)

[root@bogon opt]# ls /etc/mdadm.conf
/etc/mdadm.conf
[root@bogon opt]# cat /etc/mdadm.conf
DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
ARRAY /dev/md5 metadata=1.2 spares=1 name=bogon:5 UUID=930d2b47:f89bb6be:1f7862a2:c2c933a0
[root@bogon opt]# mdadm -S /dev/md5        #需要进行解挂载才能停止RAID
mdadm: Cannot get exclusive access to /dev/md5:Perhaps a running process, mounted filesystem or active volume group?
[root@bogon opt]# df
文件系统                   1K-块    已用     可用 已用% 挂载点
devtmpfs                 1913500       0  1913500    0% /dev
tmpfs                    1930624       0  1930624    0% /dev/shm
tmpfs                    1930624   12564  1918060    1% /run
tmpfs                    1930624       0  1930624    0% /sys/fs/cgroup
/dev/mapper/centos-root 36805060 4848536 31956524   14% /
/dev/sda1                1038336  191284   847052   19% /boot
tmpfs                     386128      12   386116    1% /run/user/42
tmpfs                     386128       0   386128    0% /run/user/0
/dev/md5                41881600   34092 41847508    1% /opt/xy101
[root@bogon opt]# umount /opt/xy101
[root@bogon opt]# df
文件系统                   1K-块    已用     可用 已用% 挂载点
devtmpfs                 1913500       0  1913500    0% /dev
tmpfs                    1930624       0  1930624    0% /dev/shm
tmpfs                    1930624   12564  1918060    1% /run
tmpfs                    1930624       0  1930624    0% /sys/fs/cgroup
/dev/mapper/centos-root 36805060 4848536 31956524   14% /
/dev/sda1                1038336  191284   847052   19% /boot
tmpfs                     386128      12   386116    1% /run/user/42
tmpfs                     386128       0   386128    0% /run/user/0
[root@bogon opt]# mdadm -S /dev/md5        #停止RAID
mdadm: stopped /dev/md5
[root@bogon opt]# ls /etc/md5
ls: 无法访问/etc/md5: 没有那个文件或目录
[root@bogon opt]#



[root@bogon opt]# mdadm -As /dev/md5        #重新启动RAID
mdadm: /dev/md5 has been started with 3 drives and 1 spare.
[root@bogon opt]# ls /dev/md5
/dev/md5
[root@bogon opt]# cat /etc/mdadm.conf
DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
ARRAY /dev/md5 metadata=1.2 spares=1 name=bogon:5 UUID=930d2b47:f89bb6be:1f7862a2:c2c933a0
[root@bogon opt]#
相关推荐
九河云1 小时前
AWS账号注册费用详解:新用户是否需要付费?
服务器·云计算·aws
Lary_Rock1 小时前
RK3576 LINUX RKNN SDK 测试
linux·运维·服务器
幺零九零零2 小时前
【计算机网络】TCP协议面试常考(一)
服务器·tcp/ip·计算机网络
云飞云共享云桌面3 小时前
8位机械工程师如何共享一台图形工作站算力?
linux·服务器·网络
Peter_chq4 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端
一坨阿亮4 小时前
Linux 使用中的问题
linux·运维
dsywws5 小时前
Linux学习笔记之vim入门
linux·笔记·学习
幺零九零零6 小时前
【C++】socket套接字编程
linux·服务器·网络·c++
wclass-zhengge7 小时前
Docker篇(Docker Compose)
运维·docker·容器
李启柱7 小时前
项目开发流程规范文档
运维·软件构建·个人开发·设计规范