使用ROS一键创建,分区,格式化和挂载数据盘

对于每一个应用来说都有存储数据的需求,阿里云ECS针对不同的用户需求提供了三种类型的数据云盘,普通云盘,高效云盘和SSD云盘。通过ECS控制台可以为每个实例创建最多4块空数据盘或者根据已有数据盘的snapshot产生4块含有数据的云盘。但是根据上面的方式产生的数据云盘,不能直接使用,需用户登录ECS实例手动配置。对于空数据盘,用户登录ECS的实例手动分区,格式化,挂载;对于通过snapshot产生的数据盘,用户必须自己手动mount。这对于用户部署使用多台ECS实例,是一个繁重的体力活而且容易出错。

本文将为大家提供一个基于资源编排一键创建数据盘并通过UserData自动分区,格式化,化挂载数据盘的便捷方法。

创建数据盘

创建数据盘有两种方式:

  1. 作为ECS实例的属性

    DiskMappings

    DiskMappings是一个列表类型的属性,列表的每一个项就代表一个数据盘的定义,用户可以指定数据盘名称,大小,类型,以及源snapshotId。

  2. 作为stack的资源,再把disk资源关联到对应的ECS

    ALIYUN::ECS::Disk

    在模版指定这样的资源就说明需要创建一块数据盘,用户指定数据盘名称,大小,域,源snapshotId等等

    ALIYUN::ECS::DiskAttachment

    指定哪一块数据盘要和关联到哪一个ECS实例。必须指定的属性包括ALIYUN::ECS::Disk的Id和ECS实例的Id

不管是上面那种方式创建带有源数据的云盘,源数据盘snapshot必须和将要创建的数据盘在同一个域。

利用UserData处理数据盘

ROS给用户提供了UserData机制,这样用户就可以在创建ECS的时候,通过指定UserData脚本给ECS在第一次启动的时候做一些配置和初始化的工作。用户可以根据自己的需要自由的编写UserData脚本。下面我将提供两个简单的例子说明到底如何利用ROS和UserData机制实现一键创建数据盘并自动分区,格式化和mount。

UserData脚处理空数据盘

这个例子创建一个ECS实例,并给实例创建2个空数据盘,让实例处于阿里云的专有网络,并且给这个实例分配弹性IP以便后续访问。我们使用的是DiskMappings实例属性来说明ROS怎么创建数据盘,这个例子中定义了数据盘的名称,大小。给UserData指定了一个简单的脚本,脚本中首先是通过fdisk命令分区数据盘,然后以ext4方式格式化数据盘,最后挂载数据盘,最后配置/etc/fstab保证每次启动ECS都能正确挂载数据盘。在这个例子中用户可以通过TotalDataDisk说明有多少块数据盘,MountPoint指定数据盘的挂载点。我也通过指定ROS的WaitCondition资源来得到UserData脚本的执行结果。WaitCondition的使用可以参考这里。下面是最终模版:

