学习复习使用。只学习创建不同卷,不测试不同卷性能差别。

四个虚拟机进行测试

关闭防火墙 设置selinux为permissive

三个服务端
192.168.199.81 gluster-1
192.168.199.82 gluster-2
192.168.199.83 gluster-3

一个客户端 测试挂载卷
192.168.199.84 gluster-client

服务端每个服务器添加两块10G的硬盘并挂载用作 brick点。

硬盘挂载和gluster软件安装

硬盘挂载以gluster-1 为例
查看硬盘是否添加。 我的虚拟机上显示的/dev/sdb //dev/sdc 表示新加的两块硬盘设备。

设置挂载点

mkdir -p /gluster/disk1
mkdir -p /gluster/disk2

设置硬盘的文件格式 可以为 xfs ext2 ext3 ext4 等。选择xfs

mkfs.xfs /dev/sdb
mkfs.xfs /dev/sdc

将其写入 /etc/fstab 文件实现开机挂载

echo "/dev/sdb        /gluster/disk1  xfs     defaults        0 0" >> /etc/fstab
echo "/dev/sdc        /gluster/disk2  xfs     defaults        0 0" >> /etc/fstab

立即挂载 /etc/fstab 文件

mount -a

挂载完成查看

三个gluster服务节点都要设置

gluster使用yum 方式安装。

所有节点都要安装gluster源。版本选择6。41尽管是长期支持版本,但是似乎glusterfs-fuse 依赖库之类有冲突。。。

yum -y install centos-release-gluster6

三个服务端安装

yum -y install glusterfs-server

用户端安装

yum -y install glusterfs-fuse

只有在使用Infiniband时才需要安装RDMA模块。这应该是一个不同于tcp/ip的网络协议。。。

yum -y install glusterfs-rdma

glusterfs是基础包,也是服务软件和客户软件的依赖包。会自动安装。

服务端安装完成查看 安装软件。。。看着软件版本和源版本好像不一致。。。没关系。安装上就行。

rpm -qa | grep gluster

客户端安装完成查看 安装软件

rpm -qa | grep gluster


启动glusterd 守护进程,并设置开机自启

systemctl enable glusterd
systemctl start glusterd

配置受信任池
在gluster-1节点 将gluster-2 gluster-3加入受信任池。

gluster peer probe gluster-2
gluster peer probe gluster-3

测试安装不同卷。。。

brick: gluster基本存储单元,由受信任存储池中服务器上的导出目录表示。
brick通过以下格式将服务器与导出目录组合来表示。SERVER:EXPORT

myhostname:/exports/myexportdir/

创建卷命令
[] 表示可省略

gluster volume create <NEW-VOLNAME> [stripe <COUNT>] [replica <COUNT> [arbiter <COUNT>]] [disperse [<COUNT>]] [disperse-data <COUNT>] [redundancy <COUNT>] [transport <tcp|rdma|tcp,rdma>] <NEW-BRICK>... [force] - create a new volume of specified type with mentioned bricks

过于长。。。其实不是特别复杂。先放这里,不用太在意
transport <tcp|rdma|tcp,rdma> 这一块,表明使用的网络协议,默认是tcp。我想大多数人都使用的tcp协议吧。如果有使用其他网络协议的,那应该比我懂多了。。。

1.基础卷 Distribute(分布式卷)

分布式卷。这种类型卷数据没有冗余,只是将数据分布到不同的brick 中。也就是说数据没有备份。一旦数据丢失就真的丢失了。因此一般不常用。

默认创建不加额外参数就是 分布式卷
创建一个包含3个brick的分布式卷。卷名 gv-distributed

gluster volume create gv-distributed gluster-1:/gluster/disk1 gluster-2:/gluster/disk1 gluster-3:/gluster/disk1 force

末尾 加上force是因为我们直接将 挂载目录也就是brick导出目录设置数据存储点了,如果不想加force 可以设置

gluster volume create gv-distributed gluster-1:/gluster/disk1/brick gluster-2:/gluster/disk1/brick gluster-3:/gluster/disk1/brick

/gluster/disk1/brick中 brick目录不用我们手动创建。

开启卷,查看该卷信息

gluster volume start gv-distributed
gluster volume info


可以看到改卷类型是Distribute Brick数目是3 传输类型是tcp以及其他信息。

