LVM 이미지 파일 시스템에서 시작

LVM 이미지 파일 시스템에서 시작

내 개인 서버(odroid-c1 마이크로 ARM 컴퓨터)는 USB 디스크의 LVM 파일 시스템에서 Archlinux를 실행합니다. 데이터(백업 등)가 포함된 논리 볼륨이 미러링되고 모든 것이 정상적으로 실행됩니다.

이제 다음 명령을 사용하여 루트 파일 시스템을 미러링합니다.

sudo lvconvert -m 1 VG01/NASSYS

명령이 정상적으로 처리되고 잠시 후 NASSSYS LV가 100% 미러링됩니다.

그러나 재부팅 후 미러링된 LVM 볼륨이 인식되지 않는 것처럼 시스템이 정지됩니다. 미러링되지 않은 NASSYS LV로 복원하면 다시 부팅이 잘 됩니다.

루트 파일 시스템을 단순히 미러링할 수는 없나요?

(아래는 내 이전 게시물의 사본입니다. 자세한 내용은 답변 없이 마감되었습니다.)


이전 기사
나는 Odroid-C1 컴퓨터(Raspberry Pi와 유사한 작은 컴퓨터 보드)에 ARM Archlinux를 실행하는 개인 파일 서버와 4개의 디스크가 포함된 Xystec PX2590 USB 상자를 설치했습니다. 그 중 2개는 단일 VG LVM2에 구성되어 있습니다. (VG01) 및 NASSYS, SDATA 및 GDATA를 포함하여 미러링되지 않은 여러 LV.

SDCard(Odroid-C1 부팅에 필요)에 있는 /boot 디렉터리 외에도 Archlinux 시스템이 NASSYS LV에 설치됩니다.

/boot/boot.ini 파일에 설명된 부팅 프로세스 구성을 사용하면 SDCard에서 커널을 로드한 후 루트 장치를 NASSYS LV로 변경할 수 있습니다(아래 setenv 문 참조).

/boot/boot.ini 파일에서 발췌

...
setenv bootargs "console=ttyS0,115200n8 console=tty0 rootwait root=/dev/mapper/VG01-NASSYS lvmwait=/dev/mapper/VG01-NASSYS rw no_console_suspend vdaccfg=0xa000 logo=osd1,loaded,0x7900000,720p,full dmfc=3 cvbsmode=576cvbs hdmimode=${m} m_bpp=${m_bpp} vout=${vout_mode} ${disableuhs} ${hdmi_hpd} ${hdmi_cec}"

ext4load mmc 0:1 0x21000000 /boot/uImage
ext4load mmc 0:1 0x30000000 /boot/uInitrd
ext4load mmc 0:1 0x21800000 /boot/dtbs/meson8b_odroidc.dtb
fdt addr 21800000

if test "${vpu}" = "0"; then fdt rm /mesonstream; fdt rm /vdec; fdt rm /ppmgr; fi

if test "${hdmioutput}" = "0"; then fdt rm /mesonfb; fi

bootm 0x21000000 0x30000000 0x21800000

이 구성은 괜찮습니다. 시스템이 부팅되고 완벽하게 실행됩니다.우편 엽서Odroid 포럼에서 이 설치에 대한 전체 이야기를 읽어보세요! ).

그런 다음 다음 명령을 사용하여 xDATA LV를 미러링하여 시스템을 보호할 계획입니다.

$ sudo lvconvert -m 1 VG01/SDATA
$ sudo lvconvert -m 1 VG01/GDATA

모든 명령이 올바르게 실행되었으며 미러 동기화 후 시스템을 다시 시작했는데 시스템이 정상적으로 실행되었습니다.

최근에 나는 동일한 명령을 사용하여 루트 파일 시스템을 포함하는 NASSYS LV를 미러링하기로 결정했습니다.

$ sudo lvconvert -m 1 VG01/NASSYS

이 명령은 또한 오류 없이 실행되었습니다. 미러링이 끝난 후 시스템을 다시 시작했지만 작동이 중단되어 컴퓨터를 종료해야 했습니다(여러 번 시도했습니다).

그런 다음 Minicom을 사용하여 직렬 콘솔을 사용하여 노트북의 부팅 프로세스를 보았지만 관련 오류를 볼 수 없었습니다. 부팅 프로세스가 중단되고 루트 파일 시스템을 기다리는 것 같습니다...그래서 NASSYS의 미러링이 어떻게든 이러한 인식을 깨뜨린 것 같습니다.

다음 명령을 사용하여 내 노트북에서 선형 LV로 NASSYS를 복원하여 이를 확인했습니다.

$ sudo lvconvert -m 0 VG01/NASSYS

Odroid-C1이 다시 정상적으로 시작됩니다.