{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Parameters": {
    "VpcName": {
      "MaxLength": 128,
      "Description": "VPC 名称",
      "Type": "String",
      "ConstraintDescription": "[2, 128] 英文或中文字符",
      "MinLength": 2
    },
    "SecurityGroupName": {
      "Description": "安全组名称",
      "Type": "String"
    },
    "VpcCidrBlock": {
      "Default": "10.0.0.0/8",
      "AllowedValues": [
        "192.168.0.0/16",
        "172.16.0.0/12",
        "10.0.0.0/8"
      ],
      "Type": "String"
    },
    "Password": {
      "NoEcho": true,
      "MaxLength": 30,
      "Description": "ECS登录密码.",
      "Type": "String",
      "ConstraintDescription": "8-30个字符,可以包含大、小写字母和特殊字符",
      "MinLength": 8
    },
    "DiskSize": {
      "Default": 40,
      "Type": "Number"
    },
    "TotalDataDisk": {
      "Description": "实例挂在数据盘的数量",
      "Type": "String"
    },
    "ZoneId": {
      "Description": "可用区 Id,  <a href='#/product/cn-shenzhen/list/zoneList' target='_blank'>查看可用区</a>",
      "Type": "String"
    },
    "DiskName": {
      "Type": "String"
    },
    "SystemDiskCategory": {
      "Default": "cloud",
      "AllowedValues": [
        "cloud",
        "cloud_efficiency",
        "cloud_ssd"
      ],
      "Description": "系统盘的磁盘种类, 普通云盘(cloud)、高效云盘(cloud_efficiency)或SSD云盘(cloud_ssd)",
      "Type": "String"
    },
    "MountPoint": {
      "Description": "数据盘的挂在点",
      "Type": "String"
    },
    "DestinationCidrBlock": {
      "Default": "192.168.1.0",
      "Description": "Route的目标网段,例如192.168.1.0/24或192.168.1.0",
      "Type": "String"
    },
    "VSwitchCidrBlock": {
      "Default": "10.0.10.0/24",
      "Description": "VSwitch网段,此网段必须属于VPC",
      "Type": "String"
    }
  },
  "Resources": {
    "VSwitch": {
      "Type": "ALIYUN::ECS::VSwitch",
      "Properties": {
        "CidrBlock": {
          "Ref": "VSwitchCidrBlock"
        },
        "ZoneId": {
          "Ref": "ZoneId"
        },
        "VpcId": {
          "Fn::GetAtt": [
            "Vpc",
            "VpcId"
          ]
        }
      }
    },
    "Vpc": {
      "Type": "ALIYUN::ECS::VPC",
      "Properties": {
        "CidrBlock": {
          "Ref": "VpcCidrBlock"
        },
        "VpcName": {
          "Ref": "VpcName"
        }
      }
    },
    "WaitCondition": {
      "Type": "ALIYUN::ROS::WaitCondition",
      "Properties": {
        "Handle": {
          "Ref": "WaitConHandle"
        },
        "Timeout": 200,
        "Count": 1
      }
    },
    "SecurityGroup": {
      "Type": "ALIYUN::ECS::SecurityGroup",
      "Properties": {
        "SecurityGroupName": {
          "Ref": "SecurityGroupName"
        },
        "VpcId": {
          "Ref": "Vpc"
        }
      }
    },
    "NewEip": {
      "Type": "ALIYUN::ECS::EIP",
      "Properties": {
        "InternetChargeType": "PayByTraffic",
        "Bandwidth": 1
      }
    },
    "SecurityGroupIngress": {
      "Type": "ALIYUN::ECS::SecurityGroupIngress",
      "Properties": {
        "SourceCidrIp": "0.0.0.0/0",
        "SecurityGroupId": {
          "Ref": "SecurityGroup"
        },
        "IpProtocol": "all",
        "NicType": "intranet",
        "PortRange": "-1/-1"
      }
    },
    "WebServer": {
      "Type": "ALIYUN::ECS::Instance",
      "Properties": {
        "IoOptimized": "optimized",
        "ImageId": "centos6u5_64_40G_cloudinit_20160427.raw",
        "SecurityGroupId": {
          "Ref": "SecurityGroup"
        },
        "Password": {
          "Ref": "Password"
        },
        "DiskMappings": [
          {
            "DiskName": {
              "Ref": "DiskName"
            },
            "Size": {
              "Ref": "DiskSize"
            }
          },
          {
            "Size": {
              "Ref": "DiskSize"
            }
          }
        ],
        "SystemDiskCategory": {
          "Ref": "SystemDiskCategory"
        },
        "UserData": {
          "Fn::Join": [
            "",
            [
              "#!/bin/sh\n",
              "logs=~/mount_logs\n",
              "i=1\n",
              "total=",
              {
                "Ref": "TotalDataDisk"
              },
              "\n",
              "mountpoint=",
              {
                "Ref": "MountPoint"
              },
              "\n",
              "while [ $i -le $total ]\n",
              "do\n",
              "    j=`echo $i|awk '{printf \"%c\", 97+$i}'`\n",
              "fdisk -S 56 /dev/vd$j <<ESXU\n",
              "n\n",
              "p\n",
              "1\n",
              "\n",
              "\n",
              "w\n",
              "ESXU\n",
              "    echo \"/dev/vd$j is fdisked!\" >> $logs\n",
              "    mkfs.ext4 /dev/vd${j}1\n",
              "    if [ $? -eq 0 ];then\n",
              "        echo \"/dev/vd${j}1 is formated!\" >> $logs\n",
              "    fi\n",
              "    touch ~/test_ftab\n",
              "    mkdir $mountpoint$i\n",
              "cat << ESXU > ~/test_ftab\n",
              "/dev/vd${j}1         $mountpoint$i       ext4       defaults        0 0\n",
              "ESXU\n",
              "    cat ~/test_ftab >> /etc/fstab\n",
              "    mount -a\n",
              "    chmod -R 777 $mountpoint$i\n",
              "    rm -rf ~/test_ftab\n",
              "    echo \"/dev/vd${j}1 is mounted!\" >> $logs\n",
              "    let i+=1\n",
              "done\n",
              "\n",
              {
                "Fn::GetAtt": [
                  "WaitConHandle",
                  "CurlCli"
                ]
              },
              " -d '{\"id\" : \"webserver\", \"data\" : \"mount disk\"}'\n"
            ]
          ]
        },
        "VSwitchId": {
          "Ref": "VSwitch"
        },
        "VpcId": {
          "Ref": "Vpc"
        },
        "InstanceType": "ecs.n1.small"
      }
    },
    "WaitConHandle": {
      "Type": "ALIYUN::ROS::WaitConditionHandle"
    },
    "EIPBind": {
      "Type": "ALIYUN::ECS::EIPAssociation",
      "Properties": {
        "InstanceId": {
          "Ref": "WebServer"
        },
        "AllocationId": {
          "Ref": "NewEip"
        }
      }
    },
    "SecurityGroupEgress": {
      "Type": "ALIYUN::ECS::SecurityGroupEgress",
      "Properties": {
        "SecurityGroupId": {
          "Ref": "SecurityGroup"
        },
        "IpProtocol": "all",
        "DestCidrIp": "0.0.0.0/0",
        "NicType": "intranet",
        "PortRange": "-1/-1"
      }
    }
  },
  "Outputs": {
    "Data": {
      "Value": {
        "Fn::GetAtt": [
          "WaitCondition",
          "Data"
        ]
      }
    },
    "PublicIp": {
      "Value": {
        "Fn::GetAtt": [
          "WebServer",
          "PublicIp"
        ]
      }
    },
    "InstanceId": {
      "Value": {
        "Fn::GetAtt": [
          "WebServer",
          "InstanceId"
        ]
      }
    },
    "CurlCli": {
      "Value": {
        "Fn::GetAtt": [
          "WaitConHandle",
          "CurlCli"
        ]
      }
    }
  }
}

