mdadm RAID 어레이의 이름을 바꾸려면 어떻게합니까?


23

어떤 이유로 mdadm raid 배열의 이름을 텍스트 이름으로 바꾸려고 할 때 변경 사항이 적용되지 않습니다.

serverfault question 에서 조언을 시도 했지만 아무 소용이 없습니다.

~$ mdadm --version
mdadm - v3.1.4 - 31st August 2010

~$ sudo mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
  Creation Time : Tue Sep 27 08:32:32 2011
     Raid Level : raid1
     Array Size : 1953513424 (1863.02 GiB 2000.40 GB)
  Used Dev Size : 1953513424 (1863.02 GiB 2000.40 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent
    Update Time : Sun Oct  2 17:59:37 2011
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : omicron:0  (local to host omicron)
           UUID : 75c4a555:482aecd0:ade70dfc:1547926a
         Events : 17

Number   Major   Minor   RaidDevice State
   0       8       80        0      active sync   /dev/sdf
   1       8       96        1      active sync   /dev/sdg

~$ sudo mdadm --stop /dev/md0
mdadm: stopped /dev/md0

~$ sudo mdadm --assemble /dev/md/alpha --update=name /dev/sd[gf]
mdadm: /dev/md/alpha has been started with 2 drives.

~$ sudo mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Tue Sep 27 08:32:32 2011
     Raid Level : raid1
     Array Size : 1953513424 (1863.02 GiB 2000.40 GB)
  Used Dev Size : 1953513424 (1863.02 GiB 2000.40 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent
    Update Time : Sun Oct  2 18:06:11 2011
          State : clean
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : omicron:0  (local to host omicron)
           UUID : 75c4a555:482aecd0:ade70dfc:1547926a
         Events : 17

Number   Major   Minor   RaidDevice State
   0       8       80        0      active sync   /dev/sdf
   1       8       96        1      active sync   /dev/sdg

~$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdf[0] sdg[1]
      1953513424 blocks super 1.2 [2/2] [UU]

md126 : active (auto-read-only) raid1 sdd[0] sde[1]
      1953513424 blocks super 1.2 [2/2] [UU]

md127 : active (auto-read-only) raid1 sdb[0] sda[1]
      976762496 blocks [2/2] [UU]

unused devices: <none>

보시다시피 이름은 여전히 omicron:0이전 장치 파일을 통해 보고되고 도달 할 수 있습니다. 시도 sudo mdadm --detail /dev/md/alpha는 작동을 멈추고 다음 재부팅 때까지 동일하고 잘못된 이름을보고합니다.

입력 할 이름을 알아낼 때 mdadm이 혼동되어 장치 파일을 대신 생성하는 것처럼 보입니다.


곁에

mdadm이 수퍼 블록을 명시 적으로 다시 만들지 않고 수퍼 블록의 이름 부분을 강제로 업데이트하도록하는 방법이 있습니까 (즉, 배열에 원하는 이름을 명시 적으로 설정)? (즉 sudo mdam --zero-superblock /dev/sd[fg]; sudo mdadm --create /dev/md/alpha --raid-devices=2 --level=1 --assume-clean --name=alpha /dev/sd[fg])


문제는 재부팅 후 ARRAY /dev/md/alpha metadata=1.2 name=omicron:alpha UUID=c66a267...mdadm.conf에 추가하더라도 명명 된 장치 파일이 사라지고 표준 형식 중 하나로 대체 된다는 것 입니다. (/ dev / md125 또는 유사)

이름이 바뀐 mdadm 어레이의 이름을 유지하려면 어떻게해야합니까? -즉-우분투를 부팅 할 때 장치 파일을 유지하려면 어떻게해야합니까?

답변:


19

실제로 다음과 --name=같이 이름을 지정해야합니다 .

sudo mdadm --assemble /dev/md/alpha --name=newname --update=name /dev/sd[gf]

재부팅 동안 일관된 동작을하려면 장치의 마지막 부분과 --name 인수에 동일한 이름을 사용해야합니다. sudo mdadm --assemble / dev / md / alpha --name = alpha --update = name / dev / sd [gf]

자세한 설명은 아래 Khassad의 게시물을 참조하십시오.


1
명료하게하기 위해이 명령 행을 약간만 업데이트했습니다. Boob처럼 '--update ='뒤에 배열의 원래 이름을 입력했습니다. sudo mdadm --assemble /dev/md/alpha --name={newname} --update=name /dev/sd[gf] 그 말이 의미가 있거나 더 명확
해지기를 바랍니다

안녕하세요, # sudo mdadm --assemble / dev / md127 --name = md0 --update = name / dev / sd [ab] 명령을 실행 한 후 mdadm을 얻습니다. / dev / sda가 사용 중입니다-mdadm을 건너 뜁니다 : / dev / sdb 바쁘다-thougths를 건너 뛰시겠습니까? 물론, 먼저 어레이를 마운트 해제했습니다!
razor7

2
@ razor7mdadm --stop --scan md127
다니엘 Dinnyes

12

Ubuntu가 부팅 할 때마다 이름 변경을 유지하는 방법은 initramfs를 업데이트하는 것입니다. 어레이 이름과 mdadm.conf를 업데이트 한 후 다음 명령을 실행해야합니다.

sudo update-initramfs -u

전체 과정 :

sudo mdadm --stop /dev/md125
sudo mdadm --assemble /dev/md/alpha --name=alpha --update=name /dev/sd[fg]
sudo mdadm -Db /dev/md/alpha

세 번째 명령은 다음과 같은 내용을 반환해야합니다.

ARRAY /dev/md/alpha metadata=1.2 name=omicron:alpha UUID=5b024352:3a940335:233aa23f:5c6b2a1f

결과를 /etc/mdadm/mdadm.conf에 붙여 넣습니다 (이전 줄 바꾸기). 또는 다음을 실행하십시오.

sudo mdadm -Db /dev/md/alpha >> /etc/mdadm/mdadm.conf

다음 실행 :

sudo update-initramfs -u

마지막으로 재부팅하십시오.

이 토론은 유용했습니다 .


8

pille과 NN의 첫 번째 답변이 효과가 있습니다.

여기서 비결은 --name옵션을 지정하지 않으면 mdadm할당 한 장치 번호에서 배열 이름을 지정하는 것만으로 이름을 바꿀 수 있습니다. 이 질문에서 그것은 0이므로 새로운 배열 이름은 0입니다.

어셈블 명령에 사용할 장치 이름 (여기서는 "알파")을 지정하므로이 장치 이름을 작성하여 사용합니다. 그러나 자동 시작시 mdadm수퍼 블록에 표시되는 이름 (이 경우 0)을 기반으로 장치를 생성하므로 어셈블 명령에 지정한 장치 이름이 손실됩니다.

이름을 고정적이고 일관되게 변경하려면 장치 이름의 마지막 부분과 새 배열 이름에서 같은 이름을 사용해야합니다. 이 경우 장치 "alpha"의 경우 다음 명령 줄을 사용해야합니다.

mdadm --assemble /dev/md/alpha --name=alpha --update=name /dev/sd[gf]

호스트 이름을 변경하여 -name=<hostname>:<array_name>구문을 사용하여 명시 적으로 선언해야 합니다.

예를 들어 컴퓨터 이름이 변경된 후 유용 할 수 있습니다.


2

원하는 답변이 mdadm 매뉴얼 페이지에있는 것처럼 보입니다.

[create, build, grow]
      -N, --name=
          Set  a name for the array.  This is **currently only effective when creat‐
          ing an array** with a version-1 superblock, or an  array  in  a  DDF  con‐
          tainer.   The  name is a simple textual string that can be used to iden‐
          tify array components when assembling.  If name is needed but not speci‐
          fied, it is taken from the basename of the device that is being created.
          e.g. when creating /dev/md/home the name will default to home.

그리고 조립

       -N, --name=
          Specify the name of the array to assemble.  **This must be the  name  that
          was  specified  when  creating the array**.  It must either match the name
          stored in the superblock exactly, or it  must  match  with  the  current
          homehost prefixed to the start of the given name.

이름 속성이 설정된 후에 고정되지 않는 이유를 설명합니다. 당신이 그것을 작동하게했다면 대답은 당신을 위해 트릭을 한 의견으로 ack하십시오. 또는 udev 규칙과 배열의 UUID를 앵커로 사용하여 항상 심볼릭 링크를 만들 수 있습니다.

/etc/mdadm.conf에 가짜 이름을 추가 할 때 요점을 알 수 없습니다. 이미 표준 배열 이름 인 UUID를 사용하고 있습니다. 변경하기에 적합한 다른 변수를 추가하는 것은 불필요한 유지 관리이며 어레이 시작 실패와 같은 문제를 묻는 것입니다.

이러한 관찰 외에도 런타임에 이름을 업데이트 할 수없는 이유를 이해하기에 가장 좋은 곳은 linux-raid 메일 링리스트를 핑하는 것입니다.


1

이름을 변경 한 후에 업데이트 mdadm.conf하시겠습니까?

 mdadm --examine --scan --config=mdadm.conf >> /etc/mdadm.conf

0

내부적으로 이름에 공백이있는 RAID 볼륨을 만들 때 mdadm에 버그가 있습니다. 생성 된 /etc/mdadm/mdadm.conf 파일의 형식 오류로 인해이 볼륨이 올바르게 마운트되지 않습니다. 거기에서 이름을 바꾸어야하지만 영구적이지 않습니다. 따라서 내부 이름을 바꾸는 것이 필요하지만 메타 데이터를 차단하고 이름 옵션을 지원하지 않는 모든 RAID 컨트롤러에서는 지원되지 않습니다. 이 볼륨의 이름을 바꾸는 방법을 모르겠습니다 (UUID에서 내부적으로 참조하더라도 이름은 Linux에서 사용되는 이름입니다. 반대로 Windows에는 그러한 버그가 없으며 이름에 공백이 포함 된 RAID 볼륨을 완벽하게 마운트 함)!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.