私のプライベートサーバー(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を再生成することです。
問題が解決しました。