UserData脚本处理带有源数据的数据盘

这个例子是根据源数据的snapshot创建数据盘,其它的都和上面的例子类似。这时候新的ECS实例的数据盘是已经分好区和格式化过的,我们只需要挂载数据盘到合适的挂载点就行。通过TotalDataDisk说明有多少块数据盘,MountPoint指定数据盘的挂载点,使用ROS的WaitCondition资源来得到UserData脚本的执行结果。下面是最终模版:

{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Parameters": {
    "VpcName": {
      "MaxLength": 128,
      "Description": "VPC 名称",
      "Type": "String",
      "ConstraintDescription": "[2, 128] 英文或中文字符",
      "MinLength": 2
    },
    "DataDisk2SnapshotId": {
      "Description": "根据此快照创建数据盘2",
      "Type": "String"
    },
    "Password": {
      "NoEcho": true,
      "MaxLength": 30,
      "Description": "ECS登录密码.",
      "Type": "String",
      "ConstraintDescription": "8-30个字符,可以包含大、小写字母和特殊字符",
      "MinLength": 8
    },
    "DiskName": {
      "Type": "String"
    },
    "ZoneId": {
      "Description": "可用区 Id,  <a href='#/product/cn-shenzhen/list/zoneList' target='_blank'>查看可用区</a>",
      "Type": "String"
    },
    "DestinationCidrBlock": {
      "Default": "192.168.1.0",
      "Description": "Route的目标网段,例如192.168.1.0/24或192.168.1.0",
      "Type": "String"
    },
    "MountPoint": {
      "Description": "数据盘的挂在点",
      "Type": "String"
    },
    "VSwitchCidrBlock": {
      "Default": "10.0.10.0/24",
      "Description": "VSwitch网段,此网段必须属于VPC",
      "Type": "String"
    },
    "DataDisk1SnapshotId": {
      "Description": "根据此快照创建数据盘1",
      "Type": "String"
    },
    "SecurityGroupName": {
      "Description": "安全组名称",
      "Type": "String"
    },
    "VpcCidrBlock": {
      "Default": "10.0.0.0/8",
      "AllowedValues": [
        "192.168.0.0/16",
        "172.16.0.0/12",
        "10.0.0.0/8"
      ],
      "Type": "String"
    },
    "DiskSize": {
      "Default": 40,
      "Type": "Number"
    },
    "TotalDataDisk": {
      "Description": "实例挂在数据盘的数量",
      "Type": "String"
    },
    "SystemDiskCategory": {
      "Default": "cloud",
      "AllowedValues": [
        "cloud",
        "cloud_efficiency",
        "cloud_ssd"
      ],
      "Description": "系统盘的磁盘种类, 普通云盘(cloud)、高效云盘(cloud_efficiency)或SSD云盘(cloud_ssd)",
      "Type": "String"
    }
  },
  "Resources": {
    "VSwitch": {
      "Type": "ALIYUN::ECS::VSwitch",
      "Properties": {
        "CidrBlock": {
          "Ref": "VSwitchCidrBlock"
        },
        "ZoneId": {
          "Ref": "ZoneId"
        },
        "VpcId": {
          "Fn::GetAtt": [
            "Vpc",
            "VpcId"
          ]
        }
      }
    },
    "Vpc": {
      "Type": "ALIYUN::ECS::VPC",
      "Properties": {
        "CidrBlock": {
          "Ref": "VpcCidrBlock"
        },
        "VpcName": {
          "Ref": "VpcName"
        }
      }
    },
    "WaitCondition": {
      "Type": "ALIYUN::ROS::WaitCondition",
      "Properties": {
        "Handle": {
          "Ref": "WaitConHandle"
        },
        "Timeout": 200,
        "Count": 1
      }
    },
    "SecurityGroup": {
      "Type": "ALIYUN::ECS::SecurityGroup",
      "Properties": {
        "SecurityGroupName": {
          "Ref": "SecurityGroupName"
        },
        "VpcId": {
          "Ref": "Vpc"
        }
      }
    },
    "NewEip": {
      "Type": "ALIYUN::ECS::EIP",
      "Properties": {
        "InternetChargeType": "PayByTraffic",
        "Bandwidth": 1
      }
    },
    "SecurityGroupIngress": {
      "Type": "ALIYUN::ECS::SecurityGroupIngress",
      "Properties": {
        "SourceCidrIp": "0.0.0.0/0",
        "SecurityGroupId": {
          "Ref": "SecurityGroup"
        },
        "IpProtocol": "all",
        "NicType": "intranet",
        "PortRange": "-1/-1"
      }
    },
    "WebServer": {
      "Type": "ALIYUN::ECS::Instance",
      "Properties": {
        "IoOptimized": "optimized",
        "ImageId": "centos6u5_64_40G_cloudinit_20160427.raw",
        "SecurityGroupId": {
          "Ref": "SecurityGroup"
        },
        "Password": {
          "Ref": "Password"
        },
        "DiskMappings": [
          {
            "SnapshotId": {
              "Ref": "DataDisk1SnapshotId"
            },
            "DiskName": {
              "Ref": "DiskName"
            },
            "Size": {
              "Ref": "DiskSize"
            }
          },
          {
            "SnapshotId": {
              "Ref": "DataDisk2SnapshotId"
            },
            "Size": {
              "Ref": "DiskSize"
            }
          }
        ],
        "SystemDiskCategory": {
          "Ref": "SystemDiskCategory"
        },
        "UserData": {
          "Fn::Join": [
            "",
            [
              "#!/bin/sh\n",
              "logs=~/mount_logs\n",
              "i=1\n",
              "total=",
              {
                "Ref": "TotalDataDisk"
              },
              "\n",
              "mountpoint=",
              {
                "Ref": "MountPoint"
              },
              "\n",
              "while [ $i -le $total ]\n",
              "do\n",
              "    j=`echo $i|awk '{printf \"%c\", 97+$i}'`\n",
              "    touch ~/test_ftab\n",
              "    mkdir $mountpoint$i\n",
              "cat << ESXU > ~/test_ftab\n",
              "/dev/vd${j}1         $mountpoint$i       ext4       defaults        0 0\n",
              "ESXU\n",
              "    cat ~/test_ftab >> /etc/fstab\n",
              "    mount -a\n",
              "    chmod -R 777 $mountpoint$i\n",
              "    rm -rf ~/test_ftab\n",
              "    echo \"/dev/vd${j}1 is mounted!\" >> $logs\n",
              "    let i+=1\n",
              "done\n",
              "\n",
              {
                "Fn::GetAtt": [
                  "WaitConHandle",
                  "CurlCli"
                ]
              },
              " -d '{\"id\" : \"webserver\", \"data\" : \"mount disk\"}'\n"
            ]
          ]
        },
        "VSwitchId": {
          "Ref": "VSwitch"
        },
        "VpcId": {
          "Ref": "Vpc"
        },
        "InstanceType": "ecs.n1.small"
      }
    },
    "WaitConHandle": {
      "Type": "ALIYUN::ROS::WaitConditionHandle"
    },
    "EIPBind": {
      "Type": "ALIYUN::ECS::EIPAssociation",
      "Properties": {
        "InstanceId": {
          "Ref": "WebServer"
        },
        "AllocationId": {
          "Ref": "NewEip"
        }
      }
    },
    "SecurityGroupEgress": {
      "Type": "ALIYUN::ECS::SecurityGroupEgress",
      "Properties": {
        "SecurityGroupId": {
          "Ref": "SecurityGroup"
        },
        "IpProtocol": "all",
        "DestCidrIp": "0.0.0.0/0",
        "NicType": "intranet",
        "PortRange": "-1/-1"
      }
    }
  },
  "Outputs": {
    "Data": {
      "Value": {
        "Fn::GetAtt": [
          "WaitCondition",
          "Data"
        ]
      }
    },
    "PublicIp": {
      "Value": {
        "Fn::GetAtt": [
          "WebServer",
          "PublicIp"
        ]
      }
    },
    "InstanceId": {
      "Value": {
        "Fn::GetAtt": [
          "WebServer",
          "InstanceId"
        ]
      }
    },
    "CurlCli": {
      "Value": {
        "Fn::GetAtt": [
          "WaitConHandle",
          "CurlCli"
        ]
      }
    }
  }
}

