Speeding up recovery
by Indivar Nair
Hi ...,
Currently, Failover and Recovery takes a very long long time in our setup;
almost 20 Minutes. We would like to make it as fast as possible.
I have two queries regarding this -
1.
===================================================
The MGS and MDT are on the same host.
We do however have a passive stand-by server for the MGS/MDT server, which
only mounts these partitions in case of a failure.
*Current Setup*
Server A: MGS+MDT
Server B: Failover MGS+MDT
I was wondering whether I can now move the MGS or MDT Partition to the
standby server (so that imperative recovery works properly) -
*New Setup*
Server A: MDT & *Failover MGS*
Server B: *MGS* & Failover MDT
*OR*
Server A: *MGS* & Failover MDT
Server B: MDT & *Failover MGS*
i.e.
*Can I separate the MDT and MGS partitions on to different machines without
formatting or reinstalling Lustre?*
===================================================
2.
===================================================
This storage is used by around 150 Workstations and 150 Compute (Render)
Nodes.
Out of these 150 workstations, around 30 - 40 are MS Windows. The MS
Windows clients access the storage through a 2-node Samba Gateway Cluster.
The Gateway Nodes are connected to the storage through a QDR Infiniband
Network.
We were thinking of adding NFS Service to the Samba Gateway nodes, and
reconfiguring the Linux clients to connect via this gateway.
This will bring down the direct Lustre Clients to just 2 nodes.
*So, will having only 2 clients improve the failover-recovery time?*
===================================================
Is there anything else we can do to speed up recovery?
Regards,
Indivar Nair
6 years, 9 months
[PATCH 5/5] staging: lustre: Remove unnecessary braces {} for single statement blocks
by Incarnation P. Lee
From: "Pan Li" <incarnation.p.lee(a)outlook.com>
Remove unnecessary braces {} for single line statement blocks.
Signed-off-by: Pan Li <incarnation.p.lee(a)outlook.com>
---
drivers/staging/lustre/lustre/obdclass/cl_page.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/staging/lustre/lustre/obdclass/cl_page.c b/drivers/staging/lustre/lustre/obdclass/cl_page.c
index 1f6ca7c..0f34171 100644
--- a/drivers/staging/lustre/lustre/obdclass/cl_page.c
+++ b/drivers/staging/lustre/lustre/obdclass/cl_page.c
@@ -376,9 +376,8 @@ static struct cl_page *cl_page_find0(const struct lu_env *env,
idx) == page));
}
- if (page != NULL) {
+ if (page != NULL)
return page;
- }
/* allocate and initialize cl_page */
page = cl_page_alloc(env, o, idx, vmpage, type);
--
1.9.0
6 years, 9 months
[PATCH 5/5] Remove unnecessary braces {} for single statement blocks
by Incarnation P. Lee
From: "Pan Li" <incarnation.p.lee(a)outlook.com>
Remove unnecessary braces {} for single line statement blocks.
Signed-off-by: Pan Li <incarnation.p.lee(a)outlook.com>
---
drivers/staging/lustre/lustre/obdclass/cl_page.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/staging/lustre/lustre/obdclass/cl_page.c b/drivers/staging/lustre/lustre/obdclass/cl_page.c
index 1f6ca7c..0f34171 100644
--- a/drivers/staging/lustre/lustre/obdclass/cl_page.c
+++ b/drivers/staging/lustre/lustre/obdclass/cl_page.c
@@ -376,9 +376,8 @@ static struct cl_page *cl_page_find0(const struct lu_env *env,
idx) == page));
}
- if (page != NULL) {
+ if (page != NULL)
return page;
- }
/* allocate and initialize cl_page */
page = cl_page_alloc(env, o, idx, vmpage, type);
--
1.9.0
6 years, 9 months
[PATCH 4/5] staging: lustre: Remove a trailing */ of a separate line.
by Incarnation P. Lee
From: "Pan Li" <incarnation.p.lee(a)outlook.com>
Remove a trailing */ of a separate comments block line.
Signed-off-by: Pan Li <incarnation.p.lee(a)outlook.com>
---
drivers/staging/lustre/lustre/obdclass/cl_page.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/staging/lustre/lustre/obdclass/cl_page.c b/drivers/staging/lustre/lustre/obdclass/cl_page.c
index ec21f2b..1f6ca7c 100644
--- a/drivers/staging/lustre/lustre/obdclass/cl_page.c
+++ b/drivers/staging/lustre/lustre/obdclass/cl_page.c
@@ -354,8 +354,10 @@ static struct cl_page *cl_page_find0(const struct lu_env *env,
idx, PFID(&hdr->coh_lu.loh_fid), vmpage, vmpage->private, type);
/* fast path. */
if (type == CPT_CACHEABLE) {
- /* vmpage lock is used to protect the child/parent
- * relationship */
+ /*
+ * vmpage lock is used to protect the child/parent
+ * relationship
+ */
KLASSERT(PageLocked(vmpage));
/*
* cl_vmpage_page() can be called here without any locks as
--
1.9.0
6 years, 9 months
[PATCH 3/5] staging: lustre: Add a blank line after declarations.
by Incarnation P. Lee
From: "Pan Li" <incarnation.p.lee(a)outlook.com>
Add a blank line after local variable declarations.
Signed-off-by: Pan Li <incarnation.p.lee(a)outlook.com>
---
drivers/staging/lustre/lustre/obdclass/cl_page.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/staging/lustre/lustre/obdclass/cl_page.c b/drivers/staging/lustre/lustre/obdclass/cl_page.c
index 7c86437..ec21f2b 100644
--- a/drivers/staging/lustre/lustre/obdclass/cl_page.c
+++ b/drivers/staging/lustre/lustre/obdclass/cl_page.c
@@ -169,6 +169,7 @@ int cl_page_gang_lookup(const struct lu_env *env, struct cl_object *obj,
while ((nr = radix_tree_gang_lookup(&hdr->coh_tree, (void **)pvec,
idx, CLT_PVEC_SIZE)) > 0) {
int end_of_region = 0;
+
idx = pvec[nr - 1]->cp_index + 1;
for (i = 0, j = 0; i < nr; ++i) {
page = pvec[i];
@@ -286,6 +287,7 @@ static struct cl_page *cl_page_alloc(const struct lu_env *env,
GFP_NOFS);
if (page != NULL) {
int result = 0;
+
atomic_set(&page->cp_ref, 1);
if (type == CPT_CACHEABLE) /* for radix tree */
atomic_inc(&page->cp_ref);
--
1.9.0
6 years, 9 months
[PATCH 2/5] staging: lustre: Adjust code indent for macro and tail blackslash
by Incarnation P. Lee
From: "Pan Li" <incarnation.p.lee(a)outlook.com>
Adjust code indent for macro with tab, as well as tail blackslash.
Signed-off-by: Pan Li <incarnation.p.lee(a)outlook.com>
---
drivers/staging/lustre/lustre/obdclass/cl_page.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/staging/lustre/lustre/obdclass/cl_page.c b/drivers/staging/lustre/lustre/obdclass/cl_page.c
index 4def881..7c86437 100644
--- a/drivers/staging/lustre/lustre/obdclass/cl_page.c
+++ b/drivers/staging/lustre/lustre/obdclass/cl_page.c
@@ -51,12 +51,12 @@
static void cl_page_delete0(const struct lu_env *env, struct cl_page *pg,
int radix);
-# define PASSERT(env, page, expr) \
- do { \
- if (unlikely(!(expr))) { \
- CL_PAGE_DEBUG(D_ERROR, (env), (page), #expr "\n"); \
- LASSERT(0); \
- } \
+# define PASSERT(env, page, expr) \
+ do { \
+ if (unlikely(!(expr))) { \
+ CL_PAGE_DEBUG(D_ERROR, (env), (page), #expr "\n"); \
+ LASSERT(0); \
+ } \
} while (0)
# define PINVRNT(env, page, exp) \
--
1.9.0
6 years, 9 months
[PATCH 1/5] staging: lustre: Replace spaces at the start of a line.
by Incarnation P. Lee
From: "Pan Li" <incarnation.p.lee(a)outlook.com>
Replace the spaces at the start of a line with tab for indent.
Signed-off-by: Pan Li <incarnation.p.lee(a)outlook.com>
---
drivers/staging/lustre/lustre/obdclass/cl_page.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/staging/lustre/lustre/obdclass/cl_page.c b/drivers/staging/lustre/lustre/obdclass/cl_page.c
index 282ae73..4def881 100644
--- a/drivers/staging/lustre/lustre/obdclass/cl_page.c
+++ b/drivers/staging/lustre/lustre/obdclass/cl_page.c
@@ -52,12 +52,12 @@ static void cl_page_delete0(const struct lu_env *env, struct cl_page *pg,
int radix);
# define PASSERT(env, page, expr) \
- do { \
+ do { \
if (unlikely(!(expr))) { \
CL_PAGE_DEBUG(D_ERROR, (env), (page), #expr "\n"); \
LASSERT(0); \
} \
- } while (0)
+ } while (0)
# define PINVRNT(env, page, exp) \
((void)sizeof(env), (void)sizeof(page), (void)sizeof !!(exp))
--
1.9.0
6 years, 9 months
[PATCH 0/5] staging: lustre: Fix a file 8 warnings of coding sytle.
by Incarnation P. Lee
From: "Pan Li" <incarnation.p.lee(a)outlook.com>
Fix file cl_page.c 8 coding style warning issues as follow:
Replace spaces at the start of a line.
Adjust code indent for macro and tail blackslash
Add a blank line after declarations.
Remove a trailing */ of a separate line.
Remove unnecessary braces {} for single statement blocks
drivers/staging/lustre/lustre/obdclass/cl_page.c | 25 +++++++++++++-----------
1 file changed, 14 insertions(+), 11 deletions(-)
--
1.9.0
6 years, 9 months
Extended Lustre testing
by Drokin, Oleg
Hello!
Last LUG and at other events I have been getting questions about additional testing I perform on Lustre patches before accepting them. While explaining it in general in person when asked, I finally came up with a written Howto
that I placed in the wiki at http://wiki.lustre.org/Testing_Setup_To_Induce_Race_Conditions
Now, I've been doing this for a couple of years, so certain details that are obvious for me and I take for granted might be less obvious for people exposed to all of this for the first time. So now might be a good time to
ask away your questions so that the document could be improved.
Also, I wanted some visibility for this addition in the hopes that more people would start doing stuff like this and perhaps even enhance the technique so that the Lustre becomes even more stable and robust.
And additionally it would be great if others share their own cool testing techniques that might be deployed by others.
Thanks.
Bye,
Oleg
6 years, 9 months
[PATCH 5/5] staging: lustre: Adjust code indent for macro.
by Incarnation P. Lee
From: "Pan Li" <incarnation.p.lee(a)outlook.com>
Adjust code indent for macro, within tabs at the start and space in front of '\' for indent.
Signed-off-by: Pan Li <incarnation.p.lee(a)outlook.com>
---
drivers/staging/lustre/lustre/obdclass/cl_page.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/staging/lustre/lustre/obdclass/cl_page.c b/drivers/staging/lustre/lustre/obdclass/cl_page.c
index 4cc17d3..428c6b2 100644
--- a/drivers/staging/lustre/lustre/obdclass/cl_page.c
+++ b/drivers/staging/lustre/lustre/obdclass/cl_page.c
@@ -51,12 +51,12 @@
static void cl_page_delete0(const struct lu_env *env, struct cl_page *pg,
int radix);
-# define PASSERT(env, page, expr) \
- do { \
- if (unlikely(!(expr))) { \
- CL_PAGE_DEBUG(D_ERROR, (env), (page), #expr "\n"); \
- LASSERT(0); \
- } \
+# define PASSERT(env, page, expr) \
+ do { \
+ if (unlikely(!(expr))) { \
+ CL_PAGE_DEBUG(D_ERROR, (env), (page), #expr "\n"); \
+ LASSERT(0); \
+ } \
} while (0)
# define PINVRNT(env, page, exp) \
--
1.9.0
6 years, 9 months