Jet全家桶和Navicat激活(仅可用于学生学习使用)
NavicatPremium16 激活只能激活16.0和16.1，贴个16.0的链接NavicatPremium16NavicatCracker NavicatPremium16激活教程.pdfJet全家桶激活所有的资料都在里面
CentOS基础命令yum install -y net-tools # 和Ubuntu使用同一个network managerUbuntu进程查看 ps top# 查看进程四种命令 ps aux ps -elf top pstree -aup 以树状图的方式展现进程之间的派生关系，显示效果比较直观。 -a：显示每个程序的完整指令，包含路径，参数或是常驻服务的标示； -c：不使用精简标示法； -G：使用VT100终端机的列绘图字符； -h：列出树状图时，特别标明现在执行的程序； -H<程序识别码>：此参数的效果和指定"-h"参数类似，但特别标明指定的程序； -l：采用长列格式显示树状图； -n：用程序识别码排序。预设是以程序名称来排序； -p：显示程序识别码； -u：显示用户名称； 在top命令显示的页面还可以输入以下按键执行相应的功能（注意大小写区分的）： ?：显示在top当中可以输入的命令 P：以CPU的使用资源排序显示 M：以内存的使用资源排序显示 N：以pid排序显示 T：由进程使用的时间累计排序显示 k：给某一个pid一个信号。可以用来杀死进程 r：给某个pid重新定制一个nice值（即优先级） q：退出top（用ctrl+c也可以退出top）压缩文件 tar zip1、tar –xvf file.tar //解压 tar包 2、tar -xzvf file.tar.gz //解压tar.gz 3、tar -xjvf file.tar.bz2 //解压 tar.bz2 4、tar –xZvf file.tar.Z //解压tar.Z 5、unrar e file.rar //解压rar 6、unzip file.zip //解压zip 1、tar -cvf xiaoq.tar xiaoq/ 2、zip -r ohnote.zip * .[^.]* 说明： -r 递归子目录 * 所有非隐藏文件/夹 .[^.]*（所有隐藏文件/夹，但排除..（上一级目录）） 3、services.msc 打开服务磁盘管理 mdadmmdadm -Cv md0 -l0 -n2 sdc sdd #创建RAID cat /proc/mdstat mkfs.ext4 sdc/sdd mdadm --stop /dev/sd0 #停止阵列 mdadm --misc --zero-superblock sdd/sdc #移出设备 mdadm -D /dev/md0 #查看阵列详情 mkfs -t ext4 /dev/md0 #格式化与挂载使用raid mdadm -Cv /dev/md0 -l10 -n4 /dev/sdb[1-4] #创建RAID10 cat /proc/进度mdsdat #查看RAID创建进度 mdadm -Cv /dev/md0 -l5 -n4 /dev/sdb[1-3] #创建RAID5 mdadm -f /dev/md0 /dev/sdb1 #模拟硬盘损坏 mdadm -r /dev/md0 /dev/sdb1 #热移出故障盘 mkfs.ext4 /dev/md0 #格式化阵列端口查询 netstatnetstat -a # 列出所有端口 netstat -at # 列出所有TCP端口 netstat -au # 列出所有UDP端口 netstat -ax # 列出所有unix端口 netstat -atnlp # 直接使用ip地址列出所有处理监听状态的TCP端口，且加上程序名 netstat -ant # 查看服务器所有被占用端口 netstat -tunlp | grep 端口号 # 验证某个端口号是否被占用 netstat -lntp # 查看所有监听端口号fdisk，使用参考[root@localhost ~]# fdisk /dev/sdb 欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中，直到您决定将更改写入磁盘。 使用写入命令前请三思。 Device does not contain a recognized partition table 使用磁盘标识符 0x155d620b 创建新的 DOS 磁盘标签。 命令(输入 m 获取帮助)：m 命令操作 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磁盘标签 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) # 额外功能（专家模式）PVE重启网络服务systemctl restart networking.service systemctl enable networking.service查看网络状态systemctl status networking.service修改SMB挂载密码 vi /etc/pve/priv/storage/loca-Win10.pw
在DNS中，国际互联网与国内网络有没有互通
@木村·星辰的观点是和根服务器（及镜像污染）有关，国际互联网不再信任中国的 DNS 服务器。但这个说法实际上是很荒谬的，也可以通过实验快速验证。本回答就旨在说明这一问题。​ 首先从DNS的解析过程入手。不考虑 DNSSEC 等因素，仅讨论最简单的情况，一个典型的解析过程如下：用户请求本地 DNS，本地 DNS 从根开始一步步解析，其中每一步都是获取 NS 记录 和 A（或者 AAAA）记录，最终查询到用户请求的记录。​ 根服务器中存储了什么？存储了各个 TLD 的 NS 记录和 A/AAAA 记录。具体的记录由 ICANN 旗下的 IANA 保管，内容见 Root Files。全世界所有的根服务器及其镜像的内容都是一致的。​ .cn的信息也不例外。在任何一个根服务器的 中，都可以查询到 .cn 正确的 delegation 信息。这一结论可以通过 'dig cn NS 任意一个根' 来快速验证。那么，只要授权 DNS 工作正常，没有理由认为 .cn 会被整个屏蔽。​ 历史上有没有发生过整个 TLD 被屏蔽的事件？有。早年间曾经发生过伊拉克的 .iq TLD 被整个从根服务器中删除的例子。然而这个例子在今天不适用：.cn 仍在根服务器中活得好好的。​ 说到底，互联网是一个分布式的系统，“国际互联网”本身就是一个伪概念。互联网有许多组成部分，哪些部分是“国际互联网”呢？事实上，并没有一个部分能完全担得起这个概念。因此，“不被国际互联网信任”本身从逻辑上就无法成立。​ 我们可以试想一下，假如“[国际互联网]”中的某个部分想屏蔽 .cn 该怎么做。某个运营商可以控制旗下的 DNS，拒绝解析 .cn。或者某个国家的政府可以如此规定。然而，这种做法终究只是某个或某些特定运营商的，很难具有普遍性，更不可能扩散到整个”国际互联网“。​ 如果上述分析还不足以令人信服，我们通过实验来核实一下就行了。实验利用 RIPE Atlas，这是一个包含了成千上万的家宽、商宽、服务器甚至是卫星连接的巨大监控网络，而我恰好有节点在其中，有资源可以发起全球规模的测试。话不多说，直接上测试结果：Atlas Console​ 上面的链接无需登录就能打开。测试目标是新华网。新华网的 DNS 全部位于境内。测试节点选用了全世界内 1000 个随机节点（但只有 994 个实际参与）。这个样本量已经足够大了。结果表明，绝大多数的测试节点都能够正常完成解析，而剩下不能完成解析的节点中很有可能也是因网络延迟问题（因为众所周知的原因，跨境网络连接不佳）。至少，绝对不存在 @木村·星辰所说的”国际互联网不信任中国 DNS“这件事。以上，如有不严谨之处欢迎评论区指点。行了，前几天的评论又给我吞了，今天才发现。原样贴过来算了。纯技术问题知乎怎么还吞评论这么严重的。本来是回复@木村·星辰的。​ 经过查询，我确认了 .cn的确有两个授权 DNS 在境外，不知是不是就是你所说的“镜像”。30s 这个限制实际上是有些不合理的。不考虑缓存因素，当 DNS 记录被修改时（增删改都算），master 会通知 slave 变更，slave 则会在收到通知后发起 AXFR。这个过程即使不考虑众所周知的那个因素，也常常需要一定时间来完成。例如，HE 运营的免费 slave 就常常需要数分钟时间来响应更新请求。可以认为，DNS 记录的更新本就不是实时的，是需要一定时间传播的。不考虑缓存的情况下，存在数十秒延迟是很正常的事，并不能认为是被“阻断”了。实际上我也完成了一项小测试，使用我自己的 .cn 域名测试了伦敦的授权 DNS 的反应速度。我采用了设置 Glue Record 的方法，经过我的测试，设置完成后 20 秒之内信息就同步了，至少我的实验无法支持“境外镜像包含错误信息”这一结论。至于 8.8.8.8 怎么选取 .cn 的授权 DNS，这个我没有找到互联网上的公开信息。如果你有更多信息的话也欢迎提供下，咱们一起分析。
create，创建数据库CREATE TABLE USER ( id INT PRIMARY KEY, age INT, NAME VARCHAR ( 255 ));schema，等同数据库-- 翻译过来是在MySQL中，schema实际上等同于database。你可以用关键字SCHEMA代替MySQL SQL语法中的DATABASE，例如用CREATE SCHEMA代替CREATE DATABASE。 CREATE SCHEMA Learn; # 相当于创建一个数据库drop，删除表-- 删除一个表，CASCADE：如果有外键一并删除。删除模式：CASCADE（删除模式的同时删除所有的数据库对象） 或者 RESTRICT（该模式有下属对象，例如表视图就拒绝这个删除语句的执行） DROP TABLE USER CASCADE;alter ，修改表ALTER TABLE student ADD S_entrance DATE; ALTER TABLE student CHANGE COLUMN Sage Sage INT; # 修改表中某个字段数据类型 -- >alter table 表名称 change 字段原名称 字段新名称 字段类型 [是否允许非空]; index，索引CREATE UNIQUE INDEX Stusno ON student(Sno); -- unique唯一索引，cluster聚簇索引 ALTER TABLE student RENAME INDEX stusno TO STSno; -- 修改索引名字 ALTER TABLE student DROP INDEX stsno; -- 删除索引select，查询SELECT * FROM course; -- 查询所有的 SELECT Cno,Cpno FROM course; -- 查询部分字段 SELECT Sname 姓名,Sage as 年龄 FROM student -- 别名 SELECT DISTINCT Cname FROM course; -- 结果去重条件查询SELECT * FROM sc WHERE Grade > 20; SELECT * FROM sc WHERE Grade BETWEEN 80 AND 90; SELECT * FROM sc WHERE Grade in (80); -- 查询集合 SELECT * FROM sc WHERE Sno LIKE "2012%1" ; -- 模糊匹配，要查询的字符串本身含有通配符%或者_，这个时候使用\进行转义 SELECT * FROM sc ORDER BY Grade DESC; -- 从大到小排序，去掉desc就是反过来聚集函数count(*) -- 统计元祖个数 count sum avg max min，都可以使用distinct去除列里重复的，all可以统计全部、 SELECT COUNT(Cname) FROM course; SELECT COUNT(DISTINCT Cname) FROM course; SELECT Sno,COUNT(*) FROM sc GROUP BY Sno; SELECT Sno FROM sc GROUP BY Sno HAVING Sno="2%"; having 进行分组连接SELECT t.*,c.* FROM edu_teacher t,edu_course c WHERE t.id=c.teacher_id; -- 非等值连接，以where为关键词 SELECT c1.version,c2.version FROM edu_course c1,edu_course c2 WHERE c1.version=c2.version; -- 自身与自身连接，为本身的这个表起两个别名 SELECT student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade FROM student LEFT [OUTER] JOIN sc ON (student.Sno=sc.Sno); # left join（左连接）会返回左表中的所有行，即使在右表中没有匹配的行。如果右表中没有匹配的行，则相应的列会用空值（null）填充。这种连接方式可以显示左表中的所有信息，即使这些信息在右表中没有对应的记录。 多表查询SELECT c.id ID,c.title 课程名 FROM edu_course c,edu_chapter cp; 嵌套查询SELECT * FROM edu_course c WHERE c.title in (SELECT edu_course.title FROM edu_course WHERE edu_course.title LIKE 'j%') # 后面跟着集合带有any，all ，exit，no exit的子查询# any 查询记过中的某个值 all 查询结果中的所有值联合查询，unionSELECT * FROM student WHERE Sdept='CS' UNION SELECT * FROM student WHERE Sage >19; # 查询列数必须保持一致 # 列值类型和顺序最好保持一致 # UNION 默认去重 ， 可以使用UNION ALL数据插入 修改 删除CREATE TABLE test(id int, name VARCHAR(20),age int); -- 添加 INSERT INTO test (id,name,age)VALUES(0,12,22); -- 标准添加 INSERT INTO test(name,id)VALUES(13,1); -- 部分字段添加 INSERT INTO test VALUE(2,12,12); -- 不指定添加 -- 修改 UPDATE test SET id=12 WHERE id=0 -- 删除 DELETE FROM test WHERE id=12;视图虚表，即一组数据的逻辑标识，其本质是一条select语句，结果集被赋予一个名字，即视图名字-- 创建视图 CREATE VIEW IS_Student AS SELECT Sno,Sname FROM student WHERE Sdept='IS' -- 查询视图 SELECT * FROM is_student -- 删除视图，级联删除 DROP VIEW IS_Student CASCADE -- 防止用户对不属于视图范围的操作进行拒绝，对该视图进行操作时，会自动加上 Sdept='IS'的条件 CREATE VIEW IS_Student as SELECT Sno,Sname,Sage FROM student WHERE Sdept='IS' WITH CHECK OPTION -- 更新视图，因为视图是不存在的，所以对是视图的操作最终反映到基本表的操作数据库的安全性-- 加上 with grant option可以吧权限授予其他用户 GRANT 权限 ON 表名[(列名)] TO 用户 WITH GRANT OPTION REVOKE -- 回收权限
1. 首先需要容器镜像加速，使用阿里云的个人链接sudo vim /etc/docker/daemon.jsonsudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://ayxukj4g.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker apt-get remove docker docker-engine docker.io containerd runc curl -fsSL https://test.docker.com -o test-docker.sh && sh test-docker.sh2.容器操作Docker创建命令-rundocker create docker run Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...] -a, --attach=[] 登录容器（以docker run -d启动的容器） -c, --cpu-shares=0 设置容器CPU权重，在CPU共享场景使用 --cap-add=[] 添加权限，权限清单详见：http://linux.die.net/man/7/capabilities --cap-drop=[] 删除权限，权限清单详见：http://linux.die.net/man/7/capabilities --cidfile="" 运行容器后，在指定文件中写入容器PID值，一种典型的监控系统用法 --cpuset="" 设置容器可以使用哪些CPU，此参数可以用来容器独占CPU -d, --detach=false 指定容器运行于前台还是后台 --device=[] 添加主机设备给容器，相当于设备直通 --dns=[] 指定容器的dns服务器 --dns-search=[] 指定容器的dns搜索域名，写入到容器的/etc/resolv.conf文件 -e, --env=[] 指定环境变量，容器中可以使用该环境变量 --entrypoint="" 覆盖image的入口点 --env-file=[] 指定环境变量文件，文件格式为每行一个环境变量 --expose=[] 指定容器暴露的端口，即修改镜像的暴露端口 -h, --hostname="" 指定容器的主机名 -i, --interactive=false 打开STDIN，用于控制台交互 --link=[] 指定容器间的关联，使用其他容器的IP、env等信息 --lxc-conf=[] 指定容器的配置文件，只有在指定--exec-driver=lxc时使用 -m, --memory="" 指定容器的内存上限 --name="" 指定容器名字，后续可以通过名字进行容器管理，links特性需要使用名字 --net="bridge" 容器网络设置，待详述 -P, --publish-all=false 指定容器暴露的端口，待详述 内部端口随机映射到主机的高端口 -p, --publish=[] 指定容器暴露的端口，待详述 内部端口绑定到指定的主机端口 --privileged=false 指定容器是否为特权容器，特权容器拥有所有的capabilities --restart="" 指定容器停止后的重启策略，待详述 --rm=false 指定容器停止后自动删除容器(不支持以docker run -d启动的容器) --sig-proxy=true 设置由代理接受并处理信号，但是SIGCHLD、SIGSTOP和SIGKILL不能被代理 -t, --tty=false 分配tty设备，该可以支持终端登录 -u, --user="" 指定容器的用户 -v, --volume=[] 给容器挂载存储卷，挂载到容器的某个目录 --volumes-from=[] 给容器挂载其他容器上的卷，挂载到容器的某个目录 -w, --workdir="" 指定容器的工作目录Docker容器备份docker commit nginx mynginx # 将容器保存为镜像 docker save -o [tar包真实路径] [镜像名 ]（ID也可以） # 打包镜像为tar docker load -i [tar包真实路径] # 恢复 docker export e950a988d058 > /opt/gitlab-zh.tar # 根据容器导出镜像容器 docker import - 镜像名 < /opt/gitlab-zh.tar # 导入$ docker import http://example.com/exampleimage.tgz example/imagerepo # url导入ocker import http://example.com/exampleimage.tgz example/imagerepo # 通过url导入删除Docker容器docker container rm $docker_id # 删除已经停止的某个或几个Docker容器 docker container prune # 删除所有的停止的Docker容器获取Docker容器的信息，进入容器docker exec -it 容器名 /bin/bash # 进入Docker容器 docker exec 容器名 容器内命令 # 直接在Docker容器外部执行容器的命令 docker attach 44fc0f0582d9 # 多个窗口同时使用该命令进入该容器时，所有的窗口都会同步显示。 exit # 退出 docker inspect 容器名 # 这个命令会返回一个大json字符串，可一次性取得docker全部内容 docker inspect --format=’{{.NetworkSettings.要获取的Key}}’ 容器名称(容器ID) # 获取Docker容器指定的信息停止并删除所有容器docker container ls -aq # 生成所有容器的列表 docker container stop $(docker container ls -aq) # 停止所有正在运行的容器 docker container rm $(docker container ls -aq) # 删除所有的容器 docker rm containerid3.镜像操作docker image ls # 查看所有的Docker镜像 docker image rm 75835a67d134 # 删除镜像 docker image prune # 删除未标记且未被任何容器使用的镜像 docker image prune -a # 要删除所有现有容器未引用的所有镜像 docker rmi # 删除image docker pull ubuntu:13.10 # 拉取 docker search httpd # 查找镜像 docker container commit < 输入你的 CONTAINER_ID > <需要构建的镜像名:版本号> # -m: 提交的描述信息，-a: 指定镜像作者 docker tag ubuntu:18.04 username/ubuntu:18.04 # 推送镜像4.Volume操作删除Docker卷docker volume ls # 查看卷 docker volume rm volume_id # 删除卷 docker volume prune # 删除所有未使用的卷5.Network操作删除Docker构建的网络docker network ls # 查看所有的网络 docker network rm network_id # 删除某个网络 docker network prune # 删除所有未使用的网络 docker network create -d bridge test-net # 创建一个网络 6.DockerHubDocker账户创建以及镜像库的构建docker pull 镜像名:version # 默认为latest最新版7.其他操作删除所有未使用的Docker对象docker system prune # 有提示使用-f或--force选项绕过提示，要删除所有未使用的卷，请传递--volumes选项： docker system prune --volumes docker pause # 暂停容器中所有的进程。 docker unpause # 恢复容器中所有的进程。 docker top :查看容器中运行的进程信息，支持 ps 命令参数。其他容器操作docker history image-name # 查看docker镜像的历史 docker ps # 显示所有的容器 docker ps -a # 显示所有的容器 docker ps -l # 显示最近创建的容器 attach 介入到一个正在运行的容器 build 根据 Dockerfile 构建一个镜像 cp 在本地文件系统与容器中复制 文件/文件夹 docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|- docker cp 96f7f14e99ab:/www /tmp/ docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH docker cp /www/runoob 96f7f14e99ab:/www/ create 创建一个新容器 exec 在容器中执行一条命令 images 列出镜像 kill 杀死一个或多个正在运行的容器 logs 取得容器的日志 pause 暂停一个或多个容器的所有进程 ps 列出所有容器 pull 拉取一个镜像或仓库到 registry push 推送一个镜像或仓库到 registry rename 重命名一个容器 restart 重新启动一个或多个容器 rm 删除一个或多个容器 rmi 删除一个或多个镜像 run 在一个新的容器中执行一条命令 search 在 Docker Hub 中搜索镜像 start 启动一个或多个已经停止运行的容器 stats 显示一个容器的实时资源占用 stop 停止一个或多个正在运行的容器 tag 为镜像创建一个新的标签 top 显示一个容器内的所有进程 unpause 恢复一个或多个容器内所有被暂停的进程8.DockerfileFROM centos VOLUME ["volume01","volume02"] CMD echo"----end----" CMD /bin/bash9.DockerMachinebase=https://github.com/docker/machine/releases/download/v0.16.0 && curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine && sudo install /tmp/docker-machine /usr/local/bin/docker-machine docker-machine version 使用Docker Machine，要通过docker-machine create命令创建Docker机器。 docker-machine create [OPTIONS] [arg...] 10.Swarm创建一个新的Swarm集群： 该命令的输出提示当前节点已成为管理器，还包括将新节点加入集群的命令。根据--token选项的值，节点将作为管理器或工作者的角色加入。 docker info docker node ls # 创建集群 docker service create --replicas 1 --name helloworld alpine ping baidu.com11.日常使用的容器mysqlsudo docker run -p 3306:3306 --name mysqltest -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7embydocker run -d \ --volume /volume2/docker/emby:/config \ --volume /volume2/wd-video/Links/Links:/wd-video \ --net=host \ --device /dev/dri:/dev/dri \ --publish 8097:8096 \ --env UID=1000 \ --env GID=100 \ --env GIDLIST=100 \ zishuo/embyserver:latest \qinglongdocker run -dit \ -v /root/ql:/ql/data \ -p 5700:5700 \ --name qinglong \ --hostname qinglong \ --restart unless-stopped \ whyour/qinglong:latestportainerdocker run -d --restart=always --name="portainer" -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v /volume2/docker/portainer/data:/data 6053537/portainer-ceshelljellyfindocker run -d -p 8096:8096 -v /volume2/wd-video/Links/Links:/wd-video -v /volume1/video/Links/Links:/video -v /volume2/docker/jellyfin/config:/config --device /dev/dri:/dev/dri nyanmisaka/jellyfinchinesesubfinderdocker run -d \ -v /volume2/docker/ChiSu/config:/config \ -v /volume2/wd-video/Links/Links/电影:/media/movie \ -v /volume2/docker/browser:/root/.cache/rod/browser \ -e PUID=1026 \ -e PGID=100 \ -e PERMS=true \ -e TZ=Asia/Shanghai \ -e UMASK=022 \ -p 19035:19035 \ -p 19037:19037 \ --name chinesesubfinder \ --hostname chinesesubfinder \ allanpk716/chinesesubfinder alist docker run -d --restart=always -v /volume3/docker/alist/config:/opt/alist/data -p 5244:5244 --name="alist" xhofe/alist:latestnastoolsdocker run -d \ --name nas-tools \ --hostname nas-tools \ -p 3000:3000 `# 默认的webui控制端口` \ -v /volume3/docker/nastools/config:/config \ -v /volume2/wd-video:wd-video `# 媒体目录，多个目录需要分别映射进来` \ -e PUID=0 `# 想切换为哪个用户来运行程序，该用户的uid，详见下方说明` \ -e PGID=0 `# 想切换为哪个用户来运行程序，该用户的gid，详见下方说明` \ -e UMASK=000 `# 掩码权限，默认000，可以考虑设置为022` \ -e NASTOOL_AUTO_UPDATE=false `# 如需在启动容器时自动升级程程序请设置为true` \ jxxghp/nas-toolsqbittorrentdocker run -d \ -e PUID=1000 \ -e PGID=1000 \ -e TZ=Asia/Shanghai \ -e WEBUI_PORT=8085 \ -p 6881:6881 \ -p 6881:6881/udp \ -p 8085:8080 \ -v $PWD/config:/config \ -v $PWD/downloads:/downloads \ --restart unless-stopped \ chisbread/qbittorrent:latesttransmissiondocker run -d \ --name=transmission \ -e PUID=1000 \ -e PGID=1000 \ -e TZ=Asia/Shanghai \ -e USER=transmission `#optional` \ -e PASS=transmission `#optional` \ -e RPCPORT=9091 `#optional` \ -e PEERPORT=51413 `#optional` \ -e HOST_WHITELIST=dnsnane list \ -v /volume3/docker/transmission/config:/config \ -v /volume2/wd-video:/wd-video \ --restart unless-stopped \ chisbread/transmission:latestembydocker run -d \ --name embyserver \ -v /volume3/docker/emby/config:/config \ -v /volume1/video/Links/Links:/video \ -p 43997:8096 \ --restart unless-stopped \ lovechen/embyservertmdb54.149.176.35 keys.lime-technology.com 13.225.176.94 api.themoviedb.org 13.226.238.82 api.themoviedb.org 99.84.130.66 www.themoviedb.org 104.16.61.155 image.tmdb.org 199.232.4.133 raw.githubusercontent.com 54.192.122.94 image.tmdb.org 54.192.122.77 api.themoviedb.org 54.192.122.70 image.tmdb.org 54.192.122.30 api.themoviedb.org 54.192.122.123 api.themoviedb.org 54.192.122.12 image.tmdb.org 54.192.122.117 api.themoviedb.org 54.192.122.105 image.tmdb.org 185.199.108.153 asset-cdn.github.com 185.199.108.133 raw.githubusercontent.com 140.82.113.3 github.com 108.159.227.40 www.themoviedb.org 108.159.227.37 www.themoviedb.org 108.159.227.27 www.themoviedb.org 108.159.227.111 www.themoviedb.orgcalibre-webdocker run -d \ --name=calibre-web \ -e PUID=1000 \ -e PGID=1000 \ -e TZ=Europe/London \ -e DOCKER_MODS=linuxserver/mods:universal-calibre `#optional` \ -e OAUTHLIB_RELAX_TOKEN_SCOPE=1 `#optional` \ -p 8083:8083 \ -v /path/to/data:/config \ -v /path/to/calibre/library:/books \ --restart unless-stopped \ lscr.io/linuxserver/calibre-web:latestwallabagdocker run -v /opt/wallabag/data:/var/www/wallabag/data -v /opt/wallabag/images:/var/www/wallabag/web/assets/images -p 8090:80 wallabag/wallabagmysqldocker run -d --name mysql-01 -p 3306:13306 -e MYSQL_ROOT_PASSWORD=root mysqlportainer-cedocker run -d --restart=always --name="portainer" -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v /volume3/docker/portainer/data:/date 6053537/portainer-cezhenxunversion: "2.6.1" services: # 数据库 postgres: image: postgres:alpine restart: on-failure container_name: PostgreSQL ports: - 5432:5432 # 端口映射 environment: POSTGRES_USER: zhenxun # 数据库用户 POSTGRES_PASSWORD: 123456 # 数据库用户密码 POSTGRES_DB: zhenxun_db # 默认数据库 volumes: - postgres_data:/var/lib/postgresql/data # Go-cqhttp go-cqhttp: container_name: Go-cqhttp restart: on-failure image: jyishit/go-cqhttp links: - zhenxun depends_on: - zhenxun environment: - bot_qq= # !!!Bot用的QQ号 - bot_passwd= # !!!Bot用的QQ密码 volumes: - go-cqhttp_data:/home - bot_data:/home/zhenxun_bot # 机器人本体 zhenxun: container_name: ZhenXun-bot restart: on-failure image: jyishit/zhenxun_bot volumes: - ./my_plugins:/home/my_plugins - bot_data:/home/zhenxun_bot ports: - 8080:8080 links: - postgres depends_on: - postgres environment: - webui_user=admin # webui的用户名 - webui_passwd=123456 # webui的密码 - admin_qq=993177194 # !!!管理员的QQ号 webui: container_name: webui restart: on-failure image: jyishit/zhenxun_webui ports: - 8081:80 depends_on: - zhenxun links: - zhenxun volumes: bot_data: go-cqhttp_data: postgres_data:redisdocker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name myredis -v /root/redis/config:/etc/redis -v /root/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes
构建内置存储系统磁盘基本操作命令fdiskfdisk 设备 # 须是设备号，不是分区 fdisk /dev/sda Command (m for help): 在这里按 m ，就会输出帮助； Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition 注：这是删除一个分区的动作； l list known partition types 注：l 是列出分区类型，以供我们设置相应分区的类型； m print this menu 注：m 是列出帮助信息； n add a new partition 注：添加一个分区； o create a new empty DOS partition table p print the partition table 注：p 列出分区表； q quit without saving changes 注：不保存退出； s create a new empty Sun disklabel t change a partition's system id # 注：t 改变分区类型； u change display/entry units v verify the partition table w write table to disk and exit 注：把分区表写入硬盘并退出； x extra functionality (experts only) 注：扩展应用，专家功能；添加一个5G硬盘，并查看分区情况mkfs-h查看帮助信息-t <文件系统类型>指定要创建的文件系统类型-v （小写）查看使用方法信息-V （大写）查看版本信息-f强制格式化，类似于rm -f-b size=1024指定block大小（1k、2k、4k），默认block大小为4k实例，格式化/dev/sdb硬盘，再次查看分区情况，刚刚分的区已经没了磁盘组建RAIDRAID-0: 读、写性能提升； 可用空间：N*min(S1,S2,...) 无容错能力 最少磁盘数：2, 2+ RAID-1： 读性能提升、写性能略有下降； 可用空间：1*min(S1,S2,...) 有冗余能力 最少磁盘数：2, 2+ RAID-5： 读、写性能提升 可用空间：(N-1)*min(S1,S2,...) 有容错能力：1块磁盘 最少磁盘数：3, 3+ RAID-10： 读、写性能提升 可用空间：N*min(S1,S2,...)/2 有容错能力：每组镜像最多只能坏一块； 最少磁盘数：4, 4+ 组建RAID0提示：R0一时爽，数据火葬场。最好是使用不同硬盘，因为使用相同硬盘不同分区组建R0最后是使用的同一个硬盘的IO，速度并没有本质上的提升。 RAID0 是一种简单的、无数据校验的数据条带化技术。实际上不是一种真正的 RAID ，因为它并不提供任何形式的冗余策略。 RAID0 将所在磁盘条带化后组成大容量的存储空间（如图 2 所示），将数据分散存储在所有磁盘中，以独立访问方式实现多块磁盘的并读访问。由于可以并发执行 I/O 操作，总线带宽得到充分利用。再加上不需要进行数据校验，RAID0 的性能在所有 RAID 等级中是最高的。理论上讲，一个由 n 块磁盘组成的 RAID0 ，它的读写性能是单个磁盘性能的 n 倍，但由于总线带宽等多种因素的限制，实际的性能提升低于理论值。默认没有安装mdadmRAID管理工具，使用yum install mdadm安装即可-C: 创建模式​ -n{2}: 使用#个块设备来创建此RAID​ -l{0}：指明要创建的RAID的级别​ -a {yes|no}：自动创建目标RAID设备的设备文件​ -c CHUNK_SIZE: 指明块大小,单位k​ -x : 指明空闲盘的个数​ -D：显示raid的详细信息​ mdadm -D /dev/md0​ 管理模式：​ -f: 标记指定磁盘为损坏​ -a: 添加磁盘​ -r: 移除磁盘​ -f: 显示过程​ 观察md的状态：cat /proc/mdstat​ 增加新的成员​ mdadm –G /dev/md0 –n4 -a /dev/sdf1​ 生成配置文件：mdadm –D –s >> /etc/mdadm.conf​ 停止设备：mdadm –S /dev/md0​ 激活设备：mdadm –A –s /dev/md0 激活​ 强制启动：mdadm –R /dev/md0​ 删除raid信息：mdadm --zero-superblock /dev/sdb1先将磁盘分为了五个大小相同的区使用/dev/sdb[1-2]，这两个区作为实验安装。查看RAID情况mdadm -Cv /dev/md0 -l0 -n2 /dev/sdb[1-2] #-Cv：创建并显示过程，-l0：级别为RAID0，-n2：使用两块盘区查看系统中存在的RAID停止并删除RAID，查看系统中的RAID情况mdadm --stop /dev/md0 mdadm --misc --zero-superblock /dev/sdb1 mdadm --misc --zero-superblock /dev/sdb2 cat /proc/mdstat组建RAID1如果有两块1T的硬盘，那么只能使用1T，因为有一块做备用盘。RAID1 称为镜像，它将数据完全一致地分别写到工作磁盘和镜像 磁盘，它的磁盘空间利用率为 50% 。 RAID1 在数据写入时，响应时间会有所影响，但是读数据的时候没有影响。 RAID1 提供了最佳的数据保护，一旦工作磁盘发生故障，系统自动从镜像磁盘读取数据，不会影响用户工作。工作原理如图 3 所示。创建RAID1，并查看信息mdadm -Cv /dev/md0 -l1 -n2 /dev/sdb[1-2] cat /proc/mdstat查看硬盘信息fdisk -l停止RAID1阵列，移除两个硬盘mdadm --stop /dev/md0 mdadm --misc --zero-superblock /dev/sdb1 mdadm --misc --zero-superblock /dev/sdb2 cat /proc/mdstat组建RAID5 RAID5 应该是目前最常见的 RAID 等级，它的原理与 RAID4 相似，区别在于校验数据分布在阵列中的所有磁盘上，而没有采用专门的校验磁盘。对于数据和校验数据，它们的写操作可以同时发生在完全不同的磁盘上。因此， RAID5 不存在 RAID4 中的并发写操作时的校验盘性能瓶颈问题。另外， RAID5 还具备很好的扩展性。当阵列磁盘 数量增加时，并行操作量的能力也随之增长，可比 RAID4 支持更多的磁盘，从而拥有更高的容量以及更高的性能。创建RAID5，并查看信息mdadm -Cv /dev/md0 -l5 -n3 /dev/sdb[1-3] cat /proc/mdstat查看阵列信息 mdadm -D /dev/md0格式化硬盘分区为ext4格式mkfs.ext4 /dev/md0挂载并验证 mount /dev/md0 /mnt/ df -h解挂载并删除设备umount /mnt/ mdadm --stop /dev/md0 mdadm --misc --zero-superblock /dev/sdb1 mdadm --misc --zero-superblock /dev/sdb2 mdadm --misc --zero-superblock /dev/sdb3RAID5运维操作mdadm -Cv /dev/md0 -l5 -n3 /dev/sdb[1-3] cat /proc/mdstat模拟硬盘故障mdadm -f /dev/md0 /dev/sdb1热移除故障盘 mdadm -r /dev/md0 /dev/sdb1组建RAID10RAID01 兼备了 RAID0 和 RAID1 的优点，它先用两块磁盘建立镜像，然后再在镜像内部做条带化。 RAID01 的数据将同时写入到两个磁盘阵列中，如果其中一个阵列损坏，仍可继续工作，保证数据安全性的同时又提高了性能。 RAID01 和 RAID10 内部都含有 RAID1 模式，因此整体磁盘利用率均仅为 50% 。典型的 RAID01 （上）和 RAID10 （下）模型构建RAID10并查看信息mdadm -Cv /dev/md0 -l10 -n4 /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb5删除RAID10mdadm --stop /dev/md0 mdadm --misc --zero-superblock /dev/sdb1 mdadm --misc --zero-superblock /dev/sdb2 mdadm --misc --zero-superblock /dev/sdb3 mdadm --misc --zero-superblock /dev/sdb5管理逻辑卷删除所有分区并格式化，内核重新读取分区并查看。fdisk /dev/sdb partx /dev/sdb创建物理卷组创建物理卷pvcreate /dev/sdb1 /dev/sdb2查看创建的物理卷，和查看物理卷的详细信息pvs pvdisplay扫描物理卷，创建物理卷组pvscan vgcreate myvg /dev/sdb[1-2] vgdisplay # 查看物理卷组的详细信息卷组删除删除myvg，重新创建并指定PE大小为16mvgremove myvg vgcreate -s 16m myvg /dev/sdb[1-2]删除PV并转移数据pvmove /dev/sdb1 vgreduce myvg /dev/sdb1 pvs添加物理卷向myvg添加一个物理卷/dev/sdb3，但是这个分区须提前分vgextend myvg /dev/sdb3创建逻辑卷名为mylv，大小5GBvcreate -L+5G -n mylv myvg lvs # 查看逻辑卷 lvscan # 扫描逻辑卷操作逻辑卷格式化并挂载mkfs.ext4 /dev/mapper/myvg-mylv mount /dev/mapper/myvg-mylv /mnt/ df -h卷组扩容lvextend -L+1G /dev/mapper/myvg-mylv # 对创建的LVM卷扩容 resize2fs /dev/mapper/myvg-mylv # 对文件系统进行扩容物理卷扩容，并再对逻辑卷扩容vgextend myvg /dev/sdb1 vgs lvextend -L+1G /dev/mapper/myvg-mylv resize2fs /dev/mapper/myvg-mylv df -h缩小卷组umount /mnt/ df -h lvreduce -L -3G /dev/mapper/myvg-mylv lvs此时需要重新格式化并挂载才能重新使用构建OpenStack云存储系统构建OpenStack私有云配置安装环境hostname controller # 临时修改主机名， vi /etc/sysconfig/network # 永久修改主机名，修改hostname为controller mount -o loop CentOS-6.5-x86_64-bin_DVD.iso /mnt/ mkdir /opt/centos cp -rfv /mnt/* /opt/centos/ umount /mnt/ # 卸载 mount -o loop XianDian-IaaS-v1.4.iso /mnt/ cp -rfv /mnt/ /opt/配置yum软件源vi /etc/yum.repos.d/local.repo # 写入以下 ---------------------------------------- [centos] name=centos baseurl=file:///opt/centos gpgcheck=0 enabled=1 [iaas] name=iaas baseurl=file///opt/iaas-repo gpgcheck=0 enabled=1 ----------------------------------------- yum clean all # 清除软件源 yum list # 查看软件包关闭防火墙 service iptables stop # 关闭返回去 chkconfig iptables off # 设置防火墙开机不启动关闭selinuxsetenforce 0 # 临时关闭 vi /etc/selinux/config # 永久关闭 # 设置SELINUX=permissive 安装iaas-xiandianyum install iaas-xiandian -y修改全局配置文件openrc.shvi /etc/xiandian/openrc.sh -----------------------------------------------------------------------------------------# #--------------------system config--------------------# #Controller Server Manager IP. example:x.x.x.x HOST_IP=192.168.100.10 #Controller Server hostname. example:controller HOST_NAME=controller #Compute Node Manager IP. example:x.x.x.x HOST_IP_NODE=192.168.100.10 #Compute Node hostname. example:compute HOST_NAME_NODE=controller #--------------------MySQL config---------------------## #Password for MySQL root user . exmaple:000000 DB_PASS=000000 #--------------------Keystone config------------------## #Password for Keystore admin user. exmaple:000000 ADMIN_PASS=000000 #Password for Mysql keystore user. exmaple:000000 KEYSTONE_DBPASS=000000 #--------------------Glance config--------------------## #Password for Mysql glance user. exmaple:000000 GLANCE_DBPASS=000000 #Password for Keystore glance user. exmaple:000000 GLANCE_PASS=000000 #--------------------Nova config----------------------## #Password for Mysql nova user. exmaple:000000 NOVA_DBPASS=000000 #Password for Keystore nova user. exmaple:000000 NOVA_PASS=000000 #--------------------Neturon config-------------------## #Password for Mysql neutron user. exmaple:000000 NEUTRON_DBPASS=000000 #Password for Keystore neutron user. exmaple:000000 NEUTRON_PASS=000000 #metadata secret for neutron. exmaple:000000 METADATA_SECRET=000000 #External Network Interface. example:eth1 INTERFACE_NAME=eth1 #First Vlan ID in VLAN RANGE for VLAN Network. exmaple:101 minvlan= #Last Vlan ID in VLAN RANGE for VLAN Network. example:200 maxvlan= #--------------------Cinder config--------------------## #Password for Mysql cinder user. exmaple:000000 CINDER_DBPASS=000000 #Password for Keystore cinder user. exmaple:000000 CINDER_PASS=000000 #Cinder Block Disk. example:md126p3 BLOCK_DISK=sdb1 #--------------------Swift config---------------------## #Password for Keystore swift user. exmaple:000000 SWIFT_PASS=000000 #The NO1. NODE Object Disk for Swift. example:md126p4. The 2nd will be OBJECT_DISK_2 OBJECT_DISK_1=sdc1 #The NO1. NODE IP for Swift Storage Network. example:x.x.x.x. The 2nd will be STORAGE_LOCAL_NET_IP_2 STORAGE_LOCAL_NET_IP_1=192.168.100.10 #The numbers of all the Swift Nodes. example:3 SWIFT_ZONE=1 #The number of this Swift Node. exmaple:1 SWIFT_NODE=1 #--------------------Heat config----------------------## #Password for Mysql heat user. exmaple:000000 HEAT_DBPASS=000000 #Password for Keystore heat user. exmaple:000000 HEAT_PASS=000000 #--------------------Ceilometer config----------------## #Password for Mysql ceilometer user. exmaple:000000 CEILOMETER_DBPASS=000000 #Password for Keystore ceilometer user. exmaple:000000 CEILOMETER_PASS=000000 #token for ceilometer. exmaple:000000 CEILOMETER_TOKEN=000000 #--------------------Sahara config--------------------## #Password for Mysql sahara user. exmaple:000000 SAHARA_DBPASS=000000 #Password for Keystore sahara user. exmaple:000000 SAHARA_PASS=000000 -----------------------------------------------------------------------------------------------安装Qpid服务yum install -y qpid-cpp-server vi /etc/qpidd.conf # 修改最后一行代码 # auth=no service qpidd start # 启动服务 chkconfig qpidd on # 开机自启安装基本服务# 安装mysql iaas-install-mysql.sh # 安装Glance服务 iaas-install-keystone.sh # 安装Nova计算服务 iaas-install-nova-controller.sh iaas-install-nova-compute.sh # 安装Neutron网络服务 iaas-install-neutron-controller.sh iaas-install-neutron-compute.sh # 网络可以选择gre模式 iaas-install-neutron-controller-gre.sh iaas-install-neutron-compute-gre.sh # 安装Dashboard服务 iaas-install-dashboard.sh验证安装在浏览器输入10.10.1.10/dashboard进入即可配置OpenStack对象存储安装Swift服务iaas-install-swift-controller.sh iaas-install-swift-compute.sh查看Swift状态swift stat查看容器swift list 创建容器swift post C1容器操作# 上传文件 swift upload C1 /etc/hosts # 删除文件 swift delete C1 /etc/hosts删除容器swift delete C1构建GlusterFS的分布式文件系统将glusterfs文件夹通过winscp上传到/opt目录下yum install -y createrepo # 在线安装索引生成工具 createrepo /opt/glusterfs # 将指定目录生成安装软件包索引配置YUM 源，在/etc/yum.repos.d 目录下，新建一个local.repo 文件，内容如下：[glusterfs] name=glusterfs baseurl=file///opt/glusterfs gpgcheck=0 enabled=1执行yum clean all，刷新软件包库安装glusterfs服务端和客户端yum install -y glusterfs-server xfsprogs service glusterfs start # 启动服务 chkconfig glusterfs on # 设置开机自启设置防火墙关闭，开机不自启service firewalld stop chkconfig firewalld off添加节点到GlusterFS服务器集群，并查看集群状态gluster peer probe 10.10.1.10 gluster peer probe 10.10.1.11 gluster peer status格式化磁盘并挂载目录fdisk /dev/sdb # 分一个区即可 mkdir /export/brick1/1在主节点创建共享副本卷创建共享副本卷，gv0为卷名称，可以自定义gluster volume create gv0 replica 2 10.10.1.10:/export/brick1/1 10.10.1.11:/export/brick1/1 gluster volume start gv0 # 启动卷 gluster volume info # 查看卷gv0的状态挂载副本卷mount -t glusterfs 172.168.1.105:/gv0 /mnt在主节点创建分布卷gluster volume create gv1 10.10.1.10:/export/brick1/2 10.10.1.11:/export/brick1/2 gluster volume start gv1挂载分布卷umount /mnt # 解挂载 mount -t glusterfs 10.10.1.10:/gv1 /mnt运维操作# 启动/关闭/查看glusterd服务 /etc/init.d/glusterd start /etc/init.d/glusterd stop /etc/init.d/glusterd status# Brick管理 gluster peer probe <SERVER> # 存储池添加服务器节点 gluster peer detach <SERVER> # 为存储池移除服务器节点 gluster volume add-brick gv1 10.10.1.10:/export/brick1/2 10.10.1.11:/export/brick1/2 # 列出集群中的所有卷： gluster volume list # 查看卷信息 gluster volume info # 查看卷信息 gluster volume status [all] # 查看卷状态 #创建/启动/停止/删除卷 gluster volume start <VOLNAME> # 创建卷 gluster volume stop <VOLNAME> # 停止卷 gluster volume delete <VOLNAME> # 删除卷 # 修复卷 gluster volume heal mamm-volume # 只修复有问题的卷 gluster volume heal mamm-volume full # 修复所有文件 gluster volume heal mamm-volume info # 查看自愈详情 # 数据重新分配 gluster volume rebalance datavolume1 start gluster volume rebalance datavolume1 status gluster volume rebalance datavolume1 stop # 卸载GlusterFS磁盘 gluster peer detach idc1-server4 # 删除GlusterFS磁盘 gluster volume stop datavolume1 gluster volume delete datavolume1 # 扩展卷 gluster volume add-brick <VOLNAME> <NEW-BRICK>构建Ceph分布式存储系统基础环境配置安装pve并安装cephpvecm create myclusters pvecm add (主机1 IP地址) # 主机二上执行 # 修改源 vi /etc/apt/sources.list # 打开后全部删除写入以下内容 ----------------------------------------------------------------------------------------- deb https://mirrors.aliyun.com/debian buster main contrib non-free deb https://mirrors.aliyun.com/debian buster-updates main contrib non-free deb https://mirrors.aliyun.com/debian-security buster/updates main contrib non-free deb https://mirrors.ustc.edu.cn/proxmox/debian/pve buster pve-no-subscription deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-octopus/ buster main ------------------------------------------------------------------------------------------ vi /etc/apt/sources.list.d/ceph.list # 打开后全部删除写入以下内容 deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-octopus/ buster main # 传递给主机2 scp -r /etc/apt/sources.list root@10.10.1.11:/etc/apt/sources.list安装ceph全部选择y修改vi etc/ceph/ceph.confvi /etc/ceph/ceph.conf # 修改public_network = 10.10.10.0/24创建ceph集群存储，两台主机均执行如下命令pveceph createmon # 创建Mon监控 pveceph createosd /dev/sdb # 创建ceph集群存储OSD服务创建poolsceph osd pool create myclusters 128 128 # 主机1执行添加RBD存储构建超融合架构基础环境配置修改所有虚拟机文件vi /etc/hosts 10.10.1.10 ceph-node1 10.10.1.11 ceph-node2 10.10.1.12 ceph-node3生成复制`ssh密钥ssh-keygen ssh-copy-id root@ceph-node2 ssh-copy-id root@ceph-node3禁用selinuxsetenforce 0 vi /etc/selinux/config sllinux->disablesd为所有服务器校时yum install -y ntp ntpdate ntpdate pool.ntp.org chkconfig ntpd on修改yum源，使用本地FTP源[centos] name=centos baseurl=file:///opt/centos gpgcheck=0 enabled=1 [iaas] name=iaas baseurl=file///opt/iaas-repo gpgcheck=0 enabled=1安装和配置Ceph创建ceph集群yum install ceph-deploy -y mkdir /etc/ceph cd /etc/ceph/ ceph-deploy new ceph-node1 ceph-deploy install ceph-node1 ceph-node2 ceph-node3查看版本信息ceph -v创建第一个Ceph monitor，并查看集群状态ceph-deploy --overwrite mon vreate-initial ceph -s创建OSD三个节点创建共享磁盘mkdir -p /opt/osd1 ssh ceph-node2 mkdir -p /opt/osd2 ssh ceph-node2 mkdir -p /opt/osd3在node1节点创建OSD节点ceph-deployosd prepare ceph-node1:/opt/osd1 ceph-node2:/opt/osd2 ceph-node3:/opt/osd3在node1激活节点ceph-deploy osd activate ceph-node1:/opt/osd1 ceph-node2:/opt/osd2 ceph-node3:/opt/osd3开放权限给其他节点，进行灾备处理ceph-deploy ceph-node1{1,2,3}ceph集群运维ceph status # 查看安装状态 ceph -w # 查看健康状态 ceph quorum_status --format json-petty # 查看Ceph monitor仲裁状态 ceph mon dump # 导出Ceph monitor信息 ceph df # 检查集群使用状态 ceph mon stat # 检查Ceph monitor 状态 ceph osd stat # 检查OSD状态 ceph pg stat # 检查PG配置组状态
交换机配置VLAN配置交换机LSW8命令undo terminal monitor # 关闭配置提示 system-view # 进入系统视图 vlan batch 2 3 # 创建两个vlan interface GigabitEthernet 0/0/1 # 进入端口1 port link-type access # 设置端口为access模式 port default vlan 2 # 配置默认vlan quit #进入系统视图 interface GigabitEthernet 0/0/2 # 进入接口2，与1同理 # 方式1，通过hybrid interface Ethernet 0/0/3 # 进入接口3 port link-type hybrid # 配置为hybrid port hybrid tagged vlan 2 to 3 # 通过的vlan为2和3 #方式2，通过trunk clear configuration interface GigabitEthernet 0/0/3 #清除端口3的配置 port link-type trunk # 配置端口类型为trunk port trunk allow-pass vlan all # 允许通过所有的vlan基于mac地址进行vlan划分vlan 2 # 进入vlan mac-vlan mac-address xx-xx-xx-xx # 绑定mac与vlan interface GigabitEthernet 0/0/1 # 进入接口1 mac-vlan enable # 打开mac绑定vlanGVRP配置一种通用属性注册协议，包含GVRP和GMRP。GVRP类似于思科的VTP协议。undo terminal monitor # 关闭配置提示 system-view # 进入系统视图 vlan batch 2 3 # 创建两个vlan gvrp # 全局使能GVRP interface GigabitEthernet 0/0/1 gvrp # 配置接口使能GVRP gvrp registration normal # GVRP注册模式为normal display gvrp statistics # 查看GVRP统计信息STP配置根网桥配置 system-view stp mode stp # 运行stp stp root primary # 配置根网桥备份网桥设置 system-view stp root secondary # 配置备份网桥 stp pathcost-standard legacy # 配置路径开销算法边缘 interface GigabitEthernet 0/0/1 stp edged-port enable # 设置为边缘端口 stp bpdu-filter enable # 启用BPDU报文过滤LSW：根网桥 LSW13：备份网桥 LSW11-12：边缘路由器配置DHCP服务器配置system-view dhcp enable # 开启dhcp ip pool pool1 # 创建地址池 network 10.10.10.0 mask 255.255.255.0 # 配置地址池 gateway-list 10.10.10.1 # 设置网关 lease day 0 hour 6 minute 0 3 # 设置租约 interface Ethernet 0/0/1 # 配置接口 dhcp select global # 在接口全局启用dhcp excluded-ip-address 10.10.10.3 # 排除这个地址 static-bind ip-address 10.10.10.2 mac-address xxxxxxxxxx # mac绑定ipDHCP 服务器中继dhcp relay server-ip ip # 配置DHCP中继所连接的DHCP服务器地址静态路由配置ip route-static 目的IP 子网掩码 下一跳 ip route-static 0.0.0.0 0.0.0.0 10.10.10.2 # 默认路由 ip route-static 0.0.0.0 32 10.10.10.2 ip route-static 0.0.0.0 32 s0动态路由路由协议有 RIP、OSPF、BGP、其他RIP在系统视图先rip # 进入rip undo summary # 取消路由聚合功能 network 10.10.10.0 # 宣告直连 version 2 # rip版本 quit bfd # 启用bfd rip 1 # 进入rip1 bfd all-interfaces enable # 全网段使用bfd bfd all-interfaces min-tx-interval 100 min-rx-interval 100 detect-multiplier 10 # 配置rip最小发送，接受bfd报文间隔和检测倍数OSPFsystem-view router id 1.1.1.1 #设置router id ospf # 设置ospf area 0 # 设置区域 network 10.10.10.0 0.0.0.255 # 宣告直连网段 # 宣告邻接网段 area 1 network 192.168.0.0 0.0.0.255 # 宣告邻接网段重发布rip #进入rip import-route ospf 109 cost 10 # 重发布ospf，但是开销不能太大，因为rip很小 import-route static # 重发布静态路由 q ospf 109 # 进入ospf import-route rip 1 cost 200 ----------------------------------------------------------------------- [思科] router rip redistribute ospf 109 10 router ospf 109 redistribute rip metric 200边界网关路由协议BGPsystem-view interface GigabitEthernet 0/0/1 ip address 10.10.10.1 24 q bgp 65009 router-id 2.2.2.2 peer 10.10.10.2 as-number 65009 peer 2.3.4.2 as-number 65008system-view interface GigabitEthernet 0/0/1 ip address 2.3.4.2 bgp 65008 router-id 1.1.1.1 peer 2.3.4.4 as-number 65009 #配置对等体引入路由# bgp视图下 ipv4-family unicast VRRPsystem-view interface GigabitEthernet 0/0/1 ip address 10.10.10.2 24 vrrp vrid 10 virtual-ip 10.10.10.3 vrrp vrid 10 priority 200 vrrp vrid 10 preempt-mode timer delay 10
压题密卷 在任何时候，一台主机有IP数据报文发送给另一台主机，它都要知道接收方的逻辑（IP）地址。但是IP地址必须封装成帧才能通过物理网络。这就意味着发送方必须有接收方的物理（MAC）地址，因此需要完成逻辑地址到物理地址的映射。而ARP协议可以接收来自IP协议的逻辑地址，将其映射为相应的物理地址，然后把物理地址递交给数据链路层。 任何时候，当主机需要找出这个网络中的另一个主机的物理地址时，它就可以发送一个ARP请求报文，这个报文包好了发送方的MAC地址和IP地址以及接收方的IP地址。因为发送方不知道接收方的物理地址，所以这个查询分组会在网络层中进行广播。（见图1） 局域网中的每一台主机都会接受并处理这个ARP请求报文，然后进行验证，查看接收方的IP地址是不是自己的地址，只有验证成功的主机才会返回一个ARP响应报文，这个响应报文包含接收方的IP地址和物理地址。这个报文利用收到的ARP请求报文中的请求方物理地址以单播的方式直接发送给ARP请求报文的请求方。（见图2） ARP报文的总长度为64字节。 ARP报文直接封装在数据链路帧中，例如，图4中，ARP分组被封装在以太网的帧中。注意，帧中的类型字段指出此帧所携带的数据是ARP报文。ARP请求ARP回复（1） 指令系统：RISC 设计者把主要精力放在那些经常使用的指令上，尽量使它们具有简单高效的特色。对不常用的功能，常通过组合指令来完成。因此，在RISC 机器上实现特殊功能时，效率可能较低。但可以利用流水技术和超标量技术加以改进和弥补。而CISC 计算机的指令系统比较丰富，有专用指令来完成特定的功能。因此，处理特殊任务效率较高。 （2） 存储器操作：RISC 对存储器操作有限制，使控制简单化；而CISC 机器的存储器操作指令多，操作直接。 （3） 程序：RISC 汇编语言程序一般需要较大的内存空间，实现特殊功能时程序复杂，不易设计；而CISC 汇编语言程序编程相对简单，科学计算及复杂操作的程序设计相对容易，效率较高。 （4） 中断：RISC 机器在一条指令执行的适当地方可以响应中断；而CISC 机器是在一条指令执行结束后响应中断。 （5） CPU：RISC CPU 包含有较少的单元电路，因而面积小、功耗低；而CISC CPU 包含有丰富的电路单元，因而功能强、面积大、功耗大。 （6） 设计周期：RISC 微处理器结构简单，布局紧凑，设计周期短，且易于采用最新技术；CISC 微处理器结构复杂，设计周期长。 （7） 用户使用：RISC 微处理器结构简单，指令规整，性能容易把握，易学易用；CISC微处理器结构复杂，功能强大，实现特殊功能容易。 （8） 应用范围：由于RISC 指令系统的确定与特定的应用领域有关，故RISC 机器更适合于专用机；而CISC 机器则更适合于通用机。 # 存在争议IIS（Internet Information Server，互联网信息服务）是一种Web（网页）服务组件，其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器，分别用于网页浏览、文件传输、新闻服务和邮件发送等方面，它使得在网络（包括互联网和局域网）上发布信息成了一件很容易的事。本文将向你讲述Windows 2000高级服务器版中自带的IIS 5.0的配置和管理方法。2019 上2019 下2018上存储技术基础无线基础知识网络规划与设计知识产权计算机硬件软件部分交换机基础VPN配置
Kali安装配置过程中的一些nt操作和坑安装过程中最后就选择安装的包，这个时候没有选择默认项自己选的。然后进去换源发现没有任何工具，我觉得kali的工具肯定是有源的。然后全网寻找发现了[em]apt install kali-linux-all[/em]但是当我输入的时候发现没有任何变化，这个时候我输入[hi]apt install kali-linux-[/hi]观察提示发现了[em]kali-linux-default[/em]输入无果又发现了[em]kali-linux-everything[/em]果断输入发现出现了kali的应用。没有驱动。WIFI在apt更新也是没有驱动，网上只有博通网卡的驱动。最后发现了英特尔官网有驱动。在官网驱动，寻找自己网卡的驱动包然后下载。 tar zxvf iwlwifi-9000-pu-b0-jf-b0-34.618819.0.tgz -C ./ #提取到当前目录 sudo cp iwlwifi-9000-pu-b0-jf-b0-34.618819.0/* /lib/firmware/ #复制到指定目录 sudo update-grub #更新grub完成所有的Win和Linux双系统的时间错乱问题那么为什么双系统切换之后系统的时间会错乱呢？ 先了解以下UTC以及GMT。 格林尼治标准时间（GMT，旧译“格林威治平均时间”或“格林威治标准时间”）是指位于伦敦郊区的皇家格林尼治天文台的标准时间，因为本初子午线被定义在通过那里的经线。 协调世界时(UTC) 英文：Coordinated Universal Time ，别称：世界统一时间，世界标准时间国际协调时间， 协调世界时，又称世界统一时间，世界标准时间，国际协调时间，简称UTC。 GMT（Greenwish Mean Time 格林威治平时），这是UTC的民间名称。GMT=UTC。 因为两个系统计算时间的方式是不一样的，Windows直接使用系统硬件的时间作为本地时间，即操作系统中显示的时间是使用的BIOS中的时间。 而Linux/Unix/Mac则是把硬件时间（BIOS中的时间）当作UTC，其操作系统中显示的时间是对硬件时间计算后得到的，比如说北京时间是GMT+8，则系统中显示时间是硬件时间+8。而Windows显示的是硬件时间，所以两个时间会发生错乱。解决办法：​ Win10 新建一个文本文档，例如在桌面上，然后将一下内容粘贴到新建的文本文档文件中，之后保存并重命名为*.bat，双击运行一次即可。@echo off color 0a Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1 echo.​ Linuxtimedatectl set-local-rtc 1 --adjust-system-clock安装deepin-wine，安装QQ的时候报错无法定位软件包：libappindicator3-1_libappindicator3-1软件包安装失败这个时候直接定位安装是错误的，如果直接安装这个包也是存在依赖问题整改时候需要安装两个包libindicator3-7和libappindicator3-1直接[em]dpkg -i 包名[/em]进行安装安装完com.qq.im.deepin后发现无法输入密码和账号。这个时候检测输入法是不是启用的非官方输入法，这个时候手动切换成官方的默认英文输入法就可以。安装NVIDIA显卡驱动，目前我发现无法使用nvidia-prime进行独显和核显的切换，安装完成后只能使用独显.。（目前网上所有的办法这个问题都是没有解决的，在看官方文档看看能不能解决这个问题）sudo apt install -y nvidia-driver nvidia-cuda-toolkit
多个域名指向同一个IP访问文件造成的跨域问题
IPv6域名去访问IPv4域名底下的js文件报错贴一个报错代码Access to XMLHttpRequest at 'http://wlsp.icu:81/usr/plugins/Pio/models/pio/model.moc' from origin 'http://bt.wlsp.icu' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. l2d.js:1 GET http://wlsp.icu:81/usr/plugins/Pio/models/pio/model.moc net::ERR_FAILED解决问题分析是由于浏览器发现请求不同域名拒绝服务造成的需要构造请求头来证明资源可以使用（服务器为nginx）server { listen 8999; listen 80; listen [::]:80; listen 9999; listen [::]:9999; listen [::]:8999; server_name 192.168.0.109 wlsp.icu bt.wlsp.icu; index index.php index.html index.htm default.php default.htm default.html; root /www/wwwroot/typecho; # 在nginx服务器中添加下列代码 add_header Access-Control-Allow-Origin *; # 允许访问的域名 add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS'; # 应该是允许访问的方法， add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';} # 解释 Access-Control-Allow-Origin 服务器默认是不被允许跨域的。给Nginx服务器配置`Access-Control-Allow-Origin *`后，表示服务器可以接受所有的请求源（Origin）,即接受所有跨域的请求。 Access-Control-Allow-Headers 是为了防止出现以下错误： Request header field Content-Type is not allowed by Access-Control-Allow-Headers in preflight response. 这个错误表示当前请求Content-Type的值不被支持。其实是我们发起了"application/json"的类型请求导致的。这里涉及到一个概念：预检请求（preflight request）,请看下面"预检请求"的介绍。 Access-Control-Allow-Methods 是为了防止出现以下错误： Content-Type is not allowed by Access-Control-Allow-Headers in preflight response. 给OPTIONS 添加 204的返回，是为了处理在发送POST请求时Nginx依然拒绝访问的错误 发送"预检请求"时，需要用到方法 OPTIONS ,所以服务器需要允许该方法。贴一下大佬博客