客户端挂载该卷并写入数据查看数据分布

mkdir /mnt/test-distributed
mount -t glusterfs gluster-1:gv-distributed /mnt/test-distributed/


测试写入文件

for i in `seq -w 1 100`; do cp -rp /var/log/messages /mnt/test-distributed/copy-test-$i; done

将message文件复制100份写入到挂载的目录。

成功后可以在gluster-1 gluster-2 gluster-3服务节点查看作为brick的硬盘中数据。

cd /gluster/disk1
ls

我的文件分布如下
gluster-1

gluster-2

gluster-3

数量上可能不是特别平均,但是也差不太多。分布式卷数据分布大概就是这样,将数据分布到不同的brick,没有副本备份。

2.基础卷 Replicate(复制卷)

在创建卷时写入类型 replica 和副本数量。且副本数量与组成改卷的brick数目一致的话就是 基础复制卷。可选 [arbiter ] 我也不知道什么用的(似乎是设置仲裁器的数量,防止脑裂)。以后学会了再来补充
最好是3副本以上,2副本容易造成脑裂。

创建一个由3brick组成的3副本复制卷。 卷名 gv-replicated

gluster volume create gv-replicated replica 3 gluster-1:/gluster/disk2 gluster-2:/gluster/disk2 gluster-3:/gluster/disk2 force

开启卷 查看卷信息

gluster volume start gv-replicated
gluster volume info gv-replicated


可以看到 卷类型是一个 复制卷 Brick数量1X3,3表示数据有3个副本。1表示分布式的数量,分布式数量为1表示数据只会分布在由这三个副本组成的副本群中。如果为2表示数据会分布在两个副本群中。

客户端挂载该卷并写入数据查看数据分布

mkdir /mnt/test-replicated
mount -t glusterfs gluster-1:gv-replicated /mnt/test-replicated/


可以看到复制卷的 容量约为10G 是3个brick 加起来的1/3。因为数据要有3份。
测试向该挂载卷写入数据

for i in `seq -w 1 100`; do cp -rp /var/log/messages /mnt/test-replicated/copy-test-$i; done

查看服务端查看作为brick的硬盘中数据。

cd /gluster/disk2
ls

gluster-1

gluster-2

gluster-3

三个brick的内容完全一致。。。因为是3副本复制卷。gluster会自动维护副本群中文件。

有时候可以手动恢复副本群中 文件不同的brick。比如 现在删除 gluster-1的brick中的copy-test-001 不会使用程序删除

cd /gluster/disk2
rm -f copy-test-001


可以看到删除成功。
客户端挂载点的 文件也少了一个。。。

重新挂载后文件正常。。。如果还不正常。
在三个服务节点任一个上执行命令来检查修复卷
gluster volume heal VOLNAME full

gluster volume heal gv-replicated full

客户端数据正常

服务节点数据恢复

不知什么原因 ,这样做未必真的有效,数据有时候可能并不会恢复。。。可能gluster修复的是异常问题导致的文件毁坏。手动执行检测可能不识别什么的。。。

3.基础卷 Stripe (条带卷)。4.0版本之后应该移除了。

不知道什么原因,gluster似乎移除了该类型卷。条带卷的意思将一个文件数据均匀的存储在构成卷的 brick 中。每个brick都存放的是文件的一部分,不是完整的文件。。。该类型卷优势是,读取大文件时,文件所在的不同brick同时读取文件,速度较快。
不过已经移除了。。。就不再多说了。相对应的复合卷什么的也就没了。

4.复合卷 Distributed Replicated(分布式复制卷)

前面说过,复制卷的副本数如果和组成该卷的brick 数量一致,那么就是一个基础副本卷。
如果组成改卷的brick数目是副本数的倍数,那么该卷就是一个分布式复制卷
注,一定要是倍数关系,brick少一个 多一个 卷的建立都会失败。。。
删除刚才的卷,准备测试创建新卷

gluster volume stop gv-distributed
gluster volume delete gv-distributedgluster volume stop gv-replicated
gluster volume delete gv-replicated

如果硬盘上面有数据,将硬盘数据也清除掉。
创建一个3副本 的分布式存储卷 卷名 gv-dis-rep