시작이 실패할 경우 시작 프로세스의 마지막 줄은 다음과 같습니다.

...
[    6.549908@0]  sda: sda1
[    6.564824@0] sd 0:0:0:0: [sda] No Caching mode page found
[    6.567473@0] sd 0:0:0:0: [sda] Assuming drive cache: write through
[    6.576850@0] sd 0:0:0:0: [sda] Attached SCSI disk
[    7.189162@3] device-mapper: uevent: version 1.0.3
[    7.192823@3] device-mapper: ioctl: 4.24.0-ioctl (2013-01-15) initialised: [email protected]
[    7.228105@2] bio: create slab <bio-2> at 2
[    8.639100@0] emmc: mmc_rescan_try_freq: trying to init card at 300000 Hz
[    8.678075@0] aml_emmc_hw_reset 1379
<<< BOOT HANGED HERE >>>

성공 시 시작 프로세스와 동일한 부분

....
[    6.268597@3] sd 0:0:0:3: [sdd] No Caching mode page found
[    6.268602@3] sd 0:0:0:3: [sdd] Assuming drive cache: write through
[    6.268609@3] sd 0:0:0:3: [sdd] Attached SCSI disk
[    6.332835@2] sd 0:0:0:2: [sdc] No Caching mode page found
[    6.335515@2] sd 0:0:0:2: [sdc] Assuming drive cache: write through
[    6.341668@2] sd 0:0:0:2: [sdc] Attached SCSI disk
[    6.938489@1] device-mapper: uevent: version 1.0.3
[    6.941347@1] device-mapper: ioctl: 4.24.0-ioctl (2013-01-15) initialised: [email protected]
[    6.991678@0] bio: create slab <bio-2> at 2
[    7.504299@1] force enable DISCARD here for ext4 fs
[    7.514669@1] checked enable EXT4 DISCARD here
[    7.517501@1] EXT4-fs (dm-2): mounting with "discard" option, but the device does not support discard
[    7.525519@1] EXT4-fs (dm-2): mounted filesystem with ordered data mode. Opts: (null)
[    8.539137@0] emmc: mmc_rescan_try_freq: trying to init card at 300000 Hz
[    8.552060@3] systemd-journald[111]: Received SIGTERM from PID 1 (systemd).
[    8.578083@0] aml_emmc_hw_reset 1379
[    9.148086@1] Changing uart_ao_ttyS0: baud from 0 to 115200
[   10.227180@2] EXT4-fs (dm-2): re-mounted. Opts: data=ordered
[   10.284815@2] systemd-journald[245]: Failed to set file attributes: Inappropriate ioctl for device
[   11.498794@3] Driver for 1-wire Dallas network protocol.
[   12.149753@3] ionvideo open
[   12.152921@3] ionvideo_stop_generating!!!!
[   12.155830@3] ionvideo release
[   12.149860@3] amlvideo openamlvideo close[   13.336840@3] systemd-journald[245]: Received request to flush 1
[   13.402213@0] force enable DISCARD here for ext4 fs
[   13.411071@0] checked enable EXT4 DISCARD here
[   13.414142@0] EXT4-fs (mmcblk0p1): mounting with "discard" option, but the device does not support discard
<<< BOOT CONTINUES NORMALLY >>>
...

인터넷에서 많이 검색해도 LVM과 관련된 문제에 대한 정보를 찾을 수 없습니다. ARM에만 해당될 수 있나요?

아니면 아래 LVM 구성 파일에 누락된 내용이 있습니까?

