This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<Version>0.1</Version>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.4" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -0,0 +1,104 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace CheckEVS
|
||||
{
|
||||
public class Disks
|
||||
{
|
||||
public int id { get; set; }
|
||||
public Params @params { get; set; }
|
||||
public bool result { get; set; }
|
||||
public string session { get; set; }
|
||||
}
|
||||
|
||||
public class Device
|
||||
{
|
||||
public string BUS { get; set; }
|
||||
public double Capacity { get; set; }
|
||||
public int CmrSize { get; set; }
|
||||
public string DRTypeMixState { get; set; }
|
||||
public string Firmware { get; set; }
|
||||
public int LogicNo { get; set; }
|
||||
public int MRType { get; set; }
|
||||
public string Media { get; set; }
|
||||
public string MediaType { get; set; }
|
||||
public string Module { get; set; }
|
||||
public string Name { get; set; }
|
||||
public int OpState { get; set; }
|
||||
public string Parent { get; set; }
|
||||
public List<Partition> Partitions { get; set; }
|
||||
public int PhysicNo { get; set; }
|
||||
public int PosLedState { get; set; }
|
||||
public string PowerMode { get; set; }
|
||||
public string PreDiskCheck { get; set; }
|
||||
public string SerialNo { get; set; }
|
||||
public string State { get; set; }
|
||||
public Tank Tank { get; set; }
|
||||
public int UseMode { get; set; }
|
||||
public string Volume { get; set; }
|
||||
public int? Temperature { get; set; }
|
||||
public Raid Raid { get; set; }
|
||||
}
|
||||
|
||||
public class MemberInfo
|
||||
{
|
||||
public int ID { get; set; }
|
||||
public bool Spare { get; set; }
|
||||
}
|
||||
|
||||
public class Params
|
||||
{
|
||||
public List<Tank> tank { get; set; }
|
||||
}
|
||||
|
||||
public class Partition
|
||||
{
|
||||
public string FileSystem { get; set; }
|
||||
public bool IsSupportFs { get; set; }
|
||||
public string Name { get; set; }
|
||||
public int Start { get; set; }
|
||||
public object Total { get; set; }
|
||||
}
|
||||
|
||||
public class Raid
|
||||
{
|
||||
public int ActiveDevices { get; set; }
|
||||
public string AliasName { get; set; }
|
||||
public int ChunkSize { get; set; }
|
||||
public int FailedDevices { get; set; }
|
||||
public int Level { get; set; }
|
||||
public List<MemberInfo> MemberInfos { get; set; }
|
||||
public List<string> Members { get; set; }
|
||||
public int RaidDevices { get; set; }
|
||||
public double RecoverMBps { get; set; }
|
||||
public double RecoverPercent { get; set; }
|
||||
public int RecoverTimeRemain { get; set; }
|
||||
public int SpareDevices { get; set; }
|
||||
public List<string> State { get; set; }
|
||||
public int Sync { get; set; }
|
||||
public int TotalDevices { get; set; }
|
||||
public string UUID { get; set; }
|
||||
public int WorkingDevices { get; set; }
|
||||
}
|
||||
|
||||
public class Tank
|
||||
{
|
||||
public List<Device> Device { get; set; }
|
||||
public double FreeSpace { get; set; }
|
||||
public int Level { get; set; }
|
||||
public int SlotNum { get; set; }
|
||||
public int TankNo { get; set; }
|
||||
public double Temperature { get; set; }
|
||||
public double TotalSpace { get; set; }
|
||||
}
|
||||
|
||||
public class Tank2
|
||||
{
|
||||
public int Level { get; set; }
|
||||
public int Slot { get; set; }
|
||||
public int TankNo { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,437 @@
|
||||
using CheckEVS;
|
||||
using System;
|
||||
using System.Net.Http;
|
||||
using System.Net.Http.Json;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace DahuaDiskChecker
|
||||
{
|
||||
class Program
|
||||
{
|
||||
static async Task Main(string[] args)
|
||||
{
|
||||
string server = string.Empty;
|
||||
|
||||
//Console.WriteLine("=== ПРОВЕРКА СОСТОЯНИЯ ДИСКА DAHUA ===");
|
||||
#if DEBUG
|
||||
Console.WriteLine("Введи ip-адрес EVS:");
|
||||
server = Console.ReadLine();
|
||||
Console.WriteLine("Введи номер диска: (0 - количество неисправных, 1-24 - статус указанного");
|
||||
int diskNumber = Convert.ToInt32(Console.ReadLine());
|
||||
#else
|
||||
|
||||
// Парсинг аргументов
|
||||
if (args.Length < 2)
|
||||
{
|
||||
await PromoPrint();
|
||||
|
||||
//Console.WriteLine("Использование: DahuaDiskChecker.exe <IP> <номер_диска> [пользователь] [пароль]");
|
||||
//Console.WriteLine("Пример: DahuaDiskChecker.exe 172.16.48.147 10 admin admin");
|
||||
return;
|
||||
}
|
||||
server = args[0];
|
||||
if (!int.TryParse(args[1], out int diskNumber))
|
||||
{
|
||||
//Console.WriteLine("❌ Ошибка: номер диска должен быть числом");
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
string user = args.Length > 2 ? args[2] : "admin";
|
||||
string password = args.Length > 3 ? args[3] : "4NUDZhJ7";
|
||||
|
||||
try
|
||||
{
|
||||
var checker = new DahuaDiskChecker();
|
||||
string status = await checker.CheckDiskStatusAsync(server, diskNumber, user, password);
|
||||
|
||||
// Вывод результата
|
||||
//Console.WriteLine();
|
||||
//Console.WriteLine(new string('=', 40));
|
||||
|
||||
try
|
||||
{
|
||||
Convert.ToInt32(status);
|
||||
Console.WriteLine(status);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
if (status == "NotFound")
|
||||
{
|
||||
Console.WriteLine("10");
|
||||
}
|
||||
else if (status == "Good")
|
||||
{
|
||||
Console.WriteLine("0");
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("1");
|
||||
}
|
||||
}
|
||||
#if DEBUG
|
||||
Console.ReadKey();
|
||||
#endif
|
||||
|
||||
//Console.WriteLine(new string('=', 40));
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"❌ Ошибка: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
private static async Task PromoPrint()
|
||||
{
|
||||
// ╔ ═ ╦ ╗ ║ ╟ ╤ │ ─ ┷ ╢ ╚ ╝
|
||||
Console.WriteLine("╔════════════════════════════╤════════════╗");
|
||||
Console.WriteLine("║ autor: mastankov │ ver: 0.1 ║");
|
||||
Console.WriteLine("╟────────────────────────────┴────────────╢");
|
||||
Console.WriteLine("║ Пример: ║");
|
||||
Console.WriteLine("║ DahuaDiskChecker.exe <IP> <номер_диска> ║");
|
||||
Console.WriteLine("║ Вернет статус запрошенного диска ║");
|
||||
Console.WriteLine("║ ║");
|
||||
Console.WriteLine("║ DahuaDiskChecker.exe <IP> 0 ║");
|
||||
Console.WriteLine("║ Вернет количество неисправных дисков ║");
|
||||
Console.WriteLine("║ ║");
|
||||
Console.WriteLine("║ Нажми Enter, чтобы выйти ║");
|
||||
Console.WriteLine("╚═════════════════════════════════════════╝");
|
||||
//Console.ReadKey();
|
||||
}
|
||||
}
|
||||
|
||||
public class DahuaDiskChecker
|
||||
{
|
||||
private readonly HttpClient _httpClient;
|
||||
|
||||
public DahuaDiskChecker()
|
||||
{
|
||||
_httpClient = new HttpClient();
|
||||
_httpClient.Timeout = TimeSpan.FromSeconds(30);
|
||||
}
|
||||
|
||||
// Вычисление MD5 хэша
|
||||
private string CalculateMD5(string input)
|
||||
{
|
||||
using (MD5 md5 = MD5.Create())
|
||||
{
|
||||
byte[] inputBytes = Encoding.UTF8.GetBytes(input);
|
||||
byte[] hashBytes = md5.ComputeHash(inputBytes);
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
foreach (byte b in hashBytes)
|
||||
{
|
||||
sb.Append(b.ToString("X2"));
|
||||
}
|
||||
return sb.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
// Получение сессии
|
||||
private async Task<string> GetSessionAsync(string server, string user, string password)
|
||||
{
|
||||
// 1. Challenge запрос
|
||||
var challengeRequest = new
|
||||
{
|
||||
method = "global.login",
|
||||
@params = new
|
||||
{
|
||||
userName = user,
|
||||
password = "",
|
||||
clientType = "Web3.0"
|
||||
},
|
||||
id = 1,
|
||||
session = (string)null
|
||||
};
|
||||
|
||||
string json = JsonSerializer.Serialize(challengeRequest);
|
||||
var content = new StringContent(json, Encoding.UTF8, "application/json");
|
||||
|
||||
var response = await _httpClient.PostAsync($"http://{server}/RPC2_Login", content);
|
||||
response.EnsureSuccessStatusCode();
|
||||
|
||||
var responseJson = await response.Content.ReadAsStringAsync();
|
||||
using JsonDocument doc = JsonDocument.Parse(responseJson);
|
||||
var root = doc.RootElement;
|
||||
|
||||
if (!root.TryGetProperty("result", out var resultProp) || resultProp.GetBoolean())
|
||||
throw new Exception("Не удалось получить challenge");
|
||||
|
||||
string realm = root.GetProperty("params").GetProperty("realm").GetString();
|
||||
string random = root.GetProperty("params").GetProperty("random").GetString();
|
||||
string session = root.GetProperty("session").GetString();
|
||||
|
||||
// 2. Вычисление пароля
|
||||
string pwdHash = CalculateMD5($"{user}:{realm}:{password}");
|
||||
string passHash = CalculateMD5($"{user}:{random}:{pwdHash}");
|
||||
|
||||
// 3. Авторизация
|
||||
var authRequest = new
|
||||
{
|
||||
method = "global.login",
|
||||
@params = new
|
||||
{
|
||||
userName = user,
|
||||
clientType = "Web3.0",
|
||||
authorityType = "Default",
|
||||
passwordType = "Default",
|
||||
password = passHash
|
||||
},
|
||||
id = 2,
|
||||
session = session
|
||||
};
|
||||
|
||||
json = JsonSerializer.Serialize(authRequest);
|
||||
content = new StringContent(json, Encoding.UTF8, "application/json");
|
||||
|
||||
response = await _httpClient.PostAsync($"http://{server}/RPC2_Login", content);
|
||||
response.EnsureSuccessStatusCode();
|
||||
|
||||
responseJson = await response.Content.ReadAsStringAsync();
|
||||
using JsonDocument authDoc = JsonDocument.Parse(responseJson);
|
||||
var authRoot = authDoc.RootElement;
|
||||
|
||||
if (!authRoot.TryGetProperty("result", out resultProp) || !resultProp.GetBoolean())
|
||||
throw new Exception("Ошибка авторизации");
|
||||
|
||||
return authRoot.GetProperty("session").GetString();
|
||||
}
|
||||
|
||||
// Получение состояния диска
|
||||
public async Task<string> CheckDiskStatusAsync(string server, int diskNumber, string user, string password)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Получаем сессию
|
||||
string session = await GetSessionAsync(server, user, password);
|
||||
|
||||
// Запрос информации о дисках
|
||||
var diskRequest = new
|
||||
{
|
||||
method = "storage.getTankInfo",
|
||||
@params = (object)null,
|
||||
id = 270,
|
||||
session
|
||||
};
|
||||
|
||||
string json = JsonSerializer.Serialize(diskRequest);
|
||||
var content = new StringContent(json, Encoding.UTF8, "application/json");
|
||||
|
||||
var response = await _httpClient.PostAsync($"http://{server}/RPC2", content);
|
||||
response.EnsureSuccessStatusCode();
|
||||
|
||||
var responseJson = await response.Content.ReadAsStringAsync();
|
||||
var listDisk = Newtonsoft.Json.JsonConvert.DeserializeObject<Disks>(responseJson).@params.tank[0].Device;
|
||||
if (diskNumber != 0)
|
||||
{
|
||||
// Парсим ответ для поиска диска
|
||||
string diskStatus = ParseDiskInfo(responseJson, diskNumber);
|
||||
return diskStatus ?? "NotFound";
|
||||
}
|
||||
else
|
||||
{
|
||||
int countDiskWithError = 0;
|
||||
for (int i = 0; i < listDisk.Count - 2; i++)
|
||||
{
|
||||
if (listDisk[i].PreDiskCheck != "Good" && listDisk[i].PreDiskCheck != "Warn")
|
||||
countDiskWithError++;
|
||||
}
|
||||
return countDiskWithError.ToString();
|
||||
}
|
||||
}
|
||||
catch (HttpRequestException ex)
|
||||
{
|
||||
throw new Exception($"Ошибка сети: {ex.Message}");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new Exception($"Ошибка: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
// Парсинг информации о дисках
|
||||
private string ParseDiskInfo(string jsonResponse, int diskNumber)
|
||||
{
|
||||
using JsonDocument doc = JsonDocument.Parse(jsonResponse);
|
||||
var root = doc.RootElement;
|
||||
|
||||
// Проверяем успешность запроса
|
||||
if (!root.TryGetProperty("result", out var resultProp) || !resultProp.GetBoolean())
|
||||
return null;
|
||||
|
||||
// Ищем диски
|
||||
if (!root.TryGetProperty("params", out var paramsProp))
|
||||
return null;
|
||||
|
||||
if (!paramsProp.TryGetProperty("tank", out var tanksProp))
|
||||
return null;
|
||||
|
||||
// Перебираем все массивы танков (хранилищ)
|
||||
foreach (var tank in tanksProp.EnumerateArray())
|
||||
{
|
||||
if (!tank.TryGetProperty("Device", out var devicesProp))
|
||||
continue;
|
||||
|
||||
// Перебираем устройства в танке
|
||||
foreach (var device in devicesProp.EnumerateArray())
|
||||
{
|
||||
// Если устройство - строка (как в вашем примере)
|
||||
if (device.ValueKind == JsonValueKind.String)
|
||||
{
|
||||
string deviceStr = device.GetString();
|
||||
if (deviceStr.Contains($"PhysicNo={diskNumber}"))
|
||||
{
|
||||
// Ищем PreDiskCheck
|
||||
int start = deviceStr.IndexOf("PreDiskCheck=");
|
||||
if (start == -1) return "Unknown";
|
||||
|
||||
start += "PreDiskCheck=".Length;
|
||||
int end = deviceStr.IndexOf(';', start);
|
||||
if (end == -1) end = deviceStr.Length;
|
||||
|
||||
return deviceStr.Substring(start, end - start).Trim();
|
||||
}
|
||||
}
|
||||
// Если устройство - объект
|
||||
else if (device.ValueKind == JsonValueKind.Object)
|
||||
{
|
||||
// Пробуем получить PhysicNo как строку или число
|
||||
string physicNo = null;
|
||||
if (device.TryGetProperty("PhysicNo", out var physicNoProp))
|
||||
{
|
||||
if (physicNoProp.ValueKind == JsonValueKind.String)
|
||||
{
|
||||
physicNo = physicNoProp.GetString();
|
||||
}
|
||||
else if (physicNoProp.ValueKind == JsonValueKind.Number)
|
||||
{
|
||||
physicNo = physicNoProp.GetInt32().ToString();
|
||||
}
|
||||
}
|
||||
|
||||
// Если нашли нужный диск
|
||||
if (physicNo == diskNumber.ToString())
|
||||
{
|
||||
// Получаем статус
|
||||
if (device.TryGetProperty("PreDiskCheck", out var statusProp))
|
||||
{
|
||||
return statusProp.GetString() ?? "Unknown";
|
||||
}
|
||||
return "Unknown";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Классы для десериализации JSON
|
||||
|
||||
public class DahuaResponse<T>
|
||||
{
|
||||
[JsonPropertyName("result")]
|
||||
public bool Result { get; set; }
|
||||
|
||||
[JsonPropertyName("session")]
|
||||
public string Session { get; set; }
|
||||
|
||||
[JsonPropertyName("params")]
|
||||
public T Params { get; set; }
|
||||
|
||||
[JsonPropertyName("error")]
|
||||
public ErrorInfo Error { get; set; }
|
||||
|
||||
[JsonPropertyName("id")]
|
||||
public int Id { get; set; }
|
||||
}
|
||||
|
||||
public class ChallengeData
|
||||
{
|
||||
[JsonPropertyName("authorization")]
|
||||
public string Authorization { get; set; }
|
||||
|
||||
[JsonPropertyName("random")]
|
||||
public string Random { get; set; }
|
||||
|
||||
[JsonPropertyName("realm")]
|
||||
public string Realm { get; set; }
|
||||
|
||||
[JsonPropertyName("opaque")]
|
||||
public string Opaque { get; set; }
|
||||
}
|
||||
|
||||
public class AuthData
|
||||
{
|
||||
[JsonPropertyName("keepAliveInterval")]
|
||||
public int KeepAliveInterval { get; set; }
|
||||
|
||||
[JsonPropertyName("isPwdOverdue")]
|
||||
public bool IsPwdOverdue { get; set; }
|
||||
}
|
||||
|
||||
public class TankInfoData
|
||||
{
|
||||
[JsonPropertyName("tank")]
|
||||
public List<Tank> Tanks { get; set; }
|
||||
}
|
||||
|
||||
public class Tank
|
||||
{
|
||||
[JsonPropertyName("Device")]
|
||||
public List<JsonElement> Devices { get; set; }
|
||||
|
||||
[JsonPropertyName("FreeSpace")]
|
||||
public double FreeSpace { get; set; }
|
||||
|
||||
[JsonPropertyName("Level")]
|
||||
public int Level { get; set; }
|
||||
|
||||
[JsonPropertyName("SlotNum")]
|
||||
public int SlotNum { get; set; }
|
||||
|
||||
[JsonPropertyName("TankNo")]
|
||||
public int TankNo { get; set; }
|
||||
|
||||
[JsonPropertyName("Temperature")]
|
||||
public double Temperature { get; set; }
|
||||
|
||||
[JsonPropertyName("TotalSpace")]
|
||||
public double TotalSpace { get; set; }
|
||||
}
|
||||
|
||||
public class Device
|
||||
{
|
||||
[JsonPropertyName("PhysicNo")]
|
||||
public string PhysicNo { get; set; }
|
||||
|
||||
[JsonPropertyName("PreDiskCheck")]
|
||||
public string PreDiskCheck { get; set; }
|
||||
|
||||
[JsonPropertyName("Name")]
|
||||
public string Name { get; set; }
|
||||
|
||||
[JsonPropertyName("SerialNo")]
|
||||
public string SerialNo { get; set; }
|
||||
|
||||
[JsonPropertyName("Temperature")]
|
||||
public string Temperature { get; set; }
|
||||
|
||||
[JsonPropertyName("State")]
|
||||
public string State { get; set; }
|
||||
}
|
||||
|
||||
public class ErrorInfo
|
||||
{
|
||||
[JsonPropertyName("code")]
|
||||
public int Code { get; set; }
|
||||
|
||||
[JsonPropertyName("message")]
|
||||
public string Message { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,913 @@
|
||||
{
|
||||
"id": 270,
|
||||
"params": {
|
||||
"tank": [
|
||||
{
|
||||
"Device": [
|
||||
{
|
||||
"BUS": "SATA",
|
||||
"Capacity": 9999757606912.0,
|
||||
"CmrSize": 0,
|
||||
"DRTypeMixState": "Single",
|
||||
"Firmware": "SNE0",
|
||||
"LogicNo": 0,
|
||||
"MRType": 0,
|
||||
"Media": "DISK",
|
||||
"MediaType": "HDD",
|
||||
"Module": "ST10000VE0012KX101",
|
||||
"Name": "\/dev\/sda",
|
||||
"OpState": 0,
|
||||
"Parent": "\/dev\/md0",
|
||||
"Partitions": [],
|
||||
"PhysicNo": 10,
|
||||
"PosLedState": 0,
|
||||
"PowerMode": "StandBy",
|
||||
"PreDiskCheck": "Good",
|
||||
"SerialNo": "WP019EWD",
|
||||
"State": "Sync",
|
||||
"Tank": {
|
||||
"Level": 0,
|
||||
"Slot": 0,
|
||||
"TankNo": 0
|
||||
},
|
||||
"UseMode": 0,
|
||||
"Volume": "RaidVolume"
|
||||
},
|
||||
{
|
||||
"BUS": "SATA",
|
||||
"Capacity": 9999757606912.0,
|
||||
"CmrSize": 0,
|
||||
"DRTypeMixState": "Single",
|
||||
"Firmware": "SNE0",
|
||||
"LogicNo": 0,
|
||||
"MRType": 0,
|
||||
"Media": "DISK",
|
||||
"MediaType": "HDD",
|
||||
"Module": "ST10000VE0012KX101",
|
||||
"Name": "\/dev\/sdb",
|
||||
"OpState": 0,
|
||||
"Parent": "\/dev\/md0",
|
||||
"Partitions": [],
|
||||
"PhysicNo": 12,
|
||||
"PosLedState": 0,
|
||||
"PowerMode": "StandBy",
|
||||
"PreDiskCheck": "Good",
|
||||
"SerialNo": "WP019E1D",
|
||||
"State": "Sync",
|
||||
"Tank": {
|
||||
"Level": 0,
|
||||
"Slot": 0,
|
||||
"TankNo": 0
|
||||
},
|
||||
"UseMode": 0,
|
||||
"Volume": "RaidVolume"
|
||||
},
|
||||
{
|
||||
"BUS": "SATA",
|
||||
"Capacity": 9999757606912.0,
|
||||
"CmrSize": 0,
|
||||
"DRTypeMixState": "Single",
|
||||
"Firmware": "SNE0",
|
||||
"LogicNo": 0,
|
||||
"MRType": 0,
|
||||
"Media": "DISK",
|
||||
"MediaType": "HDD",
|
||||
"Module": "ST10000VE0012KX101",
|
||||
"Name": "\/dev\/sdc",
|
||||
"OpState": 0,
|
||||
"Parent": "\/dev\/md0",
|
||||
"Partitions": [],
|
||||
"PhysicNo": 11,
|
||||
"PosLedState": 0,
|
||||
"PowerMode": "StandBy",
|
||||
"PreDiskCheck": "Good",
|
||||
"SerialNo": "WP019EZE",
|
||||
"State": "Sync",
|
||||
"Tank": {
|
||||
"Level": 0,
|
||||
"Slot": 0,
|
||||
"TankNo": 0
|
||||
},
|
||||
"UseMode": 0,
|
||||
"Volume": "RaidVolume"
|
||||
},
|
||||
{
|
||||
"BUS": "SATA",
|
||||
"Capacity": 9999757606912.0,
|
||||
"CmrSize": 0,
|
||||
"DRTypeMixState": "Single",
|
||||
"Firmware": "SNE0",
|
||||
"LogicNo": 0,
|
||||
"MRType": 0,
|
||||
"Media": "DISK",
|
||||
"MediaType": "HDD",
|
||||
"Module": "ST10000VE0012KX101",
|
||||
"Name": "\/dev\/sdd",
|
||||
"OpState": 0,
|
||||
"Parent": "\/dev\/md1",
|
||||
"Partitions": [],
|
||||
"PhysicNo": 16,
|
||||
"PosLedState": 0,
|
||||
"PowerMode": "Active",
|
||||
"PreDiskCheck": "Good",
|
||||
"SerialNo": "WP019E0F",
|
||||
"State": "Sync",
|
||||
"Tank": {
|
||||
"Level": 0,
|
||||
"Slot": 0,
|
||||
"TankNo": 0
|
||||
},
|
||||
"Temperature": 27,
|
||||
"UseMode": 0,
|
||||
"Volume": "RaidVolume"
|
||||
},
|
||||
{
|
||||
"BUS": "SATA",
|
||||
"Capacity": 9999757606912.0,
|
||||
"CmrSize": 0,
|
||||
"DRTypeMixState": "Single",
|
||||
"Firmware": "SNE0",
|
||||
"LogicNo": 0,
|
||||
"MRType": 0,
|
||||
"Media": "DISK",
|
||||
"MediaType": "HDD",
|
||||
"Module": "ST10000VE0012KX101",
|
||||
"Name": "\/dev\/sde",
|
||||
"OpState": 0,
|
||||
"Parent": "\/dev\/md1",
|
||||
"Partitions": [],
|
||||
"PhysicNo": 15,
|
||||
"PosLedState": 0,
|
||||
"PowerMode": "Active",
|
||||
"PreDiskCheck": "Good",
|
||||
"SerialNo": "WP019EWB",
|
||||
"State": "Sync",
|
||||
"Tank": {
|
||||
"Level": 0,
|
||||
"Slot": 0,
|
||||
"TankNo": 0
|
||||
},
|
||||
"Temperature": 28,
|
||||
"UseMode": 0,
|
||||
"Volume": "RaidVolume"
|
||||
},
|
||||
{
|
||||
"BUS": "SATA",
|
||||
"Capacity": 9999757606912.0,
|
||||
"CmrSize": 0,
|
||||
"DRTypeMixState": "Single",
|
||||
"Firmware": "SNE0",
|
||||
"LogicNo": 0,
|
||||
"MRType": 0,
|
||||
"Media": "DISK",
|
||||
"MediaType": "HDD",
|
||||
"Module": "ST10000VE0012KX101",
|
||||
"Name": "\/dev\/sdf",
|
||||
"OpState": 0,
|
||||
"Parent": "\/dev\/md1",
|
||||
"Partitions": [],
|
||||
"PhysicNo": 13,
|
||||
"PosLedState": 0,
|
||||
"PowerMode": "Active",
|
||||
"PreDiskCheck": "Good",
|
||||
"SerialNo": "WP019E3B",
|
||||
"State": "Sync",
|
||||
"Tank": {
|
||||
"Level": 0,
|
||||
"Slot": 0,
|
||||
"TankNo": 0
|
||||
},
|
||||
"Temperature": 28,
|
||||
"UseMode": 0,
|
||||
"Volume": "RaidVolume"
|
||||
},
|
||||
{
|
||||
"BUS": "SATA",
|
||||
"Capacity": 9999757606912.0,
|
||||
"CmrSize": 0,
|
||||
"DRTypeMixState": "Single",
|
||||
"Firmware": "SNE0",
|
||||
"LogicNo": 0,
|
||||
"MRType": 0,
|
||||
"Media": "DISK",
|
||||
"MediaType": "HDD",
|
||||
"Module": "ST10000VE0012KX101",
|
||||
"Name": "\/dev\/sdg",
|
||||
"OpState": 0,
|
||||
"Parent": "\/dev\/md0",
|
||||
"Partitions": [],
|
||||
"PhysicNo": 9,
|
||||
"PosLedState": 0,
|
||||
"PowerMode": "StandBy",
|
||||
"PreDiskCheck": "Good",
|
||||
"SerialNo": "WP019E1P",
|
||||
"State": "Sync",
|
||||
"Tank": {
|
||||
"Level": 0,
|
||||
"Slot": 0,
|
||||
"TankNo": 0
|
||||
},
|
||||
"UseMode": 0,
|
||||
"Volume": "RaidVolume"
|
||||
},
|
||||
{
|
||||
"BUS": "SATA",
|
||||
"Capacity": 9999757606912.0,
|
||||
"CmrSize": 0,
|
||||
"DRTypeMixState": "Single",
|
||||
"Firmware": "SNE0",
|
||||
"LogicNo": 0,
|
||||
"MRType": 0,
|
||||
"Media": "DISK",
|
||||
"MediaType": "HDD",
|
||||
"Module": "ST10000VE0012KX101",
|
||||
"Name": "\/dev\/sdh",
|
||||
"OpState": 0,
|
||||
"Parent": "\/dev\/md0",
|
||||
"Partitions": [],
|
||||
"PhysicNo": 5,
|
||||
"PosLedState": 0,
|
||||
"PowerMode": "StandBy",
|
||||
"PreDiskCheck": "Good",
|
||||
"SerialNo": "WP019E1L",
|
||||
"State": "Sync",
|
||||
"Tank": {
|
||||
"Level": 0,
|
||||
"Slot": 0,
|
||||
"TankNo": 0
|
||||
},
|
||||
"UseMode": 0,
|
||||
"Volume": "RaidVolume"
|
||||
},
|
||||
{
|
||||
"BUS": "SATA",
|
||||
"Capacity": 9999757606912.0,
|
||||
"CmrSize": 0,
|
||||
"DRTypeMixState": "Single",
|
||||
"Firmware": "SNE0",
|
||||
"LogicNo": 0,
|
||||
"MRType": 0,
|
||||
"Media": "DISK",
|
||||
"MediaType": "HDD",
|
||||
"Module": "ST10000VE0012KX101",
|
||||
"Name": "\/dev\/sdi",
|
||||
"OpState": 0,
|
||||
"Parent": "\/dev\/md0",
|
||||
"Partitions": [],
|
||||
"PhysicNo": 1,
|
||||
"PosLedState": 0,
|
||||
"PowerMode": "StandBy",
|
||||
"PreDiskCheck": "Good",
|
||||
"SerialNo": "WP019EVN",
|
||||
"State": "Sync",
|
||||
"Tank": {
|
||||
"Level": 0,
|
||||
"Slot": 0,
|
||||
"TankNo": 0
|
||||
},
|
||||
"UseMode": 0,
|
||||
"Volume": "RaidVolume"
|
||||
},
|
||||
{
|
||||
"BUS": "SATA",
|
||||
"Capacity": 9999757606912.0,
|
||||
"CmrSize": 0,
|
||||
"DRTypeMixState": "Single",
|
||||
"Firmware": "SNE0",
|
||||
"LogicNo": 0,
|
||||
"MRType": 0,
|
||||
"Media": "DISK",
|
||||
"MediaType": "HDD",
|
||||
"Module": "ST10000VE0012KX101",
|
||||
"Name": "\/dev\/sdj",
|
||||
"OpState": 0,
|
||||
"Parent": "\/dev\/md0",
|
||||
"Partitions": [],
|
||||
"PhysicNo": 6,
|
||||
"PosLedState": 0,
|
||||
"PowerMode": "StandBy",
|
||||
"PreDiskCheck": "Good",
|
||||
"SerialNo": "WP019E3G",
|
||||
"State": "Sync",
|
||||
"Tank": {
|
||||
"Level": 0,
|
||||
"Slot": 0,
|
||||
"TankNo": 0
|
||||
},
|
||||
"UseMode": 0,
|
||||
"Volume": "RaidVolume"
|
||||
},
|
||||
{
|
||||
"BUS": "SATA",
|
||||
"Capacity": 9999757606912.0,
|
||||
"CmrSize": 0,
|
||||
"DRTypeMixState": "Single",
|
||||
"Firmware": "SND0",
|
||||
"LogicNo": 0,
|
||||
"MRType": 0,
|
||||
"Media": "DISK",
|
||||
"MediaType": "HDD",
|
||||
"Module": "ST10000VE0012KX101",
|
||||
"Name": "\/dev\/sdk",
|
||||
"OpState": 0,
|
||||
"Parent": "\/dev\/md0",
|
||||
"Partitions": [],
|
||||
"PhysicNo": 2,
|
||||
"PosLedState": 0,
|
||||
"PowerMode": "StandBy",
|
||||
"PreDiskCheck": "Good",
|
||||
"SerialNo": "WP019EGM",
|
||||
"State": "Sync",
|
||||
"Tank": {
|
||||
"Level": 0,
|
||||
"Slot": 0,
|
||||
"TankNo": 0
|
||||
},
|
||||
"UseMode": 0,
|
||||
"Volume": "RaidVolume"
|
||||
},
|
||||
{
|
||||
"BUS": "SATA",
|
||||
"Capacity": 9999757606912.0,
|
||||
"CmrSize": 0,
|
||||
"DRTypeMixState": "Single",
|
||||
"Firmware": "SNE0",
|
||||
"LogicNo": 0,
|
||||
"MRType": 0,
|
||||
"Media": "DISK",
|
||||
"MediaType": "HDD",
|
||||
"Module": "ST10000VE0012KX101",
|
||||
"Name": "\/dev\/sdl",
|
||||
"OpState": 0,
|
||||
"Parent": "\/dev\/md0",
|
||||
"Partitions": [],
|
||||
"PhysicNo": 4,
|
||||
"PosLedState": 0,
|
||||
"PowerMode": "StandBy",
|
||||
"PreDiskCheck": "Good",
|
||||
"SerialNo": "WP019EVM",
|
||||
"State": "Sync",
|
||||
"Tank": {
|
||||
"Level": 0,
|
||||
"Slot": 0,
|
||||
"TankNo": 0
|
||||
},
|
||||
"UseMode": 0,
|
||||
"Volume": "RaidVolume"
|
||||
},
|
||||
{
|
||||
"BUS": "SATA",
|
||||
"Capacity": 9999757606912.0,
|
||||
"CmrSize": 0,
|
||||
"DRTypeMixState": "Single",
|
||||
"Firmware": "SNE0",
|
||||
"LogicNo": 0,
|
||||
"MRType": 0,
|
||||
"Media": "DISK",
|
||||
"MediaType": "HDD",
|
||||
"Module": "ST10000VE0012KX101",
|
||||
"Name": "\/dev\/sdm",
|
||||
"OpState": 0,
|
||||
"Parent": "\/dev\/md0",
|
||||
"Partitions": [],
|
||||
"PhysicNo": 3,
|
||||
"PosLedState": 0,
|
||||
"PowerMode": "StandBy",
|
||||
"PreDiskCheck": "Good",
|
||||
"SerialNo": "WP019EBK",
|
||||
"State": "Sync",
|
||||
"Tank": {
|
||||
"Level": 0,
|
||||
"Slot": 0,
|
||||
"TankNo": 0
|
||||
},
|
||||
"UseMode": 0,
|
||||
"Volume": "RaidVolume"
|
||||
},
|
||||
{
|
||||
"BUS": "SATA",
|
||||
"Capacity": 9999757606912.0,
|
||||
"CmrSize": 0,
|
||||
"DRTypeMixState": "Single",
|
||||
"Firmware": "SNE0",
|
||||
"LogicNo": 0,
|
||||
"MRType": 0,
|
||||
"Media": "DISK",
|
||||
"MediaType": "HDD",
|
||||
"Module": "ST10000VE0012KX101",
|
||||
"Name": "\/dev\/sdn",
|
||||
"OpState": 0,
|
||||
"Parent": "\/dev\/md0",
|
||||
"Partitions": [],
|
||||
"PhysicNo": 8,
|
||||
"PosLedState": 0,
|
||||
"PowerMode": "StandBy",
|
||||
"PreDiskCheck": "Good",
|
||||
"SerialNo": "WP019E2J",
|
||||
"State": "Sync",
|
||||
"Tank": {
|
||||
"Level": 0,
|
||||
"Slot": 0,
|
||||
"TankNo": 0
|
||||
},
|
||||
"UseMode": 0,
|
||||
"Volume": "RaidVolume"
|
||||
},
|
||||
{
|
||||
"BUS": "SATA",
|
||||
"Capacity": 9999757606912.0,
|
||||
"CmrSize": 0,
|
||||
"DRTypeMixState": "Single",
|
||||
"Firmware": "SNE0",
|
||||
"LogicNo": 0,
|
||||
"MRType": 0,
|
||||
"Media": "DISK",
|
||||
"MediaType": "HDD",
|
||||
"Module": "ST10000VE0012KX101",
|
||||
"Name": "\/dev\/sdo",
|
||||
"OpState": 0,
|
||||
"Parent": "\/dev\/md0",
|
||||
"Partitions": [],
|
||||
"PhysicNo": 7,
|
||||
"PosLedState": 0,
|
||||
"PowerMode": "StandBy",
|
||||
"PreDiskCheck": "Good",
|
||||
"SerialNo": "WP019EBQ",
|
||||
"State": "Sync",
|
||||
"Tank": {
|
||||
"Level": 0,
|
||||
"Slot": 0,
|
||||
"TankNo": 0
|
||||
},
|
||||
"UseMode": 0,
|
||||
"Volume": "RaidVolume"
|
||||
},
|
||||
{
|
||||
"BUS": "SATA",
|
||||
"Capacity": 9999757606912.0,
|
||||
"CmrSize": 0,
|
||||
"DRTypeMixState": "Single",
|
||||
"Firmware": "SNE0",
|
||||
"LogicNo": 0,
|
||||
"MRType": 0,
|
||||
"Media": "DISK",
|
||||
"MediaType": "HDD",
|
||||
"Module": "ST10000VE0012KX101",
|
||||
"Name": "\/dev\/sdp",
|
||||
"OpState": 0,
|
||||
"Parent": "\/dev\/md1",
|
||||
"Partitions": [],
|
||||
"PhysicNo": 20,
|
||||
"PosLedState": 0,
|
||||
"PowerMode": "Active",
|
||||
"PreDiskCheck": "Good",
|
||||
"SerialNo": "WP019EZK",
|
||||
"State": "Sync",
|
||||
"Tank": {
|
||||
"Level": 0,
|
||||
"Slot": 0,
|
||||
"TankNo": 0
|
||||
},
|
||||
"Temperature": 29,
|
||||
"UseMode": 0,
|
||||
"Volume": "RaidVolume"
|
||||
},
|
||||
{
|
||||
"BUS": "SATA",
|
||||
"Capacity": 9999757606912.0,
|
||||
"CmrSize": 0,
|
||||
"DRTypeMixState": "Single",
|
||||
"Firmware": "SNE0",
|
||||
"LogicNo": 0,
|
||||
"MRType": 0,
|
||||
"Media": "DISK",
|
||||
"MediaType": "HDD",
|
||||
"Module": "ST10000VE0012KX101",
|
||||
"Name": "\/dev\/sdq",
|
||||
"OpState": 0,
|
||||
"Parent": "\/dev\/md1",
|
||||
"Partitions": [],
|
||||
"PhysicNo": 19,
|
||||
"PosLedState": 0,
|
||||
"PowerMode": "Active",
|
||||
"PreDiskCheck": "Good",
|
||||
"SerialNo": "WP019E3P",
|
||||
"State": "Sync",
|
||||
"Tank": {
|
||||
"Level": 0,
|
||||
"Slot": 0,
|
||||
"TankNo": 0
|
||||
},
|
||||
"Temperature": 29,
|
||||
"UseMode": 0,
|
||||
"Volume": "RaidVolume"
|
||||
},
|
||||
{
|
||||
"BUS": "SATA",
|
||||
"Capacity": 9999757606912.0,
|
||||
"CmrSize": 0,
|
||||
"DRTypeMixState": "Single",
|
||||
"Firmware": "SNE0",
|
||||
"LogicNo": 0,
|
||||
"MRType": 0,
|
||||
"Media": "DISK",
|
||||
"MediaType": "HDD",
|
||||
"Module": "ST10000VE0012KX101",
|
||||
"Name": "\/dev\/sdr",
|
||||
"OpState": 0,
|
||||
"Parent": "\/dev\/md1",
|
||||
"Partitions": [],
|
||||
"PhysicNo": 24,
|
||||
"PosLedState": 0,
|
||||
"PowerMode": "Active",
|
||||
"PreDiskCheck": "Good",
|
||||
"SerialNo": "WP019E4H",
|
||||
"State": "Sync",
|
||||
"Tank": {
|
||||
"Level": 0,
|
||||
"Slot": 0,
|
||||
"TankNo": 0
|
||||
},
|
||||
"Temperature": 28,
|
||||
"UseMode": 0,
|
||||
"Volume": "RaidVolume"
|
||||
},
|
||||
{
|
||||
"BUS": "SATA",
|
||||
"Capacity": 9999757606912.0,
|
||||
"CmrSize": 0,
|
||||
"DRTypeMixState": "Single",
|
||||
"Firmware": "SNE0",
|
||||
"LogicNo": 0,
|
||||
"MRType": 0,
|
||||
"Media": "DISK",
|
||||
"MediaType": "HDD",
|
||||
"Module": "ST10000VE0012KX101",
|
||||
"Name": "\/dev\/sds",
|
||||
"OpState": 0,
|
||||
"Parent": "\/dev\/md1",
|
||||
"Partitions": [],
|
||||
"PhysicNo": 23,
|
||||
"PosLedState": 0,
|
||||
"PowerMode": "Active",
|
||||
"PreDiskCheck": "Good",
|
||||
"SerialNo": "WP019E3Q",
|
||||
"State": "Sync",
|
||||
"Tank": {
|
||||
"Level": 0,
|
||||
"Slot": 0,
|
||||
"TankNo": 0
|
||||
},
|
||||
"Temperature": 28,
|
||||
"UseMode": 0,
|
||||
"Volume": "RaidVolume"
|
||||
},
|
||||
{
|
||||
"BUS": "SATA",
|
||||
"Capacity": 9999757606912.0,
|
||||
"CmrSize": 0,
|
||||
"DRTypeMixState": "Single",
|
||||
"Firmware": "SNE0",
|
||||
"LogicNo": 0,
|
||||
"MRType": 0,
|
||||
"Media": "DISK",
|
||||
"MediaType": "HDD",
|
||||
"Module": "ST10000VE0012KX101",
|
||||
"Name": "\/dev\/sdt",
|
||||
"OpState": 0,
|
||||
"Parent": "\/dev\/md1",
|
||||
"Partitions": [],
|
||||
"PhysicNo": 22,
|
||||
"PosLedState": 0,
|
||||
"PowerMode": "Active",
|
||||
"PreDiskCheck": "Good",
|
||||
"SerialNo": "WP019EVD",
|
||||
"State": "Sync",
|
||||
"Tank": {
|
||||
"Level": 0,
|
||||
"Slot": 0,
|
||||
"TankNo": 0
|
||||
},
|
||||
"Temperature": 28,
|
||||
"UseMode": 0,
|
||||
"Volume": "RaidVolume"
|
||||
},
|
||||
{
|
||||
"BUS": "SATA",
|
||||
"Capacity": 9999757606912.0,
|
||||
"CmrSize": 0,
|
||||
"DRTypeMixState": "Single",
|
||||
"Firmware": "SNE0",
|
||||
"LogicNo": 0,
|
||||
"MRType": 0,
|
||||
"Media": "DISK",
|
||||
"MediaType": "HDD",
|
||||
"Module": "ST10000VE0012KX101",
|
||||
"Name": "\/dev\/sdu",
|
||||
"OpState": 0,
|
||||
"Parent": "\/dev\/md1",
|
||||
"Partitions": [],
|
||||
"PhysicNo": 14,
|
||||
"PosLedState": 0,
|
||||
"PowerMode": "Active",
|
||||
"PreDiskCheck": "Warn",
|
||||
"SerialNo": "WP019EWH",
|
||||
"State": "Sync",
|
||||
"Tank": {
|
||||
"Level": 0,
|
||||
"Slot": 0,
|
||||
"TankNo": 0
|
||||
},
|
||||
"Temperature": 28,
|
||||
"UseMode": 0,
|
||||
"Volume": "RaidVolume"
|
||||
},
|
||||
{
|
||||
"BUS": "SATA",
|
||||
"Capacity": 9999757606912.0,
|
||||
"CmrSize": 0,
|
||||
"DRTypeMixState": "Single",
|
||||
"Firmware": "SNE0",
|
||||
"LogicNo": 0,
|
||||
"MRType": 0,
|
||||
"Media": "DISK",
|
||||
"MediaType": "HDD",
|
||||
"Module": "ST10000VE0012KX101",
|
||||
"Name": "\/dev\/sdv",
|
||||
"OpState": 0,
|
||||
"Parent": "\/dev\/md1",
|
||||
"Partitions": [],
|
||||
"PhysicNo": 18,
|
||||
"PosLedState": 0,
|
||||
"PowerMode": "Active",
|
||||
"PreDiskCheck": "Good",
|
||||
"SerialNo": "WP019EZM",
|
||||
"State": "Sync",
|
||||
"Tank": {
|
||||
"Level": 0,
|
||||
"Slot": 0,
|
||||
"TankNo": 0
|
||||
},
|
||||
"Temperature": 30,
|
||||
"UseMode": 0,
|
||||
"Volume": "RaidVolume"
|
||||
},
|
||||
{
|
||||
"BUS": "SATA",
|
||||
"Capacity": 9999757606912.0,
|
||||
"CmrSize": 0,
|
||||
"DRTypeMixState": "Single",
|
||||
"Firmware": "SNE0",
|
||||
"LogicNo": 0,
|
||||
"MRType": 0,
|
||||
"Media": "DISK",
|
||||
"MediaType": "HDD",
|
||||
"Module": "ST10000VE0012KX101",
|
||||
"Name": "\/dev\/sdw",
|
||||
"OpState": 0,
|
||||
"Parent": "\/dev\/md1",
|
||||
"Partitions": [],
|
||||
"PhysicNo": 21,
|
||||
"PosLedState": 0,
|
||||
"PowerMode": "Active",
|
||||
"PreDiskCheck": "Good",
|
||||
"SerialNo": "WP019EWL",
|
||||
"State": "Sync",
|
||||
"Tank": {
|
||||
"Level": 0,
|
||||
"Slot": 0,
|
||||
"TankNo": 0
|
||||
},
|
||||
"Temperature": 28,
|
||||
"UseMode": 0,
|
||||
"Volume": "RaidVolume"
|
||||
},
|
||||
{
|
||||
"BUS": "SATA",
|
||||
"Capacity": 9999757606912.0,
|
||||
"CmrSize": 0,
|
||||
"DRTypeMixState": "Single",
|
||||
"Firmware": "SNE0",
|
||||
"LogicNo": 0,
|
||||
"MRType": 0,
|
||||
"Media": "DISK",
|
||||
"MediaType": "HDD",
|
||||
"Module": "ST10000VE0012KX101",
|
||||
"Name": "\/dev\/sdx",
|
||||
"OpState": 0,
|
||||
"Parent": "\/dev\/md1",
|
||||
"Partitions": [],
|
||||
"PhysicNo": 17,
|
||||
"PosLedState": 0,
|
||||
"PowerMode": "Active",
|
||||
"PreDiskCheck": "Good",
|
||||
"SerialNo": "WP019E0H",
|
||||
"State": "Sync",
|
||||
"Tank": {
|
||||
"Level": 0,
|
||||
"Slot": 0,
|
||||
"TankNo": 0
|
||||
},
|
||||
"Temperature": 30,
|
||||
"UseMode": 0,
|
||||
"Volume": "RaidVolume"
|
||||
},
|
||||
{
|
||||
"BUS": "",
|
||||
"Capacity": 109997332054016.0,
|
||||
"CmrSize": 0,
|
||||
"DRTypeMixState": "Single",
|
||||
"Name": "\/dev\/md0",
|
||||
"OpState": 0,
|
||||
"Parent": null,
|
||||
"Partitions": [
|
||||
{
|
||||
"FileSystem": "PVDISK",
|
||||
"IsSupportFs": false,
|
||||
"Name": "\/dev\/md0",
|
||||
"Start": 0,
|
||||
"Total": 3219603456
|
||||
}
|
||||
],
|
||||
"Raid": {
|
||||
"ActiveDevices": 12,
|
||||
"AliasName": "RAID5_1",
|
||||
"ChunkSize": 16,
|
||||
"FailedDevices": 0,
|
||||
"Level": 5,
|
||||
"MemberInfos": [
|
||||
{
|
||||
"ID": 8,
|
||||
"Spare": false
|
||||
},
|
||||
{
|
||||
"ID": 11,
|
||||
"Spare": false
|
||||
},
|
||||
{
|
||||
"ID": 4,
|
||||
"Spare": false
|
||||
},
|
||||
{
|
||||
"ID": 10,
|
||||
"Spare": false
|
||||
},
|
||||
{
|
||||
"ID": 6,
|
||||
"Spare": false
|
||||
},
|
||||
{
|
||||
"ID": 5,
|
||||
"Spare": false
|
||||
},
|
||||
{
|
||||
"ID": 7,
|
||||
"Spare": false
|
||||
},
|
||||
{
|
||||
"ID": 3,
|
||||
"Spare": false
|
||||
},
|
||||
{
|
||||
"ID": 12,
|
||||
"Spare": false
|
||||
},
|
||||
{
|
||||
"ID": 2,
|
||||
"Spare": false
|
||||
},
|
||||
{
|
||||
"ID": 1,
|
||||
"Spare": false
|
||||
},
|
||||
{
|
||||
"ID": 9,
|
||||
"Spare": false
|
||||
}
|
||||
],
|
||||
"Members": [ "\/dev\/sdn", "\/dev\/sdc", "\/dev\/sdl", "\/dev\/sda", "\/dev\/sdj", "\/dev\/sdh", "\/dev\/sdo", "\/dev\/sdm", "\/dev\/sdb", "\/dev\/sdk", "\/dev\/sdi", "\/dev\/sdg" ],
|
||||
"RaidDevices": 12,
|
||||
"RecoverMBps": 0.0,
|
||||
"RecoverPercent": 0.0,
|
||||
"RecoverTimeRemain": 0,
|
||||
"SpareDevices": 0,
|
||||
"State": [ "Active", "CreatVG" ],
|
||||
"Sync": 0,
|
||||
"TotalDevices": 12,
|
||||
"UUID": "2cb254ea:b401130a:6e9e714d:ffc1de04",
|
||||
"WorkingDevices": 12
|
||||
},
|
||||
"State": "Active",
|
||||
"Tank": {
|
||||
"Level": 0,
|
||||
"Slot": 0,
|
||||
"TankNo": 0
|
||||
},
|
||||
"Volume": "VolumeGroup"
|
||||
},
|
||||
{
|
||||
"BUS": "",
|
||||
"Capacity": 109997332054016.0,
|
||||
"CmrSize": 0,
|
||||
"DRTypeMixState": "Single",
|
||||
"Name": "\/dev\/md1",
|
||||
"OpState": 0,
|
||||
"Parent": null,
|
||||
"Partitions": [
|
||||
{
|
||||
"FileSystem": "PVDISK",
|
||||
"IsSupportFs": false,
|
||||
"Name": "\/dev\/md1",
|
||||
"Start": 0,
|
||||
"Total": 3219603456
|
||||
}
|
||||
],
|
||||
"Raid": {
|
||||
"ActiveDevices": 12,
|
||||
"AliasName": "RAID5_2",
|
||||
"ChunkSize": 16,
|
||||
"FailedDevices": 0,
|
||||
"Level": 5,
|
||||
"MemberInfos": [
|
||||
{
|
||||
"ID": 17,
|
||||
"Spare": false
|
||||
},
|
||||
{
|
||||
"ID": 15,
|
||||
"Spare": false
|
||||
},
|
||||
{
|
||||
"ID": 18,
|
||||
"Spare": false
|
||||
},
|
||||
{
|
||||
"ID": 22,
|
||||
"Spare": false
|
||||
},
|
||||
{
|
||||
"ID": 24,
|
||||
"Spare": false
|
||||
},
|
||||
{
|
||||
"ID": 20,
|
||||
"Spare": false
|
||||
},
|
||||
{
|
||||
"ID": 13,
|
||||
"Spare": false
|
||||
},
|
||||
{
|
||||
"ID": 21,
|
||||
"Spare": false
|
||||
},
|
||||
{
|
||||
"ID": 16,
|
||||
"Spare": false
|
||||
},
|
||||
{
|
||||
"ID": 14,
|
||||
"Spare": false
|
||||
},
|
||||
{
|
||||
"ID": 23,
|
||||
"Spare": false
|
||||
},
|
||||
{
|
||||
"ID": 19,
|
||||
"Spare": false
|
||||
}
|
||||
],
|
||||
"Members": [ "\/dev\/sdx", "\/dev\/sde", "\/dev\/sdv", "\/dev\/sdt", "\/dev\/sdr", "\/dev\/sdp", "\/dev\/sdf", "\/dev\/sdw", "\/dev\/sdd", "\/dev\/sdu", "\/dev\/sds", "\/dev\/sdq" ],
|
||||
"RaidDevices": 12,
|
||||
"RecoverMBps": 0.0,
|
||||
"RecoverPercent": 0.0,
|
||||
"RecoverTimeRemain": 0,
|
||||
"SpareDevices": 0,
|
||||
"State": [ "Active", "CreatVG" ],
|
||||
"Sync": 0,
|
||||
"TotalDevices": 12,
|
||||
"UUID": "9a7e6e86:180ea46a:b19dd6f2:cb6a4e62",
|
||||
"WorkingDevices": 12
|
||||
},
|
||||
"State": "Active",
|
||||
"Tank": {
|
||||
"Level": 0,
|
||||
"Slot": 0,
|
||||
"TankNo": 0
|
||||
},
|
||||
"Volume": "VolumeGroup"
|
||||
}
|
||||
],
|
||||
"FreeSpace": 0.0,
|
||||
"Level": 0,
|
||||
"SlotNum": 24,
|
||||
"TankNo": 0,
|
||||
"Temperature": 0.0,
|
||||
"TotalSpace": 0.0
|
||||
}
|
||||
]
|
||||
},
|
||||
"result": true,
|
||||
"session": "b62094f5c75a79c4a690dcc52ab8d365"
|
||||
}
|
||||
Reference in New Issue
Block a user