gluster volume create gv-dis-rep replica 3 gluster-1:/gluster/disk1 gluster-2:/gluster/disk1 gluster-3:/gluster/disk1 gluster-1:/gluster/disk2 gluster-2:/gluster/disk2 gluster-3:/gluster/disk2 force

由6个brick组成的三副本的分布式复制卷,在该卷中,

gluster-1:/gluster/disk1 gluster-2:/gluster/disk1 gluster-3:/gluster/disk1

互为副本,这三个brick中存储的数据一致。看做副本群1。三个brick的大小要一致。

gluster-1:/gluster/disk2 gluster-2:/gluster/disk2 gluster-3:/gluster/disk2

互为副本,这三个brick中存储的数据一致。看做副本群2。三个brick的大小要一致。

副本群1 和 副本群2 构成一个分布式,数据会比较均衡的分布在这两个副本群中。副本群1中brick和副本群2中brick大小可以不一致。。。但最好构成gluster集群的brick大小都是一致的为好。

开启卷,查看卷信息

构成该卷的brick有6个。2*3 3表示的就是副本的数量,2表示的分布式 的数量。

客户端挂载该卷并写入数据查看数据分布

挂载

mkdir /mnt/test-dis-rep
mount -t glusterfs gluster-1:gv-dis-rep /mnt/test-dis-rep


大小为20G,因为是两个副本群构成,每个副本群中brick大小都为10G。
依然是测试写入100个文件,查看 各个brick中文件分布。

for i in `seq -w 1 100`; do cp -rp /var/log/messages /mnt/test-dis-rep/copy-test-$i; done


查看各个brick 的文件存储状况

gluster-1 /gluster/disk1

gluster-2 /gluster/disk1

gluster-3 /gluster/disk1

gluster-1 /gluster/disk2

gluster-2 /gluster/disk2

gluster-3 /gluster/disk2

可以看到 前三个brick的内容一致,后三个brick内容一致。两个副本群中数据内容组合起来就是完整的数据内容。

下面说的两个卷 个人不是特别理解。因此放在了最后,根据官方文档来学习测试
https://docs.gluster.org/en/latest/Administrator%20Guide/Setting%20Up%20Volumes/

5. Dispersed(分散卷)。

应该与不再支持的的条带卷有那么一丝类似。。。

分散的卷是基于纠删码(erasure codes)的。它在卷中的多块brick中对文件的编码数据进行条带化,并添加了一些冗余。可以使用分散的卷具有一个可配置水平的可靠性和最小的空间浪费。

关于纠删码。。。一脸懵。估计以后也学不会。只要知道 分散卷基于纠删码,存在冗余。类似于纠删码中的冗余级别就可以了。

应该是。假设有一个6块brick组成的分散卷,如果冗余为2,那么就是最多可以允许两块brick损坏,实际可用的空间为4brick。最优值大概就是6个brick两个做冗余。

gluster volume create <NEW-VOLNAME>  [disperse [<count>]] [redundancy <count>] <NEW-BRICK>... [force]

可以通过指定 分散集的brick 数、 冗余的brick数 或者两个都指定 来创建分散卷。

  • 如果disperse未指定,或者缺少时,但是指定了redundancy count时,整个卷将被视为由命令行中枚举的所有brick组成的单个分散集。

  • 如果 冗余 的 brick数未指定。会自动机算出最优值。大约就是 2+1 4+2 这种的。如果最优值无法计算得出,冗余度默认设置为1。

  • disperse count 的数目中包含了冗余的数目。

  • 如果指定disperse和 disperse 的count时。命令行列出的brick的数量一定是disperse count 的倍数。可以相等,那就是单个的分散卷。

删除掉之前的卷。测试创建一个由3个brick 构成的,disperse count 为3,冗余brick为1(redundancy 1)的的分散卷 gv-disperse。

gluster volume create gv-disperse disperse 3 redundancy 1 gluster-1:/gluster/disk1 gluster-2:/gluster/disk1 gluster-3:/gluster/disk1 force

指定了分散集 brick 数为3 冗余brick为1 一共由三个brick组成,这就是一个单一的分散卷。

可以看到该卷信息。构成该卷的brick数 1X(2+1)=3
1个冗余brick 分散集brick 数为3。是一个单一的分散卷。

如此指定的话创建方式可以 省略分散集的 count 。结果是一样的。

gluster volume create gv-disperse disperse  redundancy 1 gluster-1:/gluster/disk1 gluster-2:/gluster/disk1 gluster-3:/gluster/disk1 force

disperse 也可以省略。看到 redundancy 关键字 gluster也会知道在创建分散卷。

 gluster volume create gv-disperse redundancy 1 gluster-1:/gluster/disk1 gluster-2:/gluster/disk1 gluster-3:/gluster/disk1 force

不指定 disperse count 的话默认就是创建单一分散卷。由所有brick构成一个分散集群。

可以不指定redundancy 1 只设置关键字disperse,会自动计算冗余brick,有三个brick的话,自动计算结果应该也是1。

gluster volume create gv-disperse disperse gluster-1:/gluster/disk1 gluster-2:/gluster/disk1 gluster-3:/gluster/disk1 force

客户端挂载该卷并写入数据查看数据分布

mkdir /mnt/test-disperse
mount.glusterfs gluster-1:gv-disperse /mnt/test-disperse


存入数据。。。

for i in `seq -w 1 100`; do cp -rp /var/log/messages /mnt/test-disperse/copy-test-$i; done


查看各个brick中数据

gluster-2 和 gluster-3的数据也是一样。看上去好像是复制卷一样啊。
看文件名是一致的,但是文件内容就不一样了。这些文件并不是一个完整的文件。
它在卷中的多块brick中对文件的编码数据进行条带化,并添加了一些冗余。
分散卷数据存储是 条带化存储的,单个并不是完整文件。另分散卷是基于纠删码的。这个原理确实有点复杂,我也不清楚数据到底怎么存储的。。。

对于分散卷。。。知道如何使用就可以了吧。。。

6. Distributed Dispersed(分布式分散卷)

可以看做多个不同的分散集群构成一个分布式的卷。每一个分散集群保存维护一份数据,多个集群构成完整的数据。
创建上与单一分散卷创建类似,只不过要设置 分散集群的brick数目。且构成分布式分散卷的brick 数目是 分散集群群brick数目的倍数。至少2倍。redundancy count的设置依然是根据 分散集群brick数目( disperse count)设置的。

设置一个6个brick构成的分布式分散卷gv-dis-dis,分散集群brick 数目为3 冗余为1。

gluster volume create gv-dis-dis disperse 3 redundancy 1 gluster-1:/gluster/disk1 gluster-2:/gluster/disk1 gluster-3:/gluster/disk1 gluster-1:/gluster/disk2 gluster-2:/gluster/disk2 gluster-3:/gluster/disk2 force
gluster volume start gv-dis-dis
gluster volume info gv-dis-dis


2X(2+1)=6 6个brick构成分布式分散卷。2+1 是每个分散集群有三个brick 其中一个作为冗余。 一共由两个 这样构造的 分散集群。

前面说过 gluster会自动计算冗余的brick数量。因此如此设置也是可以的
不设置冗余数

gluster volume create gv-dis-dis disperse 3 gluster-1:/gluster/disk1 gluster-2:/gluster/disk1 gluster-3:/gluster/disk1 gluster-1:/gluster/disk2 gluster-2:/gluster/disk2 gluster-3:/gluster/disk2 force

客户端挂载该卷并写入数据查看数据分布

 mkdir /mnt/test-dis-dismount.glusterfs gluster-1:gv-dis-dis /mnt/test-dis-dis

for i in `seq -w 1 100`; do cp -rp /var/log/messages /mnt/test-dis-dis/copy-test-$i; done

查看分布式分散群 文件分布

gluster-1:/gluster/disk1 gluster-2:gluster/disk1 gluster-3:/gluster/disk1 构成了一个分散集群。三个brick使用纠删码的方式保存数据。
gluster-1:/gluster/disk2 gluster-2:gluster/disk2 gluster-3:/gluster/disk3 构成另外的分散集群。三个brick使用纠删码的方式保存数据。
这两个分散集群 加起来构成了完整的数据。。。

卷扩容。卷收缩。卷迁移。

内容比较乱。。。将就着看。
所谓卷扩容,就是向原来卷中加入新的brick。
卷收缩,就是减少卷中的brick。
卷迁移 将一个brick中数据迁移到另一个中。应该是brick替换。

