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を再生成することです。

問題が解決しました。

おすすめ記事