注意

我们注意到以上两个例子都是使用DiskMappings属性,而不是使用ROS栈资源的方式创建数据盘,这是因为DiskMappings是ECS资源的属性,所以在创建启动ECS的时候,数据盘已经创建好了,并且和ECS实例做了关联。那么执行UserData就能完成分区,格式化和挂载。但是如果以ROS stack资源的方式创建数据盘,首先是创建ECS资源和Disk资源,最后才关联disk和ECS实例。那么当ECS实例启动的时候,数据盘还没有真正关联到相应的ECS,所以这种情况下执行UserData脚本就会找不到数据盘,分区,格式化,挂载也就无从谈起。如果大家要使用数据盘并想通过UserData自动挂载数据盘,则建议使用DiskMappings这中方式创建数据盘。

时间: 2024-10-03 15:54:15

使用ROS一键创建,分区,格式化和挂载数据盘的相关文章

为ROS创建的资源自动挂载数据盘

为ROS创建的资源自动挂载数据盘 通过ROS可以方便创建,管理资源.例如自动挂载数据盘,如果是通过阿里云的官方镜像,使用ROS创建ECS资源,UserData可以很容易的帮你完成这一步,详细内容可以参考这篇文章:但是如果你使用自己制作的镜像,而且自己制作的镜像不支持UserData功能怎么办呢,这篇文章帮你解决你的问题. 要完成自有镜像自动挂载数据盘,只需要三步: 1.制作镜像前,把下面的这个脚本拷贝到你将要制作镜像的ECS机器上,例如:/usr/local/bin/mount_disks下面.

阿里云部署Linux如何格式化和挂载数据盘

步骤 4:格式化和挂载数据盘 如果您在创建实例时选择了数据盘,在登录实例后,系统需要先格式化数据盘,然后挂载数据盘. 另外,您还可以根据业务需要,对数据盘进行多分区配置.建议使用系统自带的工具进行分区操作. 注意 :云服务器 ECS 仅支持对 数据盘 进行二次分区,而不支持对 系统盘 进行二次分区(不管是 Windows 还是 Linux 系统).如果您强行使用第三方工具对系统盘进行二次分区操作,可能引发未知风险,如系统崩溃.数据丢失等. 本操作适用于 非 I/O 优化+SSD云盘 Linux

云服务器 ECS 快速入门:Linux 格式化和挂载数据盘

Linux 格式化和挂载数据盘 如果您已经为 ECS 实例配了数据盘,您需要先格式化数据盘并挂载文件系统后才能正常使用数据盘. 注意: 磁盘分区和格式化是高风险行为,请慎重操作.本文档描述如何处理一个新买的数据盘,如果您的数据盘上有数据,请务必对数据盘创建快照以避免可能的数据丢失. 云服务器 ECS 仅支持对 数据盘 进行分区,而不支持对 系统盘 进行分区.如果您强行使用第三方工具对系统盘进行分区操作,可能引发未知风险,如系统崩溃.数据丢失等. 本文描述如何用一个新的数据盘创建一个单分区数据盘并

阿里云服务器如何挂载数据盘

阿里云服务器如何挂载数据盘 云服务器 ECS 支持对当作数据盘用的普通云盘.高效云盘及 SSD 云盘进行挂载.您可以选择从实例入口进行挂载,或从磁盘入口进行挂载,两种操作没有区别,您可以选择任意一种方式.下面分别进行介绍. 操作须知 在挂载数据盘之前,请了解以下注意事项: 挂载磁盘时,实例需要满足以下条件: 状态必须为 运行中 (Running) 或者 已停止 (Stopped) 安全控制标识不能为 锁定 (Locked) 不欠费 本地磁盘不能挂载.或卸载. 挂载磁盘时,云盘的状态必须为 待挂载

阿里云 Linux 系统挂载数据盘:适用系统:Linux(Redhat , CentOS,Debian,Ubuntu)

阿里云 Linux 系统挂载数据盘:   适用系统:Linux(Redhat , CentOS,Debian,Ubuntu)   Linux的云服务器数据盘未做分区和格式化,可以根据以下步骤进行分区 Linux 系统挂载数据盘:   适用系统:Linux(Redhat , CentOS,Debian,Ubuntu) *  Linux的云服务器数据盘未做分区和格式化,可以根据以下步骤进行分区以及格式化操作. 下面的操作将会把数据盘划分为一个分区来使用. 1.查看数据盘.在没有分区和格式化数据盘之前

Linux系统挂载数据盘演示与一键挂载数据盘脚本

适用系统:Linux(Redhat , CentOS,Debian,Ubuntu)   *  Linux的服务器数据盘未做分区和格式化,可以根据以下步骤进行分区以及格式化操作.   下面的操作将会把数据盘划分为一个分区来使用.   1.查看数据盘   在没有分区和格式化数据盘之前,使用 "df –h"命令,是无法看到数据盘的,可以使用"fdisk -l"命令查看.如下图:     友情提示:若您执行fdisk -l命令,发现没有 /dev/xvdb 标明您的服务无数

阿里云服务器ECS已有网站挂载数据盘和迁移数据 适合WDCP/AMH等环境

一般情况,我们新购买VPS主机都会以默认的硬盘基准,但是随着网站数据的增加,我们后面会需要升级和添加数据盘配置.比如阿里云服务器ECS默认的系统盘是20GB,基本上初始项目需求还是能够满足大部分用户的,我们或许在之后的项目运营中需要增加挂载硬盘.   因为考虑到阿里云ECS服务器的用户需求在国内还是比较多的,所以老左在上周的时候也真实的购买一台+20GB数据盘,这样在演练教程的时候能够确保真实性.在以前的博文中,有分享过"阿里云服务器ECS数据盘挂载过程"文章,这个是针对新开通服务器没

CentOS将MySQL数据库存放目录放到挂载数据盘的方法

一般我们在购买VPS的时候,都会赠送一个系统盘,一般都是10G到40G之间,当您的网站数据较多的时候,我们就会要考虑购买数据盘,然后将网站数据和MySQL数据库的存放目录放到挂载数据盘上,这样的话,不至于将系统盘充满掉,当然,另外一个好处是,无论您的系统盘出现什么问题,也不会影响到您的数据库和网站数据. 一旦您的系统盘满了,就会导致数据库启动失败. 在Xen架构的主机和腾讯云的主机会出现,据部分朋友反应说,坑爹的腾讯云就是分配8G. linux下CentOS修改MySQL数据存放目录过程 1.博

阿里云怎么解决Linux 实例挂载数据盘报错

Linux 实例挂载数据盘报错 Linux 实例挂载数据盘报错,有以下几种场景. 场景 1: 问题描述: ECS Linux 挂载数据盘到 /mnt 目录,发现 /mnt 目录的数据不见了. 解决办法: Linux 以 mount 方式数据盘时,是以独占目录方式挂载.即:会遮掩原目录数据,显示数据盘当前数据,不会实现数据累加效果. 原目录数据也并未丢失,而是被暂时遮掩.可通过 umount 卸载数据盘后,原目录数据可见. 场景 2: 问题描述: umount 数据盘时无法卸载(挂载到 /mnt