Ubuntu 17.10으로 업그레이드한 후 RAID1은 읽기 전용입니다.

Ubuntu 17.10으로 업그레이드한 후 RAID1은 읽기 전용입니다.

혼란스러워요. 16.10에서 완벽하게 작동하는 RAID1 설정이 있습니다. 17.10으로 업그레이드한 후 자동으로 마법처럼 어레이를 감지하고 md0을 다시 생성합니다. 모든 파일은 괜찮지만 md0을 마운트하면 배열이 읽기 전용이라고 표시됩니다.

cat /proc/mdstat 
Personalities : [raid1] 
md0 : active (read-only) raid1 dm-0[0] dm-1[1]
      5860390464 blocks super 1.2 [2/2] [UU]
      bitmap: 0/44 pages [0KB], 65536KB chunk

unused devices: <none>

sudo mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Sat Jul  9 23:54:40 2016
     Raid Level : raid1
     Array Size : 5860390464 (5588.90 GiB 6001.04 GB)
  Used Dev Size : 5860390464 (5588.90 GiB 6001.04 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Sat Nov  4 23:16:18 2017
          State : clean 
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : x6:0  (local to host x6)
           UUID : baaccfeb:860781dd:eda253ba:6a08916f
         Events : 11596

    Number   Major   Minor   RaidDevice State
       0     253        0        0      active sync   /dev/dm-0
       1     253        1        1      active sync   /dev/dm-1

/var/log/kern.log나 dmesg에는 오류가 없습니다.

중지하고 다시 조립할 수 있지만 효과가 없습니다.

sudo mdadm --stop /dev/md0
sudo mdadm --assemble --scan

이전에는 왜 제대로 작동했는지 이해할 수 없지만 지금은 배열이 읽기 전용이므로 어떤 이유도 감지할 수 없습니다. 이는 16.04에서 16.10으로 업그레이드할 때 자동으로 마법처럼 재조립된 것과 동일한 어레이입니다.

이 문제를 조사하는 동안 /sys 마운트와 관련된 읽기 전용 문제에 대한 게시물을 찾았습니다. 내 게시물은 실제로 다음과 같습니다.

ls -ld /sys
dr-xr-xr-x 13 root root 0 Nov  5 22:28 /sys

그러나 /sys가 읽기 전용으로 남아 있기 때문에 어느 쪽도 문제를 해결할 수 없습니다.

sudo mount -o remount,rw /sys
sudo mount -o remount,rw -t sysfs sysfs /sys
ls -ld /sys
dr-xr-xr-x 13 root root 0 Nov  5 22:29 /sys

누구든지 내가 놓친 통찰력을 제공할 수 있습니까?

/etc/mdadm/mdadm.conf를 포함하도록 편집합니다.

# mdadm.conf
#
# !NB! Run update-initramfs -u after updating this file.
# !NB! This will ensure that initramfs has an uptodate copy.
#
# Please refer to mdadm.conf(5) for information about this file.
#

# by default (built-in), scan all partitions (/proc/partitions) and all
# containers for MD superblocks. alternatively, specify devices to scan, using
# wildcards if desired.
#DEVICE partitions containers

# automatically tag new arrays as belonging to the local system
HOMEHOST <system>

# instruct the monitoring daemon where to send mail alerts
MAILADDR root

# definitions of existing MD arrays
ARRAY /dev/md/0  metadata=1.2 UUID=baaccfeb:860781dd:eda253ba:6a08916f name=x6:0

# This configuration was auto-generated on Sun, 05 Nov 2017 15:37:16 -0800 by mkconf

장치 매퍼 파일은 쓰기 가능한 것으로 보입니다.

ls -l /dev/dm-*
brw-rw---- 1 root disk 253, 0 Nov  5 16:28 /dev/dm-0
brw-rw---- 1 root disk 253, 1 Nov  5 16:28 /dev/dm-1

Ubuntu나 Debian이 변경한 것이 또 있습니다. 이 osprober 파일이 여기서 무엇을 하는지 모르겠습니다. 나는 설치할 때만 사용된다고 생각했습니다.

ls -l /dev/mapper/
total 0
crw------- 1 root root 10, 236 Nov  5 15:34 control
lrwxrwxrwx 1 root root       7 Nov  5 16:28 osprober-linux-sdb1 -> ../dm-0
lrwxrwxrwx 1 root root       7 Nov  5 16:28 osprober-linux-sdc1 -> ../dm-1

이별 정보:

sudo parted -l
Model: ATA SanDisk Ultra II (scsi)
Disk /dev/sda: 960GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system     Name  Flags
 1      1049kB  81.9GB  81.9GB  ext4
 2      81.9GB  131GB   49.2GB  linux-swap(v1)
 3      131GB   131GB   99.6MB  fat32                 boot, esp
 4      131GB   960GB   829GB   ext4


Model: ATA WDC WD60EZRZ-00R (scsi)
Disk /dev/sdb: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  6001GB  6001GB                     raid


Model: ATA WDC WD60EZRZ-00R (scsi)
Disk /dev/sdc: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  6001GB  6001GB                     raid


Error: /dev/mapper/osprober-linux-sdc1: unrecognised disk label
Model: Linux device-mapper (linear) (dm)                                  
Disk /dev/mapper/osprober-linux-sdc1: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: unknown
Disk Flags: 

Error: /dev/mapper/osprober-linux-sdb1: unrecognised disk label
Model: Linux device-mapper (linear) (dm)                                  
Disk /dev/mapper/osprober-linux-sdb1: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: unknown
Disk Flags: 

Model: Linux Software RAID Array (md)
Disk /dev/md0: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: loop
Disk Flags: 

Number  Start  End     Size    File system  Flags
 1      0.00B  6001GB  6001GB  ext4

장치 매퍼 정보:

$ sudo dmsetup table
osprober-linux-sdc1: 0 11721043087 linear 8:33 0
osprober-linux-sdb1: 0 11721043087 linear 8:17 0

$ sudo dmsetup info
Name:              osprober-linux-sdc1
State:             ACTIVE (READ-ONLY)
Read Ahead:        256
Tables present:    LIVE
Open count:        1
Event number:      0
Major, minor:      253, 1
Number of targets: 1

Name:              osprober-linux-sdb1
State:             ACTIVE (READ-ONLY)
Read Ahead:        256
Tables present:    LIVE
Open count:        1
Event number:      0
Major, minor:      253, 0
Number of targets: 1

배열을 rw strace 출력으로 설정해 보십시오(일부 컨텍스트 포함).

openat(AT_FDCWD, "/dev/md0", O_RDONLY)  = 3
fstat(3, {st_mode=S_IFBLK|0660, st_rdev=makedev(9, 0), ...}) = 0
ioctl(3, RAID_VERSION, 0x7fffb3813574)  = 0
fstat(3, {st_mode=S_IFBLK|0660, st_rdev=makedev(9, 0), ...}) = 0
ioctl(3, RAID_VERSION, 0x7fffb38134c4)  = 0
ioctl(3, RAID_VERSION, 0x7fffb38114bc)  = 0
fstat(3, {st_mode=S_IFBLK|0660, st_rdev=makedev(9, 0), ...}) = 0
readlink("/sys/dev/block/9:0", "../../devices/virtual/block/md0", 199) = 31
openat(AT_FDCWD, "/sys/block/md0/md/metadata_version", O_RDONLY) = 4
read(4, "1.2\n", 4096)                  = 4
close(4)                                = 0
openat(AT_FDCWD, "/sys/block/md0/md/level", O_RDONLY) = 4
read(4, "raid1\n", 4096)                = 6
close(4)                                = 0
ioctl(3, GET_ARRAY_INFO, 0x7fffb3813580) = 0
ioctl(3, RESTART_ARRAY_RW, 0)           = -1 EROFS (Read-only file system)
write(2, "mdadm: failed to set writable fo"..., 66mdadm: failed to set writable for /dev/md0: Read-only file system
) = 66

답변1

어레이가 읽기 전용 모드로 종료된 이유는 설명되지 않습니다.

mdadm --readwrite /dev/md0

정상으로 돌아가야 합니다. 귀하의 경우에는 완전히 명확하지 않은 이유로 인해 그렇지 않습니다. 구성 요소 장치 자체가 다음과 같은 경우읽기 전용, RAID 어레이 읽기 전용(이는 현재 보고 있는 동작과 읽기 및 쓰기를 다시 활성화하려고 할 때 사용하는 코드 경로와 일치합니다.)

dmsetup table정보는 무슨 일이 일어나고 있는지에 대해 강력하게 암시합니다. ( osprober장치 이름을 보면) 실제 RAID 구성 요소를 찾고 있으며 어떤 이유로 그 위에 장치 매퍼 장치를 생성하고 있으며 이러한 장치가 선택되어 사용되고 있습니다. RAID 장치의 경우. 유일한 장치 매퍼 장치는 이 두 osprober장치이므로 가장 간단한 해결 방법은 RAID 장치를 중지하고 DM 장치를 중지한 다음 RAID 배열을 다시 검색하여 기본 구성 요소 장치를 사용하는 것입니다. DM 장치를 중지하려면 다음을 실행하세요.

dmsetup remove_all

처럼 root.

답변2

RAID 세트가 정상이므로 로그나 옵션 없이 읽기 전용으로 설치하면 안 된다는 가정 하에 추가하고 싶었습니다 mdadm. 그렇지 않은 경우시스템을 다시 시작하는 것이 좋습니다..

제 경우에는 사용 sudo mdadm --assemble --scan하고 설치했는데 읽기전용인 것을 확인했습니다. 문제를 해결하기 위해 여러 번 시도한 끝에 프로세스를 종료하고 다시 시작하기로 결정했습니다 mdadm. 재부팅 후 시스템에 로그인하면 갑자기 볼륨이 평소대로 마운트됩니다(읽기 및 쓰기).

관련 정보