Родился в крестьянской семье. Окончил земскую школу, служил рассыльным при земском начальнике, учеником писаря, затем помощником писаря в волостном правлении, письмоводителем при земском начальнике, занимался самообразованием. Осенью 1903 поступил вольноопределяющимся в дислоцировавшийся в Пскове Иркутский пехотный полк.
Окончил Санкт-Петербургское пехотное юнкерское училище (1906), Императорскую Николаевскую Академию Генерального штаба (1913) — по 1-му разряду. В 1909—1910 служил в 3-м Финляндском стрелковом полку, куда был выпущен подпоручиком. Поручик (1909). Штабс-капитан (1913). С 1914 г. — командир роты в 170-м Молодеченском пехотном полку (где проходил строевой ценз).
Войну начал в составе 170-го Молодеченского пехотного полка. С 1914 г. служил в штабе 29-й пехотной дивизии 2-го армейского корпуса, затем возглавлял отделение разведки и фотограмметрии в штабе 1-й армии. В 1915 г. произведён в капитаны. Участвовал в сражениях в Восточной Пруссии, Польше, в боях у Гродно и Сейны (1915), в ликвидации прорыва немецких войск у Молодечно и в ряде других сражений. С 11 ноября 1915 г. служил помощником старшего адъютанта отделения генерал-квартирмейстера штаба 1-й армии. С 1916 служил в штабе 1-го Сибирского корпуса. Участвовал в полётах на аэроплане «Фарман» с целью разведки и фотографирования позиций противника.
В 1917 — подполковник, был командирован в Ставку Верховного главнокомандования «для составления наставления по разведке». За боевые заслуги был награждён орденом Святого Георгия 4-й степени (1916), Георгиевским оружием (1917), мечами к ранее полученному ордену св. Станислава III степени, орденом св. Станислава II степени с мечами, орденом св. Анны IV степени с надписью «За храбрость», орденами св. Анны III и II степеней с мечами, орденом св. Владимира IV степени с мечами и бантом.
В марте 1918 г. по распоряжению Троцкого вместе со штабом армии эвакуировался в Самару для организации новых частей Поволжского военного округа, в апреле — июне 1918 служил в штабе Поволжского военного округа Красной армии. Примкнул к антибольшевистскому выступлению в Самаре 8 июня 1918 и поступил на службу в Народную армию КОМУЧа. С 9 июня 1918 — начальник оперативного отдела Военного штаба Народной армии Комитета членов Учредительного собрания (с 29 июля 1918 — Главного управления Генерального штаба Военного ведомства Комуча). Командир 3-го Самарского стрелкового полка, генерал-квартирмейстер штаба самарской группы войск. Полковник (декабрь 1918 г.).
В армии Верховного правителя А. В. Колчака — начальник штаба 6-го Уральского армейского корпуса (3 января — 26 мая 1919), помощник начальника снабжения Западной армии, начальник 4-й Уфимской стрелковой дивизии (с 18 сентября 1919 по 23 марта 1920). Участник Великого Сибирского ледяного похода. 14 декабря 1919 назначен командующим 3-й армией (вместо тяжело больного генерала В. О. Каппеля). Формально являлся им до 23 января 1920, однако из-за отсутствия связи с армией вступить в должность реально не смог и продолжал командовать 4-й дивизией до прихода в Читу. Генерал-майор (декабрь 1919 г.).
С марта 1920 — начальник снабжения Дальневосточной армии, начальник русской военной миссии на станции Маньчжурия.
После поражения под Читой 10 ноября 1920 эмигрировал в Китай. В мае — июне 1921 — начальник штаба Белоповстанческой армии, участвовал в Хабаровском походе под командованием генерала В. М. Молчанова. С 10 августа 1922 — начальник штаба Приамурской Земской рати (так назывались вооружённые силы генерала М. К. Дитерихса в Приморье). Принимал участие в Хабаровском походе. Покинул Приморье у села Новокиевки 1 ноября 1922, эвакуировавшись с армией в Хунчун.
Жил в Дайрене, Харбине, с 1923 — в Мукдене. Был начальником станции на КВЖД, работал в иностранной фирме. Являлся начальником канцелярии Дальневосточного отдела Русского общевоинского союза (РОВС) в Мукдене. С 1930 жил в Шанхае, куда переехал по приглашению генерала Дитерихса.
В 1933 был командирован генералом Дитерихсом в Японию для того, чтобы добиться возвращения части золотого запаса (на сумму 1 млн 270 тысяч золотых рублей), который был в конце 1920 сдан генералом Петровым под расписку японской военной миссии, так как белые не решались везти золото во время переброски войск через Китай в Приморье. Инициировал судебный процесс, который затянулся и не привёл к каким-либо результатам. Исполнял обязанности начальника отдела РОВС в Японии. Во время Второй мировой войны генерал был вынужден согласиться с предложением японских властей прекратить дело в обмен на оплату ими судебных издержек. Являлся председателем общества русских эмигрантов в Японии (1937 г.) и заведующим русской школой при православном соборе в Токио. С 1947 жил в Сан-Франциско (США), преподаватель русского языка в армейской школе в Монтерее (1948—1955), председатель Общества ветеранов Великой войны (1953—1962). С 1955 жил в Беркли, затем в Санта-Кларе.
Похоронен на Сербском кладбище города Колма близ Сан-Франциско.
Жена — Ольга Петровна, урождённая Степанова, во время Первой мировой войны и Гражданской войны была сестрой милосердия, участница Великого Сибирского Ледяного похода. В эмиграции занималась литературной деятельностью и благотворительностью, организовывала кампании помощи детям эмигрантов.
Сыновья: