一、前言

近期公司需要部署一套完整的openstack ha集群环境,在选择后端存储方案上踏入了十字路口。

经过几个月的搜索整理与研究,发现网上介绍ceph部署没一个完整详细的!于是自己苦战多日整理了一套完整的ceph分布式集群存储系统解决方案。

关于为何最终选择ceph,期间也是各种搜索baidu、google。这里有点感慨;baidu你让我拿什么来爱你?于是FQ势在必行了。

直接正题,干货整理如下:方便日后忘记......

二、补脑

ceph的介绍这里就不在重复了,ceph是加州大学圣克鲁兹分校的Sage weil攻读博士时开发的分布式文件系统。并使用ceph完成了他的论文。ceph最早诞生于2004年,经过多年完善与修复,第一个稳定ceph版本发布于2012年。感兴趣的可以去看他的介绍 https://en.wikipedia.org/wiki/Sage_Weil

三、选择

根据业务特性选择Ceph 、 glusterFS 、Swift 三款系统来比较,选择是一件很痛苦的事情!

1. Ceph:

1、支持POSIX接口
2、开源
3、文件被分片,每个数据块是一块对象,对象保存子不同的存储服务器上。
4、冗余保护多副本
5、由数据的多副本提供高可靠性
6、当节点故障时,自动迁移数据,重现复制副本。
7、易扩展

2. glusteFS:

1、开源
2、不存在单点故障
3、支持POSIT接口
4、ClusterTranslators(glusterFS集群存储的核心)包括AFR、DHT(和Stripe三种类型。
5、冗余机制:镜像数据有镜像提供可靠性。
6、当节点、硬件、磁盘、网络发生故障时,系统会自动处理这些故障,管理员不需介入。
7、支持回收站
8、易扩展

3. Swift:

1、开源
2、最终一致性
3、支持POSIT接口
4、当一个集群硬件环境发生故障时,Swift会回退以提供高利用率的数据访问。
5、稳定
6、Swift是做对象存储最佳选择

结论:根据应用场景需要包含 "块存储需求" 综合选择Ceph比较合适。(如果场景是对象存储选择Swift比较合适)。


四、硬件环境

+-----------+--------------+------+----------+--------+---------------------------+-------------------+--------------+
| Hostname | IP Address | Role | cpu | Memory | System disk | Ceph Storage disk | Journal disk |
+-----------+--------------+------+----------+--------+---------------------------+-------------------+--------------+
| ceph-adm | 192.168.0.59 | adm | 4 cores | 4GB | 2*300GB SAS 15.7k(raid 1) | - | - |
| ceph-mon1 | 192.168.0.60 | mon | 32 cores | 64GB | 2*600GB SAS 15.7k(raid 1) | - | - |
| ceph-mon2 | 192.168.0.61 | mon | 32 cores | 64GB | 2*600GB SAS 15.7k(raid 1) | - | - |
| ceph-mon3 | 192.168.0.62 | mon | 32 cores | 64GB | 2*600GB SAS 15.7k(raid 1) | - | - |
| ceph-osd1 | 192.168.0.63 | osd | 24 cores | 64GB | 2*240GB SSD (raid 1) | 10*4TB SAS | 2*480GB SSD |
| ceph-osd2 | 192.168.0.64 | osd | 24 cores | 64GB | 2*240GB SSD (raid 1) | 10*4TB SAS | 2*480GB SSD |
+-----------+--------------+------+----------+--------+---------------------------+-------------------+--------------+


说明:
Ceph 要求必须是奇数个监控节点,而且最少3个。
adm 服务器2块300GB SAS硬盘做成 RAID1,安装操作系统,用来操作和管理 Ceph;
mon 服务器2块600GB SAS硬盘做成 RAID1,安装操作系统,用来监控 Ceph;
osd 服务器2块240GB SSD硬盘做成 RAID1,安装操作系统.10块4TB硬盘做Ceph存储,每个osd 对应1块硬盘,

每个osd 需要1个Journal,所以10块硬盘需要10个。Journal我们用2块480GB SSD 硬盘做journal,每个SSD等分成5个区,这样每个区分别对应一个 osd 硬盘的 journal。

五、软件环境

operating system:CentOS-7-x86_64-1611

ceph:Jewel版本


六、基本配置(1-6全部节点配置

1. 禁用selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
reboot

2. 时间同步
yum -y install ntp ntpdate vim wget
vim /etc/ntp.conf

server 192.168.0.20 iburst
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst

systemctl stop ntpd
ntpdate 192.168.0.20
hwclock -w
systemctl restart ntpd
ntpq -p

注:192.168.0.20 是本地搭建ntp服务器,后面我会把搭建ntp服务器详细日记呈现出来。

3. 修改hostname
vim /etc/hosts

192.168.0.59 ceph-adm
192.168.0.60 ceph-mon1
192.168.0.61 ceph-mon2
192.168.0.62 ceph-mon3
192.168.0.63 ceph-osd1
192.168.0.64 ceph-osd2

4. 安装配置Firewalld (默认系统没安装firewalld)
yum -y install firewalld firewall-config
systemctl start firewalld
systemctl enable firewalld
firewall-cmd --zone=public --add-port=6789/tcp --permanent
firewall-cmd --zone=public --add-port=6800-7100/tcp --permanent
firewall-cmd --reload
firewall-cmd --zone=public --list-all
5. 准备ceph源
yum clean all
rm -rf /etc/yum.repos.d/*.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
sed -i '/aliyuncs/d' /etc/yum.repos.d/CentOS-Base.repo
sed -i '/aliyuncs/d' /etc/yum.repos.d/epel.repo
sed -i 's/$releasever/7/g' /etc/yum.repos.d/CentOS-Base.repo
vim /etc/yum.repos.d/ceph.repo

[ceph]
name=ceph
baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/x86_64/
gpgcheck=0
[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/noarch/
gpgcheck=0
6. 更新系统
yum update -y
reboot
7. 无密码访问(在ceph-adm上配置)
ssh-keygen
ssh-copy-id root@ceph-mon1
ssh-copy-id root@ceph-mon2
ssh-copy-id root@ceph-mon3
ssh-copy-id root@ceph-osd1
ssh-copy-id root@ceph-osd2

七、配置Ceph集群(在ceph-adm上操作1-6)

1. 安装ceph-deploy
yum -y install ceph-deploy
2. 创建ceph工作目录
mkdir /etc/ceph
cd /etc/ceph
3. 初始化集群,让ceph-deploy判断哪些节点是监控节点。
ceph-deploy new ceph-mon1 ceph-mon2 ceph-mon3
4. 在每一个ceph节点都安装ceph二进制软件包
ceph-deploy install --no-adjust-repos ceph-adm ceph-mon1 ceph-mon2 ceph-mon3 ceph-osd1 ceph-osd2
5. 修改ceph配置文件,在ceph.conf文件下添加 public network = 192.168.0.0/24
cat ceph.conf
[global]
fsid = 1017c790-f1f0-497e-9935-7c726f56396d
mon_initial_members = ceph-mon1,ceph-mon2,ceph-mon3
mon_host = 192.168.0.60,192.168.0.61,192.168.0.62
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
public network = 192.168.0.0/24


6. 创建第一个监控节点
ceph-deploy mon create-initial
7. 在ceph-osd1、cephosd2查看2个osd硬盘信息(模拟实验选择10块SAS 100G的和240GB SAS )
ceph-deploy disk list ceph-osd1 ceph-osd2
lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
fd0 2:0 1 4K 0 disk
sda 8:0 0 300G 0 disk
├─sda1 8:1 0 500M 0 part /boot
├─sda2 8:2 0 100G 0 part /var
├─sda3 8:3 0 16G 0 part [SWAP]
├─sda4 8:4 0 1K 0 part
└─sda5 8:5 0 183.5G 0 part /
sdb 8:16 0 100G 0 disk
sdc 8:32 0 100G 0 disk
sdd 8:48 0 100G 0 disk
sde 8:64 0 100G 0 disk
sdf 8:80 0 100G 0 disk
sdg 8:96 0 100G 0 disk
sdh 8:112 0 100G 0 disk
sdi 8:128 0 100G 0 disk
sdj 8:144 0 100G 0 disk
sdk 8:160 0 100G 0 disk
sdl 8:176 0 240G 0 disk
sdm 8:192 0 240G 0 disk
sr0 11:0 1 1024M 0 rom
8. 在ceph-osd1上创建一个批量创建xfs文件系统脚本(对于存储海量的小文件,或者超大规模的文件,文件大小也偏大的话,我们使用xfs)。
创建脚本名称为 parted.sh
vim parted.sh

#!/bin/bash

set -e
if [ ! -x "/sbin/parted" ]; then
echo "This script requires /sbin/parted to run!" >&2
exit 1
fi

disKS="b c d e f g h i j k"
for i in ${disKS}; do
echo "Creating partitions on /dev/sd${i} ..."
parted -a optimal --script /dev/sd${i} -- mktable gpt
parted -a optimal --script /dev/sd${i} -- mkpart primary xfs 0% 100%
sleep 1
#echo "Formatting /dev/sd${i}1 ..."
mkfs.xfs -f /dev/sd${i}1 &
done

disKS="l m"
for i in ${disKS}; do
parted -s /dev/sd${i} mklabel gpt
parted -s /dev/sd${i} mkpart primary 0% 20%
parted -s /dev/sd${i} mkpart primary 21% 40%
parted -s /dev/sd${i} mkpart primary 41% 60%
parted -s /dev/sd${i} mkpart primary 61% 80%
parted -s /dev/sd${i} mkpart primary 81% 100%
done
9. 在ceph-osd1上把脚本设置为可执行权限 
chmod -R 755 /root/parted.sh
10. 在ceph-osd1上把脚本parted.sh 复制到ceph-osd2上
scp -p /root/parted.sh ceph-osd2:/root/parted.sh
11. 分别在ceph-osd1和ceph-osd2节点执行./parted.sh 
./parted.sh
12. 在ceph-adm节点查看ceph-osd1、ceph-osd2上硬盘是否成功创建xfs文件系统
ceph-deploy disk list ceph-osd1 ceph-osd2
#正常显示如下(ceph-osd2 就不粘贴了):
[ceph-osd1][INFO ] Running command: /usr/sbin/ceph-disk list
[ceph-osd1][DEBUG ] /dev/sda :
[ceph-osd1][DEBUG ] /dev/sda4 other,0x5
[ceph-osd1][DEBUG ] /dev/sda3 swap,swap
[ceph-osd1][DEBUG ] /dev/sda5 other,xfs,mounted on /
[ceph-osd1][DEBUG ] /dev/sda1 other,mounted on /boot
[ceph-osd1][DEBUG ] /dev/sda2 other,mounted on /var
[ceph-osd1][DEBUG ] /dev/sdb :
[ceph-osd1][DEBUG ] /dev/sdb1 other,xfs
[ceph-osd1][DEBUG ] /dev/sdc :
[ceph-osd1][DEBUG ] /dev/sdc1 other,xfs
[ceph-osd1][DEBUG ] /dev/sdd :
[ceph-osd1][DEBUG ] /dev/sdd1 other,xfs
[ceph-osd1][DEBUG ] /dev/sde :
[ceph-osd1][DEBUG ] /dev/sde1 other,xfs
[ceph-osd1][DEBUG ] /dev/sdf :
[ceph-osd1][DEBUG ] /dev/sdf1 other,xfs
[ceph-osd1][DEBUG ] /dev/sdg :
[ceph-osd1][DEBUG ] /dev/sdg1 other,xfs
[ceph-osd1][DEBUG ] /dev/sdh :
[ceph-osd1][DEBUG ] /dev/sdh1 other,xfs
[ceph-osd1][DEBUG ] /dev/sdi :
[ceph-osd1][DEBUG ] /dev/sdi1 other,xfs
[ceph-osd1][DEBUG ] /dev/sdj :
[ceph-osd1][DEBUG ] /dev/sdj1 other,xfs
[ceph-osd1][DEBUG ] /dev/sdk :
[ceph-osd1][DEBUG ] /dev/sdk1 other,xfs
[ceph-osd1][DEBUG ] /dev/sdl :
[ceph-osd1][DEBUG ] /dev/sdl1 other,ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
[ceph-osd1][DEBUG ] /dev/sdl2 other,ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
[ceph-osd1][DEBUG ] /dev/sdl3 other,ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
[ceph-osd1][DEBUG ] /dev/sdl4 other,ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
[ceph-osd1][DEBUG ] /dev/sdl5 other,ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
[ceph-osd1][DEBUG ] /dev/sdm :
[ceph-osd1][DEBUG ] /dev/sdm1 other,ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
[ceph-osd1][DEBUG ] /dev/sdm2 other,ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
[ceph-osd1][DEBUG ] /dev/sdm3 other,ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
[ceph-osd1][DEBUG ] /dev/sdm4 other,ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
[ceph-osd1][DEBUG ] /dev/sdm5 other,ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
[ceph-osd1][DEBUG ] /dev/sr0 other,unkNown

八、 创建存储节点

1. 在ceph-adm上创建ceph-osd1、ceph-osd2存储节点
ceph-osd1执行如下:
ceph-deploy disk zap ceph-osd1:sdb ceph-osd1:sdc ceph-osd1:sdd ceph-osd1:sde ceph-osd1:sdf ceph-osd1:sdg ceph-osd1:sdh ceph-osd1:sdi ceph-osd1:sdj ceph-osd1:sdk
ceph-deploy osd create ceph-osd1:sdb ceph-osd1:sdc ceph-osd1:sdd ceph-osd1:sde ceph-osd1:sdf ceph-osd1:sdg ceph-osd1:sdh ceph-osd1:sdi ceph-osd1:sdj ceph-osd1:sdk

ceph-osd2执行如下:
ceph-deploy disk zap ceph-osd2:sdb ceph-osd2:sdc ceph-osd2:sdd ceph-osd2:sde ceph-osd2:sdf ceph-osd2:sdg ceph-osd2:sdh ceph-osd2:sdi ceph-osd2:sdj ceph-osd2:sdk
ceph-deploy osd create ceph-osd2:sdb ceph-osd2:sdc ceph-osd2:sdd ceph-osd2:sde ceph-osd2:sdf ceph-osd2:sdg ceph-osd2:sdh ceph-osd2:sdi ceph-osd2:sdj ceph-osd2:sdk

2. 在ceph-adm上把配置文件同步部署到其它节点,让每个节点ceph配置保持一致性。
ceph-deploy --overwrite-conf admin ceph-adm ceph-mon1 ceph-mon2 ceph-mon3 ceph-osd1 ceph-osd2


九、 测试

1. 查看Ceph的状态
[root@ceph-adm ceph]# ceph -s
cluster 0659c156-c46a-4c83-bcc1-786219991e81
health HEALTH_OK
monmap e1: 3 mons at {ceph-mon1=192.168.0.60:6789/0,ceph-mon2=192.168.0.61:6789/0,ceph-mon3=192.168.0.62:6789/0}
election epoch 8,quorum 0,1,2 ceph-mon1,ceph-mon3
osdmap e108: 20 osds: 20 up,20 in
flags sortbitwise,require_jewel_osds
pgmap v338: 512 pgs,1 pools,0 bytes data,0 objects
715 MB used,1898 GB / 1899 GB avail
512 active+clean
2. 查看ceph版本
[root@ceph-adm ceph]# ceph -v
ceph version 10.2.9 (2ee413f77150c0f375ff6f10edd6c8f9c7d060d0)
3. 查看集群使用状态
[root@ceph-adm ceph]# ceph df
GLOBAL:
SIZE AVAIL RAW USED %rAW USED
1899G 1898G 715M 0.04
POOLS:
NAME ID USED %USED MAX AVAIL OBJECTS
rbd 0 0 0 949G 0
4. 查看ceph mon 状态
[root@ceph-adm ceph]# ceph mon stat
e1: 3 mons at {ceph-mon1=192.168.0.60:6789/0,ceph-mon3=192.168.0.62:6789/0},election epoch 8,ceph-mon3
5. 查看osd的crush map
[root@ceph-adm ceph]# ceph osd tree
ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY
-1 1.85394 root default
-2 0.92697 host ceph-osd1
0 0.09270 osd.0 up 1.00000 1.00000
1 0.09270 osd.1 up 1.00000 1.00000
2 0.09270 osd.2 up 1.00000 1.00000
3 0.09270 osd.3 up 1.00000 1.00000
4 0.09270 osd.4 up 1.00000 1.00000
5 0.09270 osd.5 up 1.00000 1.00000
6 0.09270 osd.6 up 1.00000 1.00000
7 0.09270 osd.7 up 1.00000 1.00000
8 0.09270 osd.8 up 1.00000 1.00000
9 0.09270 osd.9 up 1.00000 1.00000
-3 0.92697 host ceph-osd2
10 0.09270 osd.10 up 1.00000 1.00000
11 0.09270 osd.11 up 1.00000 1.00000
12 0.09270 osd.12 up 1.00000 1.00000
13 0.09270 osd.13 up 1.00000 1.00000
14 0.09270 osd.14 up 1.00000 1.00000
15 0.09270 osd.15 up 1.00000 1.00000
16 0.09270 osd.16 up 1.00000 1.00000
17 0.09270 osd.17 up 1.00000 1.00000
18 0.09270 osd.18 up 1.00000 1.00000
19 0.09270 osd.19 up 1.00000 1.00000
6. 导出ceph mon 的信息
[root@ceph-adm ceph]# ceph mon dump
dumped monmap epoch 1
epoch 1
fsid 0659c156-c46a-4c83-bcc1-786219991e81
last_changed 2017-07-20 13:17:49.202587
created 2017-07-20 13:17:49.202587
0: 192.168.0.60:6789/0 mon.ceph-mon1
1: 192.168.0.61:6789/0 mon.ceph-mon2
2: 192.168.0.62:6789/0 mon.ceph-mon3
7. 查看mon仲裁状态
[root@ceph-adm ceph]# ceph quorum_status --format json-pretty

{
"election_epoch": 8,
"quorum": [
0,
1,
2
],
"quorum_names": [
"ceph-mon1",
"ceph-mon2",
"ceph-mon3"
],
"quorum_leader_name": "ceph-mon1",
"monmap": {
"epoch": 1,
"fsid": "0659c156-c46a-4c83-bcc1-786219991e81",
"modified": "2017-07-20 13:17:49.202587",
"created": "2017-07-20 13:17:49.202587",
"mons": [
{
"rank": 0,
"name": "ceph-mon1",
"addr": "192.168.0.60:6789\/0"
},
{
"rank": 1,
"name": "ceph-mon2",
"addr": "192.168.0.61:6789\/0"
},
{
"rank": 2,
"name": "ceph-mon3",
"addr": "192.168.0.62:6789\/0"
}
]
}
}
8、查看ceph pg状态
[root@ceph-adm ceph]# ceph pg stat
v338: 512 pgs: 512 active+clean; 0 bytes data,715 MB used,1898 GB / 1899 GB avail


就此ceph集群已完成,下面如何配置 Nova,Glance、Cinder 基于Ceph的统一存储方案。


十、 Openstack后端存储Ceph解决方案


1. 配置glance镜像服务的后端存储基于ceph集群








持续更新中.......


学习交流请加qq 337972603



参考

https://yq.aliyun.com/articles/72357?spm=5176.100239.blogcont72372.12.nBvAu8

http://www.vpsee.com/2015/07/install-ceph-on-centos-7/

CentOS 7.3 环境下详细部署安装分布式存储系统Ceph的更多相关文章

  1. iOS推送通知适用于Dev而不是Enterprise Distribution

    本网站上没有其他问题,我已经能够找到实际上提出了Dev将工作的原因,但企业分布不会.为什么归档总是使aps环境生产?

  2. ios – testflight库和Xcode 5没有变化现在说“ld:找不到-lTestFlight的库”

    我已经创建了几个月的应用程序,突然Xcode5不想构建它.它只是抱怨以下错误.如果我理解它可以,它会抱怨testflight,但我几周没有改变它.它完美地编译了它.我不得不说我已经尝试将AdobeADMS跟踪库添加到项目中.然后,出现链接器错误.任何提示?

  3. 如何在ios swift项目中为dev n prod使用两个不同的GoogleService-info.plist文件?

    我需要使用两个不同的GoogleService-info.plist来处理dev和prod构建,目前我只是通过在编辑方案中更改“构建配置”来分离dev和prod,但现在我需要有两个不同的.plist文件dev和prod用于处理谷歌分析,pushwoosh等,解决方法对于这种情况,您需要在Dev和Prod的项目中使用带有diffbundleid的不同Targets.之后,您可以链接GoogleSer

  4. Ceph vs Swift - 架构剖析

    Ceph和Swift,哪种更好?当工程师们讨论存储,谈到Ceph和Swift时,他们通常都一致认为其中一个非常棒,另外一个却很糟糕。另一个原因,也是很多人认为Ceph更好的原因,是Swift不支持块存储和文件存储。Ceph的另一个短板是安全性。一个原因是Ceph只能同步写入,并且要求写入节点达到quorum数才能成功返回。比如,可以使用Ceph作为本地高性能存储,而Swift则作为多地域Glance后台,这时复制很重要而速度并不关键。

  5. openstack安装liberty--安装对象存储服务swift

    通常使用CACHE技術提高性能Accountservers賬戶服務,管理對象存儲中的賬戶定義。Containerservers容器服務,在對象存儲中管理容器或文件夾映……Objectservers對象服務,在存儲節點管理實際的對象,比如文件。Wsgimiddleware處理認證,通常使用OPENSTACKIdentityswiftclient為用戶提供命令行接口使用RESTAPIswift-init初始化和構建RING文件腳本swift-recon一個命令行工具,用於檢索群集的各種度量和測試信息。

  6. Ceph部署二RGW搭建

    背景CephRGW简介CephRGW基于librados,是为应用提供RESTful类型的对象存储接口。环境规划如上篇文章《Ceph部署(一)集群搭建》所述:4台服务器:1台作为Monitor,1台作为OSDRGW,还有两台作为OSD。部署CephRGW进入上文所述的my-cluster目录。该脚本会连接RGW,创建一个bucket并列出所有的bucket。正常的输出应该为:小结通过ceph-deploy命令,已经大大地简化了对Ceph集群和RGW的安装和配置。但如果想挑战下自己,或者想让自己了解更多,试

  7. swift分布式存储多节点部署

    1、机器192.168.1.211ProxyNode192.168.1.212StorageNode192.168.1.213StorageNode192.168.1.214StorageNode系统为SLES11sp12、配置软件源因为公司服务器无法连外网,所以配置局域网源和本地源来搭建环境上传ISO镜像文件到各台机器SLES-11-SP4-DVD-x86_64-GM-DVD1.iso每台机器挂

  8. (Cross-)编译Swift for Raspberry PI

    Swift现在是开源的.有没有人试过编译Swift的RaspBerryPI?我开始做,但我的8GBSD卡似乎太小了;)是否可以从Ubuntu交叉编译?写Swift打开你最喜欢的文本编辑器,编写一个程序并保存它:编译它并运行它:而已!

  9. Swift 3 dev快照中的POST请求给出了“对成员’dataTask的模糊引用(with:completionHandler :)’

    编辑:我注意到有人在我之后写了这个问题的副本.这里的答案是更好的答案.使用URLRequest结构.在Xcode8中工作正常:另外,出现此错误的原因是URLSessionAPI具有相同的名称方法,但每个都采用不同的参数.因此,如果没有明确的演员,API将会混淆.我认为这是API的命名错误.发生此问题,代码如下:

  10. 针对不同环境的不同Android构建

    我希望能够构建和安装我的应用程序的多个版本(同时),针对不同的环境,如开发,暂存和生产.AndroidManifest.xml中的软件包名称似乎是这里的主要障碍,因为它是唯一标识应用程序的内容.我认为可以简单地在com.mydomain.prod,com.mydomain.staging和com.mydomain.dev之间切换或某种类似的约定,但到目前为止,我还没有运气的包装结构对于这种方法.我

随机推荐

  1. 在airgapped(离线)CentOS 6系统上安装yum软件包

    我有一个CentOS6系统,出于安全考虑,它已经被空气泄漏.它可能从未连接到互联网,如果有,它很长时间没有更新.我想将所有.rpm软件包放在一个驱动器上,这样它们就可以脱机安装而无需查询互联网.但是,我在测试VM上遇到的问题是,即使指定了本地路径,yum仍然会挂起并尝试从在线存储库进行更新.另外,有没有办法使用yum-utils/yumdownloader轻松获取该包的所有依赖项和所有依赖项?目前

  2. centos – 命名在日志旋转后停止记录到rsyslog

    CentOS6.2,绑定9.7.3,rsyslog4.6.2我最近设置了一个服务器,我注意到在日志轮换后,named已停止记录到/var/log/messages.我认为这很奇怪,因为所有日志记录都是通过rsyslog进行的,并且named不会直接写入日志文件.这更奇怪,因为我在更新区域文件后命名了HUPed,但它仍然没有记录.在我停止并重新启动命名后,记录恢复.这里发生了什么?

  3. centos – 显示错误的磁盘大小

    对于其中一个磁盘,Df-h在我的服务器上显示错误的空白区域:Cpanel表明它只有34GB免费,但还有更多.几分钟前,我删除了超过80GB的日志文件.所以,我确信它完全错了.fdisk-l/dev/sda2也显示错误:如果没有格式化,我该怎么做才能解决这个问题?并且打开文件描述符就是它需要使用才能做到这一点.所以…使用“lsof”并查找已删除的文件.重新启动写入日志文件的服务,你很可能会看到空间可用.

  4. 如何在centos 6.9上安装docker-ce 17?

    我目前正在尝试在centOS6.9服务器上安装docker-ce17,但是,当运行yuminstalldocker-ce时,我收到以下错误:如果我用跳过的标志运行它我仍然得到相同的消息,有没有人知道这方面的方法?

  5. centos – 闲置工作站的异常负载平均值

    我有一个新的工作站,具有不寻常的高负载平均值.机器规格是:>至强cpu>256GB的RAM>4x512GBSSD连接到LSI2108RAID控制器我从livecd安装了CentOS6.564位,配置了分区,网络,用户/组,并安装了一些软件,如开发工具和MATLAB.在启动几分钟后,工作站负载平均值的值介于0.5到0.9之间.但它没有做任何事情.因此我无法理解为什么负载平均值如此之高.你能帮我诊断一下这个问题吗?

  6. centos – Cryptsetup luks – 检查内核是否支持aes-xts-plain64密码

    我在CentOS5上使用cryptsetupluks加密加密了一堆硬盘.一切都很好,直到我将系统升级到CentOS6.现在我再也无法安装磁盘了.使用我的关键短语装载:我收到此错误:在/var/log/messages中:有关如何装载的任何想法?找到解决方案问题是驱动器使用大约512个字符长的交互式关键短语加密.出于某种原因,CentOS6中的新内核模块在由旧版本创建时无法正确读取512个字符的加密密钥.似乎只会影响内核或cryptsetup的不同版本,因为在同一系统上创建和打开时,512字符的密钥将起作用

  7. centos – 大量ssh登录尝试

    22个我今天登录CentOS盒找到以下内容这是过去3天内的11次登录尝试.WTF?请注意,这是我从我的提供商处获得的全新IP,该盒子是全新的.我还没有发布任何关于此框的内容.为什么我会进行如此大量的登录尝试?是某种IP/端口扫描?基本上有4名匪徒,其中2名来自中国,1名来自香港,1名来自Verizon.这只发生在SSH上.HTTP上没有问题.我应该将罪魁祸首子网路由吗?你们有什么建议?

  8. centos – kswap使用100%的CPU,即使有100GB的RAM也可用

    >Linux内核是否应该足够智能,只需从内存中清除旧缓存页而不是启动kswap?

  9. centos – Azure将VM从A2 / 3调整为DS2 v2

    我正在尝试调整前一段时间创建的几个AzureVM,从基本的A3和标准A3到标准的DS2v2.我似乎没有能力调整到这个大小的VM.必须从头开始重建服务器会有点痛苦.如果它有所不同我在VM中运行CentOS,每个都有一个带有应用程序和操作系统的磁盘.任何人都可以告诉我是否可以在不删除磁盘的情况下删除VM,创建新VM然后将磁盘附加到新VM?

  10. centos – 广泛使用RAM时服务器计算速度减慢

    我在非常具体的情况下遇到服务器速度下降的问题.事实是:>1)我使用计算应用WRF>2)我使用双XeonE5-2620v3和128GBRAM(NUMA架构–可能与问题有关!

返回
顶部