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年以降にこの問題が発生した場合は、以前のバージョンがインストールされている可能性があります。ドライブを消去して再起動できる場合は、代替方法に触れるのではなく、そうすることをお勧めします(特に「ミラー」オプションは廃止とマークされているため)。

関連情報