리포지토리에서 업데이트
원격 리포지토리에서 서버 펌웨어 업데이트
개요
XCC에는 업데이트 번들(서비스 팩) 패키지를 사용하여 서버에서 펌웨어를 업데이트하는 프로세스가 도입되었습니다. 이 기능은 단일 API 또는 Redfish 클라이언트 도구를 사용하여 OOB 및 IB 펌웨어 패키지 등 시스템의 모든 펌웨어를 업데이트함으로써 프로세스를 간소화합니다. 이 프로세스의 예로는 적용 가능한 펌웨어 패키지 식별, 원격 HTTP/HTTPS 서버에서 다운로드 및 추출, 웹 브라우저를 통해 BMC 내부 스토리지에 업로드, CIFS 또는 NFS 공유 디렉토리에서 마운트가 있습니다.
CIFS 또는 NFS 마운트를 사용하는 경우 메타데이터에 지정된 펌웨어 페이로드와 함께 메타데이터 파일을 네트워크 공유 파일 시스템의 루트 디렉토리에 배치해야 합니다. 서버의 microSD 장치는 기록 리포지토리를 저장할 수 있으므로 사용자가 펌웨어 수준을 롤백할 수 있습니다.
펌웨어 패키지에 대역외 펌웨어 업데이트를 지원하지 않는 페이로드가 포함된 경우 BMC는 서버를 시작하고 업데이트를 수행하기 전에 BMC에 설치된 내장 OS 이미지에서 부팅하도록 서버를 구성합니다.
번들 및 메타데이터 업데이트
업데이트 번들(서비스 팩)은 펌웨어 번들이 압축된 파일입니다. 여기에는 시스템 구성 요소에 적합한 하나 이상의 펌웨어 패키지가 포함됩니다. 리포지토리에서 XCC의 업데이트 기능에서는 업데이트 번들 파일을 사용합니다. 압축을 푼 번들 파일에는 메타데이터와 페이로드 바이너리가 포함됩니다. JSON 메타데이터 파일은 번들 파일에 포함된 펌웨어 이미지 종류에 대한 정보를 XCC에 제공하고 페이로드 바이너리는 펌웨어 이미지를 제공합니다.
XCC 내부의 펌웨어 리포지토리
업데이트 번들에는 여러 펌웨어 패키지가 포함될 수 있으며 XCC(전자 장치)는 새로운 기능을 지원하기 위해 플래시에 2GB 공간을 예약합니다. 새 번들이 수신되면 XCC는 이전 데이터를 정리합니다. 일부 플랫폼은 MicroSD 카드를 사용하여 추가 스토리지를 제공하고 XCC는 마지막 업데이트된 번들을 SD 카드의 기록 리포지토리로 이동시킵니다. 펌웨어 기록 리포지토리에는 최대 3개의 번들을 저장할 수 있으며 사용자는 펌웨어 롤백 기능을 사용하여 이전 번들로 되돌릴 수 있습니다.
업데이트 번들에 시스템에서 사용할 수 있는 OOB 펌웨어 패키지만 포함된 경우 XCC는 시스템 전원 상태를 변경하지 않습니다. PCI 장치 펌웨어를 업데이트하려면 시스템 전원이 켜져 있어야 합니다.
업데이트 번들에 시스템에서 사용할 수 있는 IB 펌웨어 패키지가 포함된 경우 XCC는 업데이트 전에 시스템 전원 상태를 저장하고 업데이트 번들이 업데이트된 후 전원 상태를 복원합니다. 업데이트 프로세스 중에 XCC는 호스트를 내장 OS로 재부팅합니다.
업데이트 번들에 전제 조건 수준의 UEFI 펌웨어가 포함되어 있고 현재 설치된 UEFI 버전이 해당 수준을 충족하지 않거나 그보다 낮은 경우, XCC는 먼저 UEFI 펌웨어 업데이트를 수행하기 위해 시스템 전원을 끕니다.
업데이트 번들에 전제 조건 수준의 XCC 펌웨어가 포함되어 있고 현재 설치된 XCC 버전이 해당 수준을 충족하지 않거나 그보다 낮은 경우, XCC는 자체 업그레이드 후 먼저 재부팅합니다.
WebGUI로 업데이트
리포지토리에서 업데이트하면, 사용자는 서버 펌웨어를 원격 CIFS/NFS 펌웨어 리포지토리와 동기화하도록 XCC를 구성할 수 있습니다. 펌웨어 리포지토리에는 2진 및 메타데이터 파일 또는 업데이트 번들 메타데이터 JSON 및 해당 2진 파일을 비롯한 패키지가 포함되어야 합니다. XCC는 메타데이터 JSON 파일을 구문 분석하여 이 특정 시스템 하드웨어에 대한 OOB 업데이트를 지원하는 펌웨어 패키지를 선택한 다음 배치 업데이트를 시작합니다.
- 녹색 확인 표시
: 펌웨어 업그레이드가 완료된 상태입니다.
- 빨간색 X 표시
: 펌웨어 업그레이드에 실패한 상태입니다.
- 업데이트 중: 펌웨어 업그레이드를 진행 중인 상태입니다.
- 취소: 펌웨어 업그레이드가 취소된 상태입니다.
- 대기 중: 펌웨어 업그레이드 배포 대기 중입니다.
리포지토리에서 업데이트하려면 다음 단계를 완료하십시오.
- 원격 리포지토리 정보를 입력한 후 연결을 클릭하여 원격 리포지토리에 연결합니다.
- 업데이트를 클릭하여 배치 업데이트를 시작합니다.
- 세부 정보 보기를 클릭하여 업데이트 상태를 확인합니다. 위에서 언급한 5가지 상태가 있습니다.
- 업데이트 중지를 클릭하면 현재 설치 패키지 업데이트가 완료된 후 대기열에서 업그레이드가 취소됩니다.
- 연결 해제를 클릭하여 원격 리포지토리 연결을 해제합니다.
- 업데이트를 적용하기 위해 XClarity Controller를 다시 시작해야 하는 경우에는 경고 메시지가 표시됩니다. XClarity Controller를 다시 시작하는 방법에 대한 세부 정보는 전원 작업의 내용을 참조하십시오.
Redfish로 업데이트
Redfish 인터페이스에서는 사용자가 쉽게 읽고 스크립팅할 수 있도록 JSON 형식 페이로드가 사용됩니다. XCC Redfish는 HTTP/HTTPS/SFTP/TFTP를 통해 URI에서 업데이트 번들 파일을 검색하는 표준 API(SimpleUpdate)와 업데이트 번들 파일 UpdateService를 푸시하는 Multipart HTTP 푸시 업데이트를 제공합니다. 명령어 또는 단일 Redfish 클라이언트 도구를 사용하여 펌웨어 업데이트 및 쿼리 업데이트 상태를 실행할 수 있습니다.
번들 파일을 XCC로 푸시하고 파일 전송 및 확인 작업을 생성하는 샘플 명령어는 다음과 같습니다.
curl -s -k -u USERID:PASSW0RD-F 'UpdateParameters={"Targets":[]};type=application/json' -F 'UpdateFile=@./NY7D72-IB-320.zip;type=application/octet-stream' https://10.240.218.157:443/mfwupdate
{
"ld": "f2fd6e9d-cOa6-4b11-b9f6-69a17a1 ,
"Name": "Task f2fd6e9d-cOa6-4b11-b9f6-69a17a1 e579c",
"@odata.type": "#Task.v1_5_1. Task",
"@odata.id': "[redfish/v 1 fTaskServicefTasks/f2fd6e9d-c0a6-4b11-b9f6-69a 17a1 e579c",
"Messages": [l
"Description": "This resource represents a task for a Redfish implementation."
"StartTime": "2022-03-21 TOT 16:41 +00:00",
"TaskMonitor": "/redfish/v1fTaskSen.'ice/c069ed4a-e754-4970-ab9a-922e8a3e076b",
"@odata.context": "'redfish/v1/$metadata#Task.Task",
"@odata.etag":
"PercentCompIete": O,
"HidePayload": true,
"TaskState": "New"
}
펌웨어 업데이트 작업 ID를 통해 작업 API 응답을 생성하는 샘플 명령어는 전송 및 이미지 유효성 검사 후에 다음과 같이 완료됩니다.
<strong className="ph b">https://10.240.218.157/
redfish/v1/TaskService/Tasks/f2fd6e9d c0a6 4b11 b9f6 69a17a1e579c</strong>
{
"@odata.etag": ,
"Name-: "Task f2fd6e9d-cOa6-4b11-b9f6-69a17a1e579c",
Task",
"IredfishNI/TaskSemcenasksff2fd6e9d-cOa6-4bI I-b9f6-69aI 7a1e579c",
"Messages": [
{
"Resolution": "Follow the referenced job and monitor the job for further updates.",
"@odata.type":
'MessageSeverity": "0K",
"MessageArgs": [
"IredfishtvI/JobService/J0bs/J0bROOOOOI-lJPdate"
],
"Messageld": "Update. 1 .O.OperationTransitionedToJob",
"Message": "The update operation has transitioned to the job at URI 'Iredfsh/vl IJobService/Jobs/JobR000001-Update'."
}
],
"Description": "This resource represents a task for a Redfish implementation.",
"HidePayIoad": true,
"StartTime":
"TaskMonitor: "'redfish1v1/TaskseNice/c069ed4a-e754-4970-ab9a-922e8a3e076b",
"TaskStatus": "0K",
"@odata.context-: "'redfish/v1/$metadata#Task.Task",
"ld": "f2fd6e9d-cOa6-4b11-b9f6-6ga17a 1 e579c",
"Percentcomplete": 100,
"EndTime": 2022-03-21
"TaskState": "Completed"
}
작업 ID를 쿼리하면 XCC는 아래와 같이 업데이트 번들의 모든 펌웨어 패키지에 대한 작업 단계를 반환합니다.
https://10.240.218.157/redfish/v1/JobService/Jobs/JobR000001-Update
{
"@odata.etag": "\"1647847200776\"", "PercentComplete": 100, "@odata.type": "#Job.v1_0_7.Job",
"@odata.id": "/redfish/v1/JobService/Jobs/JobR000001-Update", "Messages": [
{
"Resolution": "None.",
"@odata.type": "#Message.v1_1_2.Message", "MessageSeverity": "OK",
"MessageArgs": [ "NY7D72-IB-320.zip",
"HardDiskDrive"
],
"MessageId": "Update.1.0.UpdateSuccessful ",
"Message": " Device 'HardDiskDrive' successfully updated with image 'NY7D72-IB-320.zip'."
},
{
"Resolution": "None.",
"@odata.type": "#Message.v1_1_2.Message", "MessageSeverity": "OK",
"MessageArgs": [ "NY7D72-IB-320.zip",
"/redfish/v1/UpdateService/FirmwareInventory/UEFI"
],
"MessageId": "Update.1.0.UpdateSuccessful",
"Message": "Device '/redfish/v1/UpdateService/FirmwareInventory/UEFI' successfully updated with image 'NY7D72-IB-320.zip'. "
},
{
"Resolution": "None.",
"@odata.type": "#Message.v1_1_2.Message", "MessageSeverity": "Critical",
"MessageArgs": [ "NY7D72-IB-320.zip",
"/redfish/v1/UpdateService/FirmwareInventory/BMC-Primary"
],
"MessageId": "Update.1.0.ApplyFailed",
"Message": "Installation of image 'NY7D72-IB-320.zip' to '/redfish/v1/UpdateService/FirmwareInventory/BMC-Primary' failed."
}
],
"Description": "This resource is used to represent a job for a Redfish implementation.",
"StartTime": "2022-03-21T07:16:58+00:00",
"Id": "JobR000001-Update",
"EndTime": "2022-03-21T07:20:00+00:00",
"@odata.context": "/redfish/v1/$metadata#Job.Job", "Steps": {
"@odata.id": "/redfish/v1/JobService/Jobs/JobR000001-Update/Steps"
},
"Name": "JobR000001-Update", "StepOrder": [
"lnvgy_fw_drives_all.samsung.pm1735.cq-cq37_anyos_comp.lvt", "lnvgy_fw_uefi_ese103a-1.00_anyos_comp.uxz", "lnvgy_fw_xcc_esx301p-0.01_anyos_comp.uxz"
],
"JobState": "Completed"
작업 단계가 쿼리되면 XCC는 개별 펌웨어 업데이트에 다음의 추가 정보를 반환합니다.
https://10.240.218.157/redfish/v1/JobService/Jobs/JobR000001- Update/Steps/lnvgy_fw_drives_all.samsung.pm1735.cq-cq37_anyos_comp.lvt
{
"@odata.etag": "\"1647847202778\"", "PercentComplete": 1, "@odata.type": "#Job.v1_0_7.Job",
"@odata.id": "/redfish/v1/JobService/Jobs/JobR000001-Update/Steps/lnvgy_fw_drives_all.samsung.pm1735.cq- cq37_anyos_comp.lvt",
"Messages": [],
"Description": "This resource is used to represent a job for a Redfish implementation.", "StartTime": "2022-03-21T07:16:58+00:00",
"@odata.context": "/redfish/v1/$metadata#Job.Job",
"Id": "lnvgy_fw_drives_all.samsung.pm1735.cq-cq37_anyos_comp.lvt", "Name": "lnvgy_fw_drives_all.samsung.pm1735.cq-cq37_anyos_comp.lvt", "EndTime": "2022-03-21T07:20:02+00:00",
"JobState": "Completed"
원격 리포지토리에서 다운로드를 수행하고 다음과 같이 업데이트됩니다.
system> syncrep
syncrep [options] Launch firmware sync from remote repository options:
-t protocol to connect repository. The local type will reboot host immediately. (eg: syncrep -t samba -l url -u user -p password; syncrep -t local -l /bulk/bundle.tgz;
syncrep -t http -l http://IP/bundle.tgz)
-l location of remote repository (URL format)
-u User
-p Password
-o option (extra option string for samba and nfs mounts)
-d domain (domain for samba mount)
-q query current update status
-c cancel the sync process
-r <> firmware rollback
-gl get repository list