config {
    checks = 1
    abort_on_errors = 0
    profile_dir = "/etc/lvm/profile"
}
devices {
    dir = "/dev"
    scan = [ "/dev" ]
    external_device_info_source = "none"
    obtain_device_list_from_udev = 1
    cache_dir = "/etc/lvm/cache"
    cache_file_prefix = ""
    write_cache_state = 1
    sysfs_scan = 1
    multipath_component_detection = 1
    md_component_detection = 1
    fw_raid_component_detection = 0
    md_chunk_alignment = 1
    data_alignment_detection = 1
    data_alignment = 0
    data_alignment_offset_detection = 1
    ignore_suspended_devices = 0
    ignore_lvm_mirrors = 1
    disable_after_error_count = 0
    require_restorefile_with_uuid = 1
    pv_min_size = 2048
    issue_discards = 0
}
allocation {
    maximise_cling = 1
    use_blkid_wiping = 1
    wipe_signatures_when_zeroing_new_lvs = 1
    mirror_logs_require_separate_pvs = 0
    cache_pool_metadata_require_separate_pvs = 0
    thin_pool_metadata_require_separate_pvs = 0
}
log {
    verbose = 0
    silent = 0
    syslog = 1
    overwrite = 0
    level = 0
    indent = 1
    command_names = 0
    prefix = "  "
    debug_classes = [ "memory", "devices", "activation", "allocation",
              "lvmetad", "metadata", "cache", "locking" ]
}
backup {
    backup = 1
    backup_dir = "/etc/lvm/backup"
    archive = 1
    archive_dir = "/etc/lvm/archive"
    retain_min = 10
    retain_days = 30
}
shell {
    history_size = 100
}
global {
    umask = 077
    test = 0
    units = "h"
    si_unit_consistency = 1
    suffix = 1
    activation = 1
    proc = "/proc"
    locking_type = 1
    wait_for_locks = 1
    fallback_to_clustered_locking = 1
    fallback_to_local_locking = 1
    locking_dir = "/run/lock/lvm"
    prioritise_write_locks = 1
    abort_on_internal_errors = 0
    detect_internal_vg_cache_corruption = 0
    metadata_read_only = 0
    mirror_segtype_default = "raid1"
    raid10_segtype_default = "raid10"
    sparse_segtype_default = "thin"
    use_lvmetad = 1
}
activation {
    checks = 0
    udev_sync = 1
    udev_rules = 1
    verify_udev_operations = 0
    retry_deactivation = 1
    missing_stripe_filler = "error"
    use_linear_target = 1
    reserved_stack = 64
    reserved_memory = 8192
    process_priority = -18
    raid_region_size = 512
    readahead = "auto"
    raid_fault_policy = "warn"
    mirror_log_fault_policy = "allocate"
    mirror_image_fault_policy = "remove"
    snapshot_autoextend_threshold = 100
    snapshot_autoextend_percent = 20
    thin_pool_autoextend_threshold = 100
    thin_pool_autoextend_percent = 20
    use_mlockall = 0
    monitoring = 1
    polling_interval = 15
    activation_mode = "degraded"
}
dmeventd {
    mirror_library = "libdevmapper-event-lvm2mirror.so"
    snapshot_library = "libdevmapper-event-lvm2snapshot.so"
    thin_library = "libdevmapper-event-lvm2thin.so"
}

당신의 도움을 주셔서 감사합니다.

답변1

나는 그것에 대해 스스로 대답한다. Odroid-C1용 Archlinux 커널에는 LVM 이미지에 액세스하는 데 필요한 dm_raid 모듈이 포함되어 있지 않습니다(현재 기본값은 raid1입니다).

해결책은 이를 /etc/mkinitcpio.conf 파일의 MODULES 변수에 포함시키고 uInitrd를 재생성하는 것입니다.

문제가 해결되었습니다.

답변2

이전 링크가 작동하지 않는 것 같아서 여기에 세부정보가 충분하지 않습니다. 부팅 프로세스의 어느 시점에서 멈추며, 멈추기 전 마지막 몇 개의 메시지는 무엇입니까? 별도의 /boot 파티션이 있나요?

답변3

/2020년에 시스템을 Ubuntu 18.04로 업그레이드하고 루트( ) 및 파티션 에 대해 RAID1을 설정하려고 할 때 비슷한 문제가 발생했습니다 /home. 단지 어쨌든 전혀 시작되지 않을 것입니다.

다음 명령은 이전과 동일한 작업을 수행하지 않습니다.

$ sudo lvconvert -m 1 VG01/NASSYS

과거에는 다음과 같은 값을 사용했습니다.

$ sudo lvconvert -m 1 --type mirror VG01/NASSYS

그러나 최신 시스템에서는 다음과 같이 수행됩니다.

$ sudo lvconvert -m 1 --type raid1 VG01/NASSYS

문제는 내 기존 시스템이 RAID1 파티션에서 부팅하기를 원하지 않는다는 것입니다. 파티션에서는 정상적으로 부팅됩니다 mirror.

따라서 모듈은 예상대로 설치되지만 어떤 이유로 LVM 파티션의 모드를 dm_raid인식하지 못합니다 . raid1내가 이해한 바에 따르면 이는 이전 버전이 설치되어 있고 해당 시스템의 LVM 설정이 약간 어긋나 있고 GRUB 로더가 어떻게든 실패하기 때문입니다. 드라이브가 제대로 작동하려면 청소를 시작하기 위해 드라이브의 모든 항목을 지워야 합니다(현재 테스트할 예비 드라이브가 없기 때문에 시도하지 않은 것 같습니다).

따라서 2020년 이후에 이러한 문제가 발생한다면 이전 버전이 설치되어 있기 때문일 수 있습니다. 드라이브를 지우고 다시 시작할 수 있다면 대체 방법을 건드리기보다는 그렇게 하는 것이 좋습니다(특히 "미러" 옵션이 더 이상 사용되지 않는 것으로 표시되어 있으므로).

관련 정보