gluster volume help

查看卷操作帮助。

不管是扩容还是缩容执行前要明确增减的brick数是否可以构成新的平衡。

分布式卷扩容。

使用卷扩容前要明了原卷的构成,新加brick数与扩容的类型。

测试由3分布式扩展到6分布式。4或者5也是可以的。。。纯分布式存储方式brick之间关系没有那么密切。
三分不是复制卷信息

假设其中有一定量数据。。。

假设一次添加三个brick,那么构成该卷的就是6个brick,原卷类型是纯分布式卷,可以扩展成 6个brick 的纯分布式卷,或者2副本的分布式存储卷。。。中间如果需要数据迁移,gluster会自动完成。如果不需要迁移数据也能完成,gluster不会迁移数据。

首先测试扩展成6 brick的纯分布式卷

gluster volume add-brick gv-distribute gluster-1:/gluster/disk2 gluster-2:/gluster/disk2 gluster-3:/gluster/disk2 force

查看卷信息

gluster volume info gv-distribute


查看新增brick 中数据。。。发现为空

手动进行数据均衡

gluster volume rebalance VOL_NAME start

需要耗费一段时间

gluster volume rebalance gv-distribute start

再次查看新增brick中数据

纯分布式复制卷不能实现数据迁移。。。测试一下brick删除。

gluster volume remove-brick gv-distribute gluster-1:/gluster/disk2 start


可以看到,执行过程中要确认。删除完成后查看卷信息,发现还是6个brick。因为删除比较麻烦,start 后还要commit 提交。

gluster volume remove-brick gv-distribute gluster-1:/gluster/disk2 commit


在这个过程中可以查看删除状态

gluster volume remove-brick gv-distribute gluster-1:/gluster/disk2 status

直接使用 force的话,直接从卷中去除该brick,数据会直接丢失。其实该brick中的数据没有被删除(只不过不在卷中了,卷上当然就找不到这些数据)。。。start + commit 会先将该brick中数据迁移到其它地方,然后移除该brick。

gluster volume remove-brick gv-distribute gluster-1:/gluster/disk2 force

分布式卷扩容成分布式复制卷。

先将卷使用各种方法还原成 3个brick的分布式卷。测试扩容成2副本分布式复制卷 因为现在是一个3 分布式的,如果要设置成3副本,需要新增6个brick

gluster volume remove-brick gv-distribute gluster-2:/gluster/disk2 start
gluster volume remove-brick gv-distribute gluster-2:/gluster/disk2 commit
gluster volume remove-brick gv-distribute gluster-3:/gluster/disk2 start
gluster volume remove-brick gv-distribute gluster-3:/gluster/disk2 commit

测试新增brick扩容卷 使成为2副本分布式复制卷

gluster volume add-brick gv-distribute replica 2 gluster-1:/gluster/disk2 gluster-2:/gluster/disk2 gluster-3:/gluster/disk2 force


新增brick中是有数据的,与之前存在的brick一一互为副本。
gluster-1:/gluster/disk1 与 gluster-1:/gluster/disk2
gluster-2:/gluster/disk1 与 gluster-2:/gluster/disk2
gluster-3:/gluster/disk1 与 gluster-3:/gluster/disk2

测试卷迁移 brick替换

互为副本之间的brick数据是不能迁移的。。。且副本中有一个brick数据迁移了,会影响另外的副本数据。与之保持一致。
还是直接叫 brick替换好一点。卷迁移不明确。。。

纯分布式卷是不能进行 brick替换的

volume replace-brick: failed: replace-brick is not permitted on distribute only volumes. Please use add-brick and remove-brick operations instead.

brick替换就是使用一块新的brick替换掉原来的brick。原来的brick退出卷。新增的brick加入该卷。

准备一个 3副本的纯复制卷。写入一定量数据

disk2 内数据 为空,disk1 内存放数据

brick 替换 使用 gluster-1:/gluster/disk2 替换 gluster-1:/gluster/disk1

gluster volume replace-brick gv-replicate gluster-1:/gluster/disk1 gluster-1:/gluster/disk2 commit force

卷信息

构成复制卷的brick 发生了变化

数据迁移

disk2 中写入了数据,disk1 中数据没有删除,但是disk1 已经不是构成卷的brick了。其中数据对卷不会有任何影响。。。

将复制卷扩展成分布式复制卷。

先将brick替换回来。依然是一个3副本的复制卷。

gluster volume replace-brick gv-replicate gluster-1:/gluster/disk2 gluster-1:/gluster/disk1 commit force

只是为了看着舒服。。。

[root@gluster-1 ~]# gluster volume infoVolume Name: gv-replicate
Type: Replicate
Volume ID: e44da150-3767-4cc1-be18-a2a9136a7918
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 3 = 3
Transport-type: tcp
Bricks:
Brick1: gluster-1:/gluster/disk1
Brick2: gluster-2:/gluster/disk1
Brick3: gluster-3:/gluster/disk1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off
[root@gluster-1 ~]#

将 /gluster/disk2中文件数据清空

rm -f /gluster/disk2/*

3副本复制卷不能变成2副本。不知道2副本复制卷可不可以变成3副本
3副本复制卷可扩展为 分布式 3 副本复制卷。

gluster volume add-brick gv-replicate gluster-1:/gluster/disk2 gluster-2:/gluster/disk2 gluster-3:/gluster/disk2 force

设置nfs 挂载

使用 NFS-Ganesha 软件
安装 三个节点都要安装

yum -y install nfs-ganesha nfs-ganesha-gluster

编辑配置文件 /etc/ganesha/ganesha.conf 基本全部是注释。。

vim  /etc/ganesha/ganesha.conf

将配置添加到末尾即可
三个节点不同的地方可能是 FSAL中的 Hostname

EXPORT
{Export_Id = 1 ;Path = "/vol-test-path";Pseudo = "/vol-test-pseudo";Disable_ACL = True;Protocols = "3","4";Access_Type = RW;Squash = No_root_squash;Sectype = "sys";Transports = "UDP","TCP";FSAL {Name = "GLUSTER";Hostname = "gluster-3";Volume = "gv-dis-rep";}
}

FSAL定义的是准备导出的gluster的volume
Volume 是 卷名
Hostname 是 主机名 不同主机是不同的
Name 是 应该准备导出卷 卷格式 GLUSTER

Path 指定 nfs共享目录位置(指定NFS挂载时挂载该目录,通过该目录挂载了 Gluster的导出卷,内部该目录怎么指向 Gluster卷的,暂时就不是我要了解的了)。 不同的主机指定的 path 路径可以不一致,nfs-ganesha 不是集群服务,是单个主机为Gluster提供的 nfs 挂载服务。

Pseudo 不确定作用。

启动nfs-ganesha 服务

systemctl start nfs-ganesha

查看 nfs-ganesha日志

tail -f /var/log/ganesha/ganesha.log

查看 挂载

showmount -e gluster-3


client 端 安装nfs 即可使用nfs 挂载。该导出目录
创建挂载点

mkdir /mnt/test-gluster-nfs

查看gluster-3 的导出目录

showmount -e gluster-3

挂载该点

mount -t nfs gluster-3:/vol-test-path /mnt/test-gluster-nfs/
df -h

杂项

设置开机自动挂载gluster卷

编辑/etc/fstab 文件 如下 大概格式如下

gluster:cloud-second /export/secondary/ glusterfs defaults,_netdev      0 0

gluster:卷名 挂载点 glusterfs defaults,_netdev 0 0

学习Gluster创建不同卷,设置NFS挂载相关推荐

  1. 【AIX 命令学习】创建逻辑卷!

    用途 创建逻辑卷. 语法 mklv [ -a Position ] [ -b BadBlocks ] [ -c Copies ] [ -C Stripe_width ] [ -d Schedule ] ...

  2. 项目管理工具project软件学习(五) - 创建WBS、设置任务依赖关系

    1. 任务模式,设置自动计划.首先打开project软件,创建空白项目,先把新任务设置成[自动计划],有以下两种方案: 方案一: 左下角点击改成[自动计划] 方案二: [文件->选项->日 ...

  3. linux uboot nfs启动,嵌入式uboot,内核启动通过nfs挂载根文件系统

    概述 嵌入式移植学习第二个内容,通过nfs挂载根文件系统.也是自己第一次做,也遇到了一些问题,但最后还是都解决了.在此记录一下整个流程,也希望能够给别的初学者一个参考. 系统环境 PC端 linux ...

  4. 如何进行Tuxera NTFS的挂载卷设置?实现MacOS对NTFS磁盘的完全读写功能

    什么是挂载呢?挂载指的是将系统存储设备上的文件.文件夹等转变为用户可访问状态的一个过程.而Tuxera NTFS for Mac的挂载指的是对MacOS系统内NTFS磁盘进行完全读写的功能. 对于Tu ...

  5. 小型NAS搭建实例②——ubuntu server 的一些设置,包含NFS挂载,CIFS挂载,常用工具安装

    ubuntu server 的一些设置 ubuntu server 的一些设置 登录 开启ssh 的root 登录 切换root 设置root密码 安装vim编辑器 修改ssh服务的配置文件 重启ss ...

  6. Centos6.7创建逻辑卷挂载1T机械硬盘

    今天公司需要,做一个SVN服务器,然后安装Centos系统,服务器的硬盘是固态硬盘+1T机械硬盘 然后就把系统安装到固态硬盘中去了,采用的自动分区,安装过程不再赘述,网上已有大把的教程了 一.先扔一个 ...

  7. 1. 创建逻辑卷vshare,卷组的名称为devgroup,PE的大小为16M,共使用50个PE块,文件系统为vfat,要求永久挂载到/mnt/vshare目录下。

    1. 创建逻辑卷vshare,卷组的名称为devgroup,PE的大小为16M,共使用50个PE块,文件系统为vfat,要求永久挂载到/mnt/vshare目录下. 创建分区 创建一个大小为 16*5 ...

  8. 启动rrt什么意思_python学习第144课--创建虚拟机、设置虚拟机参数以及启动虚拟机...

    [每天几分钟,从零入门python编程的世界!] 上节我们介绍了下载虚拟机以及centOS的相关事项,现在我们创建虚拟机. ●创建虚拟机 安装好virtualbox之后,我们点击Oracle VM V ...

  9. Solaris下设置nfs与nfs挂载

    原文写于2010-09-07 20:39:20,网易博客,已删    nfs(network file system)可以使一个目录被共享,类似于windows下的文件共享,不过nfs共享只能在uni ...

最新文章

  1. 查看mysql数据库及表编码格式
  2. 使用 IntraWeb (31) - IntraWeb 的 Xml 操作使用的是 NativeXml
  3. 再观手游市场新风口-二次元游戏
  4. 简单谈谈5G/C-V2X技术与自动驾驶的关系
  5. 【十二省联考】春节十二响【贪心】【堆】【启发式合并】
  6. Node.js 应用故障排查手册 —— 综合性 GC 问题和优化
  7. SQL 获取指定月份的天数
  8. Vivado入门创建工程之----自定义ip及其使用
  9. cli php 增强包_Linux 上安装 PHP 扩展
  10. rGPCCON=(rGPCCON|0x00000005)的计算结果
  11. 使用模板匹配方法检测苹果缺陷
  12. 华为路由器OSPF多区域配置
  13. sql语句语法数据定义语句alter table
  14. js-排序-对象key自动排序问题
  15. C ——进程内存(内存管理、内存分配(brk,sbrk、mmap、munmap)、内存常见错误)
  16. AutoCAD下载的具体步骤:个人用户AutoCAD下载安装指南
  17. python 编辑器 pycharm
  18. 《Diffusion Curves: A Vector Representation for Smooth-Shaded Images》翻译
  19. Java去掉文件中的逗号
  20. NOKIA 5110屏幕驱动

热门文章

  1. Visual studio解决方案管理器找不到了怎么办
  2. 生物信息学习--nr/nt 数据库(总+子)构建
  3. 2020.3.31Java学习笔记
  4. new relic_Datadog,SignalFX,New Relic,Wavefront –您应该选择哪个仪表板?
  5. 设计师都爱用的UI标注软件有哪些?
  6. Ubuntu18.04安装分析
  7. 汇编c语言基础教程编程达人,编程达人 《汇编、C语言基础教程》第二章 汇编基础2.2 寄存器...
  8. 算数运算,逻辑运算,算术右移,逻辑右移
  9. jqGrid双击事件,并获取双击行的各个属性值
  10. M - Help Hanzo